From 7ac769dabaaf797b2122c9b4eeb27d13cfba7ace Mon Sep 17 00:00:00 2001 From: PaulGG-Code Date: Sun, 8 May 2022 15:24:14 +0200 Subject: [PATCH] init --- .env.example | 1 + .eslintrc.json | 44 + .gitignore | 40 + .vercelignore | 4 + .vscode/settings.json | 14 + README.md | 53 + animations/index.tsx | 3 + animations/sideAnimationRight/index.tsx | 13 + components/Background/index.tsx | 13 + components/ContractCard/index.tsx | 81 + components/CustomLink/index.tsx | 27 + components/Footer/index.tsx | 20 + components/Logo/index.tsx | 16 + components/Navbar/NavItem/index.tsx | 39 + components/Navbar/index.tsx | 25 + components/TransactionCard/index.tsx | 28 + components/Wallet/index.tsx | 105 + config/index.ts | 7 + content/ToolsSection/index.tsx | 36 + hardhat/.env.example | 3 + hardhat/.eslintignore | 4 + hardhat/.eslintrc.js | 24 + hardhat/.gitignore | 8 + hardhat/.npmignore | 3 + hardhat/.prettierignore | 5 + hardhat/.prettierrc | 1 + hardhat/.solhint.json | 7 + hardhat/.solhintignore | 1 + hardhat/README.md | 46 + .../e2d3106846a5e5b3170e0e4487fc1766.json | 9331 ++++++++ .../contracts/Bank.sol/Bank.dbg.json | 4 + .../artifacts/contracts/Bank.sol/Bank.json | 206 + hardhat/contracts/Bank.sol | 57 + hardhat/hardhat.config.ts | 43 + hardhat/package.json | 44 + hardhat/scripts/deploy.ts | 30 + hardhat/test/index.ts | 19 + hardhat/tsconfig.json | 13 + hardhat/typechain/Bank.d.ts | 364 + hardhat/typechain/common.d.ts | 35 + hardhat/typechain/factories/Bank__factory.ts | 245 + hardhat/typechain/hardhat.d.ts | 42 + hardhat/typechain/index.ts | 6 + hooks/useAuth/index.tsx | 14 + hooks/useBank/index.tsx | 138 + hooks/useContract/index.tsx | 31 + layouts/PageLayout/index.tsx | 59 + next-env.d.ts | 5 + next.config.js | 6 + package-lock.json | 17601 ++++++++++++++++ package.json | 53 + pages/_app.tsx | 49 + pages/_document.tsx | 28 + pages/index.tsx | 124 + postcss.config.js | 6 + public/assets/LandingPage.png | Bin 0 -> 213371 bytes public/favicon.ico | Bin 0 -> 25931 bytes public/images/CadenaLogo.png | Bin 0 -> 5797 bytes public/images/EthLogo.png | Bin 0 -> 2553 bytes public/images/PerspectiveGrid.svg | 38 + public/images/TheGraphLogo.png | Bin 0 -> 2062 bytes public/vercel.svg | 4 + queries/index.ts | 12 + styles/globals.css | 22 + tailwind.config.js | 28 + tsconfig.json | 21 + utils/constants.ts | 25 + utils/middleStringTruncate/index.ts | 5 + 68 files changed, 29379 insertions(+) create mode 100644 .env.example create mode 100644 .eslintrc.json create mode 100644 .gitignore create mode 100644 .vercelignore create mode 100644 .vscode/settings.json create mode 100644 README.md create mode 100644 animations/index.tsx create mode 100644 animations/sideAnimationRight/index.tsx create mode 100644 components/Background/index.tsx create mode 100644 components/ContractCard/index.tsx create mode 100644 components/CustomLink/index.tsx create mode 100644 components/Footer/index.tsx create mode 100644 components/Logo/index.tsx create mode 100644 components/Navbar/NavItem/index.tsx create mode 100644 components/Navbar/index.tsx create mode 100644 components/TransactionCard/index.tsx create mode 100644 components/Wallet/index.tsx create mode 100644 config/index.ts create mode 100644 content/ToolsSection/index.tsx create mode 100644 hardhat/.env.example create mode 100644 hardhat/.eslintignore create mode 100644 hardhat/.eslintrc.js create mode 100644 hardhat/.gitignore create mode 100644 hardhat/.npmignore create mode 100644 hardhat/.prettierignore create mode 100644 hardhat/.prettierrc create mode 100644 hardhat/.solhint.json create mode 100644 hardhat/.solhintignore create mode 100644 hardhat/README.md create mode 100644 hardhat/artifacts/build-info/e2d3106846a5e5b3170e0e4487fc1766.json create mode 100644 hardhat/artifacts/contracts/Bank.sol/Bank.dbg.json create mode 100644 hardhat/artifacts/contracts/Bank.sol/Bank.json create mode 100644 hardhat/contracts/Bank.sol create mode 100644 hardhat/hardhat.config.ts create mode 100644 hardhat/package.json create mode 100644 hardhat/scripts/deploy.ts create mode 100644 hardhat/test/index.ts create mode 100644 hardhat/tsconfig.json create mode 100644 hardhat/typechain/Bank.d.ts create mode 100644 hardhat/typechain/common.d.ts create mode 100644 hardhat/typechain/factories/Bank__factory.ts create mode 100644 hardhat/typechain/hardhat.d.ts create mode 100644 hardhat/typechain/index.ts create mode 100644 hooks/useAuth/index.tsx create mode 100644 hooks/useBank/index.tsx create mode 100644 hooks/useContract/index.tsx create mode 100644 layouts/PageLayout/index.tsx create mode 100644 next-env.d.ts create mode 100644 next.config.js create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 pages/_app.tsx create mode 100644 pages/_document.tsx create mode 100644 pages/index.tsx create mode 100644 postcss.config.js create mode 100644 public/assets/LandingPage.png create mode 100644 public/favicon.ico create mode 100644 public/images/CadenaLogo.png create mode 100644 public/images/EthLogo.png create mode 100644 public/images/PerspectiveGrid.svg create mode 100644 public/images/TheGraphLogo.png create mode 100644 public/vercel.svg create mode 100644 queries/index.ts create mode 100644 styles/globals.css create mode 100644 tailwind.config.js create mode 100644 tsconfig.json create mode 100644 utils/constants.ts create mode 100644 utils/middleStringTruncate/index.ts diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..f7580a7 --- /dev/null +++ b/.env.example @@ -0,0 +1 @@ +NEXT_PUBLIC_BANK_ADDRESS= diff --git a/.eslintrc.json b/.eslintrc.json new file mode 100644 index 0000000..3a47afe --- /dev/null +++ b/.eslintrc.json @@ -0,0 +1,44 @@ +{ + "env": { + "browser": true, + "es2021": true, + "node": true + }, + "extends": [ + "plugin:react/recommended", + "standard", + "eslint:recommended", + "plugin:@typescript-eslint/recommended" + ], + "parser": "@typescript-eslint/parser", + "parserOptions": { + "ecmaFeatures": { + "jsx": true + }, + "ecmaVersion": "latest", + "sourceType": "module" + }, + "plugins": [ + "react", + "@typescript-eslint" + ], + "rules": { + "semi": "off", + "@typescript-eslint/semi": ["error", "never"], + "indent": "off", + "@typescript-eslint/indent": ["error", 2], + "quotes": "off", + "@typescript-eslint/quotes": ["error", "double"], + "react/react-in-jsx-scope": "off", + "@typescript-eslint/no-explicit-any": ["off"], + "import/order": [ + "error", + { + "groups": ["builtin", "external", "parent", "sibling", "index"], + "alphabetize": { + "order": "asc" + } + } + ] + } +} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..6616180 --- /dev/null +++ b/.gitignore @@ -0,0 +1,40 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +/node_modules +/.pnp +.pnp.js + +# testing +/coverage + +# next.js +/.next/ +/out/ + +# production +/build + +# misc +.DS_Store +*.pem + +# debug +npm-debug.log* +yarn-debug.log* +yarn-error.log* +.pnpm-debug.log* + +# local env files +.env*.local +.env +.env.development +.env.production + +# vercel +.vercel + +# typescript +*.tsbuildinfo + +.package-lock.json diff --git a/.vercelignore b/.vercelignore new file mode 100644 index 0000000..e9f10ab --- /dev/null +++ b/.vercelignore @@ -0,0 +1,4 @@ +hardhat/* +!hardhat/typechain +!hardhat/artifacts +defi-bank-graph \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..7abb1a6 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,14 @@ +{ + "editor.codeActionsOnSave": { + "source.fixAll.eslint": true, + "source.fixAll": true + }, + "eslint.validate": [ + "javascript", + "javascriptreact", + "typescript", + "typescriptreact", + ], + "editor.tabSize": 2, + "editor.detectIndentation": false +} \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..e30d68f --- /dev/null +++ b/README.md @@ -0,0 +1,53 @@ +

Welcome to DefiBank 👋

+

+ Version + + Twitter: albertocruzdev + +

+ +> Defi Bank is a dapp created for ethereum 101 course of cadena.dev + + + DefiBank: Landing + + +### ✨ [Demo](https://defibank.vercel.app/) + +## Install + +```sh +npm install +``` + +## Usage + +```sh +npm run dev +``` + +## Tech +- NextJS +- React +- TypeScript +- TailwindCSS +- GraphQL +- The Graph +- Solidity +- Hardhat + +## Author + +👤 **Alberto Cruz Luis** + +* Website: https://www.albertocruzluis.com/ +* Twitter: [@https:\/\/twitter.com\/albertocruzdev](https://twitter.com/https:\/\/twitter.com\/albertocruzdev) +* Github: [@https:\/\/github.com\/AlbertoCruzLuis](https://github.com/https:\/\/github.com\/AlbertoCruzLuis) +* LinkedIn: [@https:\/\/www.linkedin.com\/in\/albertocruzluis\/](https://linkedin.com/in/https:\/\/www.linkedin.com\/in\/albertocruzluis\/) + +## Show your support + +Give a ⭐️ if this project helped you! + +*** +_This README was generated with ❤️ by [readme-md-generator](https://github.com/kefranabg/readme-md-generator)_ \ No newline at end of file diff --git a/animations/index.tsx b/animations/index.tsx new file mode 100644 index 0000000..9f5e0a4 --- /dev/null +++ b/animations/index.tsx @@ -0,0 +1,3 @@ +import { sideAnimationRightVariants } from "animations/sideAnimationRight" + +export { sideAnimationRightVariants } diff --git a/animations/sideAnimationRight/index.tsx b/animations/sideAnimationRight/index.tsx new file mode 100644 index 0000000..ebd218d --- /dev/null +++ b/animations/sideAnimationRight/index.tsx @@ -0,0 +1,13 @@ +export const sideAnimationRightVariants = { + hidden: { + x: "-100vw" + }, + visible: { + x: "100vw", + transition: { + ease: "linear", + duration: 25, + repeat: Infinity + } + } +} diff --git a/components/Background/index.tsx b/components/Background/index.tsx new file mode 100644 index 0000000..8bdda55 --- /dev/null +++ b/components/Background/index.tsx @@ -0,0 +1,13 @@ +import { FC, ReactNode } from "react" + +type BackgroundProps = { + children: ReactNode +} + +export const Background: FC = ({ children }) => { + return ( +
+ {children} +
+ ) +} diff --git a/components/ContractCard/index.tsx b/components/ContractCard/index.tsx new file mode 100644 index 0000000..77cc160 --- /dev/null +++ b/components/ContractCard/index.tsx @@ -0,0 +1,81 @@ +import { BANK_ADDRESS } from "config" +import { forwardRef, useState } from "react" +import CopyToClipboard from "react-copy-to-clipboard" +import toast from "react-hot-toast" +import { AiOutlineLoading3Quarters } from "react-icons/ai" +import { FiMinusSquare, FiPlusSquare } from "react-icons/fi" +import { UseMutationResult } from "react-query" + +interface IContractCardProps { + totalValueLocked: string | undefined, + totalBalance: string | undefined, + depositMutation: UseMutationResult, + withdrawMutation: UseMutationResult, + ref: any, +} + +export const ContractCard = forwardRef(({ totalValueLocked, totalBalance, depositMutation, withdrawMutation }, ref) => { + const [depositAmount, setDepositAmount] = useState(0) + const [withdrawAmount, setWithdrawAmount] = useState(0) + + const handleDeposit = (event: any) => { + setDepositAmount(event.target.value) + } + + const handleWithdraw = (event: any) => { + setWithdrawAmount(event.target.value) + } + + return ( +
+
+ toast.success("bank contract copied")}> + + + TVL {totalValueLocked} ETH +
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ ) +}) + +ContractCard.displayName = "ContractCard" diff --git a/components/CustomLink/index.tsx b/components/CustomLink/index.tsx new file mode 100644 index 0000000..c430f12 --- /dev/null +++ b/components/CustomLink/index.tsx @@ -0,0 +1,27 @@ +import Link from "next/link" +import { FC } from "react" + +interface ICustomLinkProps { + href: string, + className?: string, + rest?: any +} + +export const CustomLink: FC = ({ href, ...rest }) => { + const isInternalLink = href && href.startsWith("/") + const isAnchorLink = href && href.startsWith("#") + + if (isInternalLink) { + return ( + + + + ) + } + + if (isAnchorLink) { + return + } + + return +} diff --git a/components/Footer/index.tsx b/components/Footer/index.tsx new file mode 100644 index 0000000..3ed29b9 --- /dev/null +++ b/components/Footer/index.tsx @@ -0,0 +1,20 @@ + +import { BsTwitter, BsGithub } from "react-icons/bs" +import { CustomLink } from "../CustomLink" + +export const Footer = () => { + return ( +
+
+
+ + + + + + +
+
+
+ ) +} diff --git a/components/Logo/index.tsx b/components/Logo/index.tsx new file mode 100644 index 0000000..cd9b16b --- /dev/null +++ b/components/Logo/index.tsx @@ -0,0 +1,16 @@ +import { FC } from "react" + +type LogoProps = { + size?: string +} + +export const Logo: FC = ({ size = "text-lg" }) => { + return ( +
+ DEFI +
+ BANK +
+
+ ) +} diff --git a/components/Navbar/NavItem/index.tsx b/components/Navbar/NavItem/index.tsx new file mode 100644 index 0000000..57a34ca --- /dev/null +++ b/components/Navbar/NavItem/index.tsx @@ -0,0 +1,39 @@ +import { CustomLink } from "components/CustomLink" +import { useAuth } from "hooks/useAuth" +import { FC } from "react" +import toast from "react-hot-toast" + +type NavItemProps = { + name: string, + url: string, + isActive: boolean, + isPrivate: boolean, + activeStyle?: string, + disableStyle?: string +} + +export const NavItem: FC = ({ name, url, isActive, isPrivate, activeStyle = "border-b-2", disableStyle = "" }) => { + const divStyle = isActive ? `${activeStyle} border-solid border-white` : `${disableStyle}` + const linkStyle = isActive ? "text-white" : "text-gray-400" + + const { auth } = useAuth(isPrivate) + + const handleAuth = () => { + toast.error("Log In with your metamask for access to this page") + } + + return ( +
+ { auth && + + {name} + + } + { !auth && + + } +
+ ) +} diff --git a/components/Navbar/index.tsx b/components/Navbar/index.tsx new file mode 100644 index 0000000..7d64109 --- /dev/null +++ b/components/Navbar/index.tsx @@ -0,0 +1,25 @@ +import { useRouter } from "next/router" +import { FC } from "react" +import { v4 as uuidv4 } from "uuid" +import { NavItem } from "./NavItem" + +type NavbarProps = { + routes: Array<{ name: string, url: string, isPrivate: boolean }>, + containerStyle?: string +} + +export const Navbar: FC = ({ routes, containerStyle = "flex gap-6", ...rest }) => { + const router = useRouter() + + const isActiveRoute = (route: string) => { + return router.asPath === route + } + + return ( +
+ {routes && routes.map(({ name, url, isPrivate }) => ( + + ))} +
+ ) +} diff --git a/components/TransactionCard/index.tsx b/components/TransactionCard/index.tsx new file mode 100644 index 0000000..5e9db12 --- /dev/null +++ b/components/TransactionCard/index.tsx @@ -0,0 +1,28 @@ +import { FC } from "react" +import { BsArrowUpRightCircle, BsArrowDownRightCircle } from "react-icons/bs" + +interface ITransactionCardProps { + address: string, + amount: string, + operationType: number +} + +enum OperationType { + DEPOSIT, + WITHDRAW +} + +export const TransactionCard: FC = ({ address, amount, operationType }) => { + return ( +
+
+ {address} + {amount} ETH +
+
+ { operationType === OperationType.DEPOSIT && } + { operationType === OperationType.WITHDRAW && } +
+
+ ) +} diff --git a/components/Wallet/index.tsx b/components/Wallet/index.tsx new file mode 100644 index 0000000..80d621d --- /dev/null +++ b/components/Wallet/index.tsx @@ -0,0 +1,105 @@ +import { useWeb3, useSwitchNetwork } from "@3rdweb/hooks" +import { CustomLink } from "components/CustomLink" +import { CHAIN_ID } from "config" +import { ethers } from "ethers" +import { useEffect, useState } from "react" +import { CopyToClipboard } from "react-copy-to-clipboard" +import toast from "react-hot-toast" +import { BiWallet, BiWifiOff } from "react-icons/bi" +import Popup from "reactjs-popup" +import { addNetowrkMetadata } from "utils/constants" +import { middleStringTruncate } from "utils/middleStringTruncate" + +const HOW_ADD_CUSTOM_RPC_LINK = "https://metamask.zendesk.com/hc/en-us/articles/360043227612-How-to-add-a-custom-network-RPC" + +export const Wallet = () => { + const { connectWallet, address, error, getNetworkMetadata } = useWeb3() + const { switchNetwork, switchError } = useSwitchNetwork() + const [openNetworkModal, setOpenNetworkModal] = useState(false) + + const addNetwork = async (_chainId: number) => { + const _provider = new ethers.providers.Web3Provider((window as any)?.ethereum) + try { + if (!_provider) throw new Error("Error") + await _provider.send("wallet_addEthereumChain", [{ + chainId: addNetowrkMetadata[_chainId].chainId, + rpcUrls: addNetowrkMetadata[_chainId].rpcUrls, + chainName: addNetowrkMetadata[_chainId].chainName, + nativeCurrency: { + name: addNetowrkMetadata[_chainId].nativeCurrency.name, + symbol: addNetowrkMetadata[_chainId].nativeCurrency.symbol, + decimals: addNetowrkMetadata[_chainId].nativeCurrency.decimals + }, + blockExplorerUrls: addNetowrkMetadata[_chainId].blockExplorerUrls + }]) + } catch (error) { + console.log(error) + } + } + + useEffect(() => { + if (error) { + setOpenNetworkModal(true) + } + }, [error]) + + if (error) { + return ( + Network Error} + modal + overlayStyle={{ backgroundColor: "rgba(0,0,0,0.5)" }} + > +
+
+
+ +
+ Network: {getNetworkMetadata(CHAIN_ID)?.chainName} +
+ Please ensure your wallet is connected to the following network and try again. + For more information: + + How to add a custom network to MetaMask + + { switchError && + + } + { !switchError && + + } +
+
+ ) + } + + if (!address) { + return ( + + ) + } + + return ( + toast.success("wallet copied")}> + + + ) +} diff --git a/config/index.ts b/config/index.ts new file mode 100644 index 0000000..b4c1d17 --- /dev/null +++ b/config/index.ts @@ -0,0 +1,7 @@ +export const RINKEBY_CHAIN_ID = 4 +export const MUMBAI_CHAIN_ID = 80001 +export const LOCALHOST_CHAIN_ID = 1337 +export const BANK_ADDRESS = process.env.NEXT_PUBLIC_BANK_ADDRESS +export const DEFI_BANK_GRAPH_URL = "https://api.thegraph.com/subgraphs/name/albertocruzluis/defi-bank-graph" + +export const CHAIN_ID = parseInt(process.env.NEXT_PUBLIC_CHAIN_ID as string) || RINKEBY_CHAIN_ID diff --git a/content/ToolsSection/index.tsx b/content/ToolsSection/index.tsx new file mode 100644 index 0000000..702ec30 --- /dev/null +++ b/content/ToolsSection/index.tsx @@ -0,0 +1,36 @@ +import { CustomLink } from "components/CustomLink" +import Image from "next/image" + +export const ToolsSection = () => { + return ( +
+ +
+ tools +
+
+ +
+ tools +
+
+ +
+ tools +
+
+
+ ) +} diff --git a/hardhat/.env.example b/hardhat/.env.example new file mode 100644 index 0000000..861d3b1 --- /dev/null +++ b/hardhat/.env.example @@ -0,0 +1,3 @@ +ETHERSCAN_API_KEY=ABC123ABC123ABC123ABC123ABC123ABC1 +ROPSTEN_URL=https://eth-ropsten.alchemyapi.io/v2/ +PRIVATE_KEY=0xabc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc1 diff --git a/hardhat/.eslintignore b/hardhat/.eslintignore new file mode 100644 index 0000000..85f5562 --- /dev/null +++ b/hardhat/.eslintignore @@ -0,0 +1,4 @@ +node_modules +artifacts +cache +coverage diff --git a/hardhat/.eslintrc.js b/hardhat/.eslintrc.js new file mode 100644 index 0000000..98ce193 --- /dev/null +++ b/hardhat/.eslintrc.js @@ -0,0 +1,24 @@ +module.exports = { + env: { + browser: false, + es2021: true, + mocha: true, + node: true, + }, + plugins: ["@typescript-eslint"], + extends: [ + "standard", + "plugin:prettier/recommended", + "plugin:node/recommended", + ], + parser: "@typescript-eslint/parser", + parserOptions: { + ecmaVersion: 12, + }, + rules: { + "node/no-unsupported-features/es-syntax": [ + "error", + { ignores: ["modules"] }, + ], + }, +}; diff --git a/hardhat/.gitignore b/hardhat/.gitignore new file mode 100644 index 0000000..5485a72 --- /dev/null +++ b/hardhat/.gitignore @@ -0,0 +1,8 @@ +node_modules +.env +coverage +coverage.json +package-lock.json + +#Hardhat files +cache diff --git a/hardhat/.npmignore b/hardhat/.npmignore new file mode 100644 index 0000000..dc03781 --- /dev/null +++ b/hardhat/.npmignore @@ -0,0 +1,3 @@ +hardhat.config.ts +scripts +test diff --git a/hardhat/.prettierignore b/hardhat/.prettierignore new file mode 100644 index 0000000..f268596 --- /dev/null +++ b/hardhat/.prettierignore @@ -0,0 +1,5 @@ +node_modules +artifacts +cache +coverage* +gasReporterOutput.json diff --git a/hardhat/.prettierrc b/hardhat/.prettierrc new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/hardhat/.prettierrc @@ -0,0 +1 @@ +{} diff --git a/hardhat/.solhint.json b/hardhat/.solhint.json new file mode 100644 index 0000000..f3e31e8 --- /dev/null +++ b/hardhat/.solhint.json @@ -0,0 +1,7 @@ +{ + "extends": "solhint:recommended", + "rules": { + "compiler-version": ["error", "^0.8.0"], + "func-visibility": ["warn", { "ignoreConstructors": true }] + } +} diff --git a/hardhat/.solhintignore b/hardhat/.solhintignore new file mode 100644 index 0000000..3c3629e --- /dev/null +++ b/hardhat/.solhintignore @@ -0,0 +1 @@ +node_modules diff --git a/hardhat/README.md b/hardhat/README.md new file mode 100644 index 0000000..3bf122d --- /dev/null +++ b/hardhat/README.md @@ -0,0 +1,46 @@ +# Advanced Sample Hardhat Project + +This project demonstrates an advanced Hardhat use case, integrating other tools commonly used alongside Hardhat in the ecosystem. + +The project comes with a sample contract, a test for that contract, a sample script that deploys that contract, and an example of a task implementation, which simply lists the available accounts. It also comes with a variety of other tools, preconfigured to work with the project code. + +Try running some of the following tasks: + +```shell +npx hardhat accounts +npx hardhat compile +npx hardhat clean +npx hardhat test +npx hardhat node +npx hardhat help +REPORT_GAS=true npx hardhat test +npx hardhat coverage +npx hardhat run scripts/deploy.ts +TS_NODE_FILES=true npx ts-node scripts/deploy.ts +npx eslint '**/*.{js,ts}' +npx eslint '**/*.{js,ts}' --fix +npx prettier '**/*.{json,sol,md}' --check +npx prettier '**/*.{json,sol,md}' --write +npx solhint 'contracts/**/*.sol' +npx solhint 'contracts/**/*.sol' --fix +``` + +# Etherscan verification + +To try out Etherscan verification, you first need to deploy a contract to an Ethereum network that's supported by Etherscan, such as Ropsten. + +In this project, copy the .env.example file to a file named .env, and then edit it to fill in the details. Enter your Etherscan API key, your Ropsten node URL (eg from Alchemy), and the private key of the account which will send the deployment transaction. With a valid .env file in place, first deploy your contract: + +```shell +hardhat run --network ropsten scripts/deploy.ts +``` + +Then, copy the deployment address and paste it in to replace `DEPLOYED_CONTRACT_ADDRESS` in this command: + +```shell +npx hardhat verify --network ropsten DEPLOYED_CONTRACT_ADDRESS "Hello, Hardhat!" +``` + +# Performance optimizations + +For faster runs of your tests and scripts, consider skipping ts-node's type checking by setting the environment variable `TS_NODE_TRANSPILE_ONLY` to `1` in hardhat's environment. For more details see [the documentation](https://hardhat.org/guides/typescript.html#performance-optimizations). diff --git a/hardhat/artifacts/build-info/e2d3106846a5e5b3170e0e4487fc1766.json b/hardhat/artifacts/build-info/e2d3106846a5e5b3170e0e4487fc1766.json new file mode 100644 index 0000000..f8c6624 --- /dev/null +++ b/hardhat/artifacts/build-info/e2d3106846a5e5b3170e0e4487fc1766.json @@ -0,0 +1,9331 @@ +{ + "id": "e2d3106846a5e5b3170e0e4487fc1766", + "_format": "hh-sol-build-info-1", + "solcVersion": "0.8.4", + "solcLongVersion": "0.8.4+commit.c7e474f2", + "input": { + "language": "Solidity", + "sources": { + "contracts/Bank.sol": { + "content": "// SPDX-License-Identifier: GPL-3.0\n\npragma solidity ^0.8.0;\n\ncontract Bank {\n address public bankOwner;\n string public bankName;\n mapping(address => uint256) public customerBalance;\n\n event Deposit(address indexed customer, uint256 amount, uint256 timestamp);\n event Withdraw(address indexed customer, uint256 amount, uint256 timestamp);\n event Transfer(address indexed from, address indexed to, uint256 amount, uint256 timestamp);\n\n constructor() {\n bankOwner = msg.sender;\n }\n\n function depositMoney() public payable {\n require(msg.value != 0, \"You need to deposit some amount of money!\");\n customerBalance[msg.sender] += msg.value;\n emit Deposit(msg.sender, msg.value, block.timestamp);\n emit Transfer(msg.sender, address(this), msg.value, block.timestamp);\n }\n\n function setBankName(string memory _name) external {\n require(\n msg.sender == bankOwner,\n \"You must be the owner to set the name of the bank\"\n );\n bankName = _name;\n }\n\n function withdrawMoney(address payable _to, uint256 _total) public {\n \trequire(msg.sender == bankOwner, \"You must be the owner to make withdrawals\");\n require(\n _total <= customerBalance[msg.sender],\n \"You have insuffient funds to withdraw\"\n );\n\n customerBalance[msg.sender] -= _total;\n _to.transfer(_total);\n emit Withdraw(msg.sender, _total, block.timestamp);\n emit Transfer(address(this), msg.sender, _total, block.timestamp);\n }\n\n function getCustomerBalance() external view returns (uint256) {\n return customerBalance[msg.sender];\n }\n\n function getBankBalance() public view returns (uint256) {\n require(\n msg.sender == bankOwner,\n \"You must be the owner of the bank to see all balances.\"\n );\n return address(this).balance;\n }\n}\n" + } + }, + "settings": { + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ], + "": [ + "ast" + ] + } + } + } + }, + "output": { + "contracts": { + "contracts/Bank.sol": { + "Bank": { + "abi": [ + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "customer", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + } + ], + "name": "Deposit", + "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": "amount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "customer", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + } + ], + "name": "Withdraw", + "type": "event" + }, + { + "inputs": [], + "name": "bankName", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "bankOwner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "customerBalance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "depositMoney", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [], + "name": "getBankBalance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getCustomerBalance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "_name", + "type": "string" + } + ], + "name": "setBankName", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address payable", + "name": "_to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_total", + "type": "uint256" + } + ], + "name": "withdrawMoney", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "evm": { + "bytecode": { + "generatedSources": [], + "linkReferences": {}, + "object": "608060405234801561001057600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061107a806100606000396000f3fe60806040526004361061007b5760003560e01c80637b83b50b1161004e5780637b83b50b1461011b578063a853409a14610146578063e147aaa714610171578063f274c8971461019c5761007b565b806316c05aa21461008057806327d358011461008a57806337ebe47b146100b557806370142690146100f2575b600080fd5b6100886101c5565b005b34801561009657600080fd5b5061009f610318565b6040516100ac9190610ae1565b60405180910390f35b3480156100c157600080fd5b506100dc60048036038101906100d7919061091a565b6103a6565b6040516100e99190610ba3565b60405180910390f35b3480156100fe57600080fd5b506101196004803603810190610114919061097f565b6103be565b005b34801561012757600080fd5b50610130610466565b60405161013d9190610ba3565b60405180910390f35b34801561015257600080fd5b5061015b6104fd565b6040516101689190610ba3565b60405180910390f35b34801561017d57600080fd5b50610186610544565b6040516101939190610ac6565b60405180910390f35b3480156101a857600080fd5b506101c360048036038101906101be9190610943565b610568565b005b6000341415610209576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161020090610b23565b60405180910390fd5b34600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546102589190610c59565b925050819055503373ffffffffffffffffffffffffffffffffffffffff167f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a1534426040516102a7929190610bbe565b60405180910390a23073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f9ed053bb818ff08b8353cd46f78db1f0799f31c9e4458fdb425c10eccd2efc44344260405161030e929190610bbe565b60405180910390a3565b6001805461032590610d73565b80601f016020809104026020016040519081016040528092919081815260200182805461035190610d73565b801561039e5780601f106103735761010080835404028352916020019161039e565b820191906000526020600020905b81548152906001019060200180831161038157829003601f168201915b505050505081565b60026020528060005260406000206000915090505481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461044c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161044390610b63565b60405180910390fd5b80600190805190602001906104629291906107d0565b5050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146104f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104ee90610b83565b60405180910390fd5b47905090565b6000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146105f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105ed90610b43565b60405180910390fd5b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054811115610678576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161066f90610b03565b60405180910390fd5b80600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546106c79190610caf565b925050819055508173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610714573d6000803e3d6000fd5b503373ffffffffffffffffffffffffffffffffffffffff167ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b568824260405161075d929190610bbe565b60405180910390a23373ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167f9ed053bb818ff08b8353cd46f78db1f0799f31c9e4458fdb425c10eccd2efc4483426040516107c4929190610bbe565b60405180910390a35050565b8280546107dc90610d73565b90600052602060002090601f0160209004810192826107fe5760008555610845565b82601f1061081757805160ff1916838001178555610845565b82800160010185558215610845579182015b82811115610844578251825591602001919060010190610829565b5b5090506108529190610856565b5090565b5b8082111561086f576000816000905550600101610857565b5090565b600061088661088184610c0c565b610be7565b90508281526020810184848401111561089e57600080fd5b6108a9848285610d31565b509392505050565b6000813590506108c081610fff565b92915050565b6000813590506108d581611016565b92915050565b600082601f8301126108ec57600080fd5b81356108fc848260208601610873565b91505092915050565b6000813590506109148161102d565b92915050565b60006020828403121561092c57600080fd5b600061093a848285016108b1565b91505092915050565b6000806040838503121561095657600080fd5b6000610964858286016108c6565b925050602061097585828601610905565b9150509250929050565b60006020828403121561099157600080fd5b600082013567ffffffffffffffff8111156109ab57600080fd5b6109b7848285016108db565b91505092915050565b6109c981610ce3565b82525050565b60006109da82610c3d565b6109e48185610c48565b93506109f4818560208601610d40565b6109fd81610e63565b840191505092915050565b6000610a15602583610c48565b9150610a2082610e74565b604082019050919050565b6000610a38602983610c48565b9150610a4382610ec3565b604082019050919050565b6000610a5b602983610c48565b9150610a6682610f12565b604082019050919050565b6000610a7e603183610c48565b9150610a8982610f61565b604082019050919050565b6000610aa1603683610c48565b9150610aac82610fb0565b604082019050919050565b610ac081610d27565b82525050565b6000602082019050610adb60008301846109c0565b92915050565b60006020820190508181036000830152610afb81846109cf565b905092915050565b60006020820190508181036000830152610b1c81610a08565b9050919050565b60006020820190508181036000830152610b3c81610a2b565b9050919050565b60006020820190508181036000830152610b5c81610a4e565b9050919050565b60006020820190508181036000830152610b7c81610a71565b9050919050565b60006020820190508181036000830152610b9c81610a94565b9050919050565b6000602082019050610bb86000830184610ab7565b92915050565b6000604082019050610bd36000830185610ab7565b610be06020830184610ab7565b9392505050565b6000610bf1610c02565b9050610bfd8282610da5565b919050565b6000604051905090565b600067ffffffffffffffff821115610c2757610c26610e34565b5b610c3082610e63565b9050602081019050919050565b600081519050919050565b600082825260208201905092915050565b6000610c6482610d27565b9150610c6f83610d27565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115610ca457610ca3610dd6565b5b828201905092915050565b6000610cba82610d27565b9150610cc583610d27565b925082821015610cd857610cd7610dd6565b5b828203905092915050565b6000610cee82610d07565b9050919050565b6000610d0082610d07565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015610d5e578082015181840152602081019050610d43565b83811115610d6d576000848401525b50505050565b60006002820490506001821680610d8b57607f821691505b60208210811415610d9f57610d9e610e05565b5b50919050565b610dae82610e63565b810181811067ffffffffffffffff82111715610dcd57610dcc610e34565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f596f75206861766520696e7375666669656e742066756e647320746f2077697460008201527f6864726177000000000000000000000000000000000000000000000000000000602082015250565b7f596f75206e65656420746f206465706f73697420736f6d6520616d6f756e742060008201527f6f66206d6f6e6579210000000000000000000000000000000000000000000000602082015250565b7f596f75206d75737420626520746865206f776e657220746f206d616b6520776960008201527f746864726177616c730000000000000000000000000000000000000000000000602082015250565b7f596f75206d75737420626520746865206f776e657220746f207365742074686560008201527f206e616d65206f66207468652062616e6b000000000000000000000000000000602082015250565b7f596f75206d75737420626520746865206f776e6572206f66207468652062616e60008201527f6b20746f2073656520616c6c2062616c616e6365732e00000000000000000000602082015250565b61100881610ce3565b811461101357600080fd5b50565b61101f81610cf5565b811461102a57600080fd5b50565b61103681610d27565b811461104157600080fd5b5056fea2646970667358221220663b89433054af34babe152fd1be443e7fb8ada0bdb8b3591ae4b85aeadf181864736f6c63430008040033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLER PUSH1 0x0 DUP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH2 0x107A DUP1 PUSH2 0x60 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x7B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7B83B50B GT PUSH2 0x4E JUMPI DUP1 PUSH4 0x7B83B50B EQ PUSH2 0x11B JUMPI DUP1 PUSH4 0xA853409A EQ PUSH2 0x146 JUMPI DUP1 PUSH4 0xE147AAA7 EQ PUSH2 0x171 JUMPI DUP1 PUSH4 0xF274C897 EQ PUSH2 0x19C JUMPI PUSH2 0x7B JUMP JUMPDEST DUP1 PUSH4 0x16C05AA2 EQ PUSH2 0x80 JUMPI DUP1 PUSH4 0x27D35801 EQ PUSH2 0x8A JUMPI DUP1 PUSH4 0x37EBE47B EQ PUSH2 0xB5 JUMPI DUP1 PUSH4 0x70142690 EQ PUSH2 0xF2 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x88 PUSH2 0x1C5 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x96 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x9F PUSH2 0x318 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xAC SWAP2 SWAP1 PUSH2 0xAE1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xDC PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xD7 SWAP2 SWAP1 PUSH2 0x91A JUMP JUMPDEST PUSH2 0x3A6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xE9 SWAP2 SWAP1 PUSH2 0xBA3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xFE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x119 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x114 SWAP2 SWAP1 PUSH2 0x97F JUMP JUMPDEST PUSH2 0x3BE JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x127 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x130 PUSH2 0x466 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x13D SWAP2 SWAP1 PUSH2 0xBA3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x152 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x15B PUSH2 0x4FD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x168 SWAP2 SWAP1 PUSH2 0xBA3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x17D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x186 PUSH2 0x544 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x193 SWAP2 SWAP1 PUSH2 0xAC6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C3 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1BE SWAP2 SWAP1 PUSH2 0x943 JUMP JUMPDEST PUSH2 0x568 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 CALLVALUE EQ ISZERO PUSH2 0x209 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x200 SWAP1 PUSH2 0xB23 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLVALUE PUSH1 0x2 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x258 SWAP2 SWAP1 PUSH2 0xC59 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x90890809C654F11D6E72A28FA60149770A0D11EC6C92319D6CEB2BB0A4EA1A15 CALLVALUE TIMESTAMP PUSH1 0x40 MLOAD PUSH2 0x2A7 SWAP3 SWAP2 SWAP1 PUSH2 0xBBE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 ADDRESS PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x9ED053BB818FF08B8353CD46F78DB1F0799F31C9E4458FDB425C10ECCD2EFC44 CALLVALUE TIMESTAMP PUSH1 0x40 MLOAD PUSH2 0x30E SWAP3 SWAP2 SWAP1 PUSH2 0xBBE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH2 0x325 SWAP1 PUSH2 0xD73 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x351 SWAP1 PUSH2 0xD73 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x39E JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x373 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x39E JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x381 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x20 MSTORE DUP1 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP2 POP SWAP1 POP SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x44C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x443 SWAP1 PUSH2 0xB63 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x1 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0x462 SWAP3 SWAP2 SWAP1 PUSH2 0x7D0 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x4F7 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4EE SWAP1 PUSH2 0xB83 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SELFBALANCE SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x2 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x5F6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5ED SWAP1 PUSH2 0xB43 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD DUP2 GT ISZERO PUSH2 0x678 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x66F SWAP1 PUSH2 0xB03 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x2 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x6C7 SWAP2 SWAP1 PUSH2 0xCAF JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8FC DUP3 SWAP1 DUP2 ISZERO MUL SWAP1 PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x714 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xF279E6A1F5E320CCA91135676D9CB6E44CA8A08C0B88342BCDB1144F6511B568 DUP3 TIMESTAMP PUSH1 0x40 MLOAD PUSH2 0x75D SWAP3 SWAP2 SWAP1 PUSH2 0xBBE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND ADDRESS PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x9ED053BB818FF08B8353CD46F78DB1F0799F31C9E4458FDB425C10ECCD2EFC44 DUP4 TIMESTAMP PUSH1 0x40 MLOAD PUSH2 0x7C4 SWAP3 SWAP2 SWAP1 PUSH2 0xBBE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH2 0x7DC SWAP1 PUSH2 0xD73 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH2 0x7FE JUMPI PUSH1 0x0 DUP6 SSTORE PUSH2 0x845 JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH2 0x817 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x845 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x845 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x844 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x829 JUMP JUMPDEST JUMPDEST POP SWAP1 POP PUSH2 0x852 SWAP2 SWAP1 PUSH2 0x856 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x86F JUMPI PUSH1 0x0 DUP2 PUSH1 0x0 SWAP1 SSTORE POP PUSH1 0x1 ADD PUSH2 0x857 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x886 PUSH2 0x881 DUP5 PUSH2 0xC0C JUMP JUMPDEST PUSH2 0xBE7 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 DUP5 DUP5 ADD GT ISZERO PUSH2 0x89E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8A9 DUP5 DUP3 DUP6 PUSH2 0xD31 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x8C0 DUP2 PUSH2 0xFFF JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x8D5 DUP2 PUSH2 0x1016 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x8EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x8FC DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x873 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x914 DUP2 PUSH2 0x102D JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x92C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x93A DUP5 DUP3 DUP6 ADD PUSH2 0x8B1 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x956 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x964 DUP6 DUP3 DUP7 ADD PUSH2 0x8C6 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x975 DUP6 DUP3 DUP7 ADD PUSH2 0x905 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x991 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x9AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9B7 DUP5 DUP3 DUP6 ADD PUSH2 0x8DB JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x9C9 DUP2 PUSH2 0xCE3 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9DA DUP3 PUSH2 0xC3D JUMP JUMPDEST PUSH2 0x9E4 DUP2 DUP6 PUSH2 0xC48 JUMP JUMPDEST SWAP4 POP PUSH2 0x9F4 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0xD40 JUMP JUMPDEST PUSH2 0x9FD DUP2 PUSH2 0xE63 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA15 PUSH1 0x25 DUP4 PUSH2 0xC48 JUMP JUMPDEST SWAP2 POP PUSH2 0xA20 DUP3 PUSH2 0xE74 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA38 PUSH1 0x29 DUP4 PUSH2 0xC48 JUMP JUMPDEST SWAP2 POP PUSH2 0xA43 DUP3 PUSH2 0xEC3 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA5B PUSH1 0x29 DUP4 PUSH2 0xC48 JUMP JUMPDEST SWAP2 POP PUSH2 0xA66 DUP3 PUSH2 0xF12 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA7E PUSH1 0x31 DUP4 PUSH2 0xC48 JUMP JUMPDEST SWAP2 POP PUSH2 0xA89 DUP3 PUSH2 0xF61 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xAA1 PUSH1 0x36 DUP4 PUSH2 0xC48 JUMP JUMPDEST SWAP2 POP PUSH2 0xAAC DUP3 PUSH2 0xFB0 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xAC0 DUP2 PUSH2 0xD27 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xADB PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x9C0 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0xAFB DUP2 DUP5 PUSH2 0x9CF JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0xB1C DUP2 PUSH2 0xA08 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0xB3C DUP2 PUSH2 0xA2B JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0xB5C DUP2 PUSH2 0xA4E JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0xB7C DUP2 PUSH2 0xA71 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0xB9C DUP2 PUSH2 0xA94 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xBB8 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xAB7 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0xBD3 PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0xAB7 JUMP JUMPDEST PUSH2 0xBE0 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0xAB7 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xBF1 PUSH2 0xC02 JUMP JUMPDEST SWAP1 POP PUSH2 0xBFD DUP3 DUP3 PUSH2 0xDA5 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0xC27 JUMPI PUSH2 0xC26 PUSH2 0xE34 JUMP JUMPDEST JUMPDEST PUSH2 0xC30 DUP3 PUSH2 0xE63 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC64 DUP3 PUSH2 0xD27 JUMP JUMPDEST SWAP2 POP PUSH2 0xC6F DUP4 PUSH2 0xD27 JUMP JUMPDEST SWAP3 POP DUP3 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SUB DUP3 GT ISZERO PUSH2 0xCA4 JUMPI PUSH2 0xCA3 PUSH2 0xDD6 JUMP JUMPDEST JUMPDEST DUP3 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCBA DUP3 PUSH2 0xD27 JUMP JUMPDEST SWAP2 POP PUSH2 0xCC5 DUP4 PUSH2 0xD27 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 LT ISZERO PUSH2 0xCD8 JUMPI PUSH2 0xCD7 PUSH2 0xDD6 JUMP JUMPDEST JUMPDEST DUP3 DUP3 SUB SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCEE DUP3 PUSH2 0xD07 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD00 DUP3 PUSH2 0xD07 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY PUSH1 0x0 DUP4 DUP4 ADD MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xD5E JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0xD43 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0xD6D JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x2 DUP3 DIV SWAP1 POP PUSH1 0x1 DUP3 AND DUP1 PUSH2 0xD8B JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 EQ ISZERO PUSH2 0xD9F JUMPI PUSH2 0xD9E PUSH2 0xE05 JUMP JUMPDEST JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xDAE DUP3 PUSH2 0xE63 JUMP JUMPDEST DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0xDCD JUMPI PUSH2 0xDCC PUSH2 0xE34 JUMP JUMPDEST JUMPDEST DUP1 PUSH1 0x40 MSTORE POP POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x596F75206861766520696E7375666669656E742066756E647320746F20776974 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6864726177000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH32 0x596F75206E65656420746F206465706F73697420736F6D6520616D6F756E7420 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6F66206D6F6E6579210000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH32 0x596F75206D75737420626520746865206F776E657220746F206D616B65207769 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x746864726177616C730000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH32 0x596F75206D75737420626520746865206F776E657220746F2073657420746865 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x206E616D65206F66207468652062616E6B000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH32 0x596F75206D75737420626520746865206F776E6572206F66207468652062616E PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6B20746F2073656520616C6C2062616C616E6365732E00000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH2 0x1008 DUP2 PUSH2 0xCE3 JUMP JUMPDEST DUP2 EQ PUSH2 0x1013 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x101F DUP2 PUSH2 0xCF5 JUMP JUMPDEST DUP2 EQ PUSH2 0x102A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x1036 DUP2 PUSH2 0xD27 JUMP JUMPDEST DUP2 EQ PUSH2 0x1041 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH7 0x3B89433054AF34 0xBA 0xBE ISZERO 0x2F 0xD1 0xBE DIFFICULTY RETURNDATACOPY PUSH32 0xB8ADA0BDB8B3591AE4B85AEADF181864736F6C63430008040033000000000000 ", + "sourceMap": "62:1840:0:-:0;;;456:53;;;;;;;;;;492:10;480:9;;:22;;;;;;;;;;;;;;;;;;62:1840;;;;;;" + }, + "deployedBytecode": { + "generatedSources": [ + { + "ast": { + "nodeType": "YulBlock", + "src": "0:12977:1", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "91:261:1", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "101:75:1", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "168:6:1" + } + ], + "functionName": { + "name": "array_allocation_size_t_string_memory_ptr", + "nodeType": "YulIdentifier", + "src": "126:41:1" + }, + "nodeType": "YulFunctionCall", + "src": "126:49:1" + } + ], + "functionName": { + "name": "allocate_memory", + "nodeType": "YulIdentifier", + "src": "110:15:1" + }, + "nodeType": "YulFunctionCall", + "src": "110:66:1" + }, + "variableNames": [ + { + "name": "array", + "nodeType": "YulIdentifier", + "src": "101:5:1" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "array", + "nodeType": "YulIdentifier", + "src": "192:5:1" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "199:6:1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "185:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "185:21:1" + }, + "nodeType": "YulExpressionStatement", + "src": "185:21:1" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "215:27:1", + "value": { + "arguments": [ + { + "name": "array", + "nodeType": "YulIdentifier", + "src": "230:5:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "237:4:1", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "226:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "226:16:1" + }, + "variables": [ + { + "name": "dst", + "nodeType": "YulTypedName", + "src": "219:3:1", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "280:16:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "289:1:1", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "292:1:1", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "282:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "282:12:1" + }, + "nodeType": "YulExpressionStatement", + "src": "282:12:1" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "261:3:1" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "266:6:1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "257:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "257:16:1" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "275:3:1" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "254:2:1" + }, + "nodeType": "YulFunctionCall", + "src": "254:25:1" + }, + "nodeType": "YulIf", + "src": "251:2:1" + }, + { + "expression": { + "arguments": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "329:3:1" + }, + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "334:3:1" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "339:6:1" + } + ], + "functionName": { + "name": "copy_calldata_to_memory", + "nodeType": "YulIdentifier", + "src": "305:23:1" + }, + "nodeType": "YulFunctionCall", + "src": "305:41:1" + }, + "nodeType": "YulExpressionStatement", + "src": "305:41:1" + } + ] + }, + "name": "abi_decode_available_length_t_string_memory_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "src", + "nodeType": "YulTypedName", + "src": "64:3:1", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "69:6:1", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "77:3:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "array", + "nodeType": "YulTypedName", + "src": "85:5:1", + "type": "" + } + ], + "src": "7:345:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "410:87:1", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "420:29:1", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "442:6:1" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "429:12:1" + }, + "nodeType": "YulFunctionCall", + "src": "429:20:1" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "420:5:1" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "485:5:1" + } + ], + "functionName": { + "name": "validator_revert_t_address", + "nodeType": "YulIdentifier", + "src": "458:26:1" + }, + "nodeType": "YulFunctionCall", + "src": "458:33:1" + }, + "nodeType": "YulExpressionStatement", + "src": "458:33:1" + } + ] + }, + "name": "abi_decode_t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "388:6:1", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "396:3:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "404:5:1", + "type": "" + } + ], + "src": "358:139:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "563:95:1", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "573:29:1", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "595:6:1" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "582:12:1" + }, + "nodeType": "YulFunctionCall", + "src": "582:20:1" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "573:5:1" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "646:5:1" + } + ], + "functionName": { + "name": "validator_revert_t_address_payable", + "nodeType": "YulIdentifier", + "src": "611:34:1" + }, + "nodeType": "YulFunctionCall", + "src": "611:41:1" + }, + "nodeType": "YulExpressionStatement", + "src": "611:41:1" + } + ] + }, + "name": "abi_decode_t_address_payable", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "541:6:1", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "549:3:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "557:5:1", + "type": "" + } + ], + "src": "503:155:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "740:211:1", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "789:16:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "798:1:1", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "801:1:1", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "791:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "791:12:1" + }, + "nodeType": "YulExpressionStatement", + "src": "791:12:1" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "768:6:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "776:4:1", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "764:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "764:17:1" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "783:3:1" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "760:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "760:27:1" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "753:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "753:35:1" + }, + "nodeType": "YulIf", + "src": "750:2:1" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "814:34:1", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "841:6:1" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "828:12:1" + }, + "nodeType": "YulFunctionCall", + "src": "828:20:1" + }, + "variables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "818:6:1", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "857:88:1", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "918:6:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "926:4:1", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "914:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "914:17:1" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "933:6:1" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "941:3:1" + } + ], + "functionName": { + "name": "abi_decode_available_length_t_string_memory_ptr", + "nodeType": "YulIdentifier", + "src": "866:47:1" + }, + "nodeType": "YulFunctionCall", + "src": "866:79:1" + }, + "variableNames": [ + { + "name": "array", + "nodeType": "YulIdentifier", + "src": "857:5:1" + } + ] + } + ] + }, + "name": "abi_decode_t_string_memory_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "718:6:1", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "726:3:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "array", + "nodeType": "YulTypedName", + "src": "734:5:1", + "type": "" + } + ], + "src": "678:273:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1009:87:1", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1019:29:1", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "1041:6:1" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "1028:12:1" + }, + "nodeType": "YulFunctionCall", + "src": "1028:20:1" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1019:5:1" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1084:5:1" + } + ], + "functionName": { + "name": "validator_revert_t_uint256", + "nodeType": "YulIdentifier", + "src": "1057:26:1" + }, + "nodeType": "YulFunctionCall", + "src": "1057:33:1" + }, + "nodeType": "YulExpressionStatement", + "src": "1057:33:1" + } + ] + }, + "name": "abi_decode_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "987:6:1", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "995:3:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "1003:5:1", + "type": "" + } + ], + "src": "957:139:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1168:196:1", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "1214:16:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1223:1:1", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1226:1:1", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "1216:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "1216:12:1" + }, + "nodeType": "YulExpressionStatement", + "src": "1216:12:1" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "1189:7:1" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1198:9:1" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "1185:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "1185:23:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1210:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "1181:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "1181:32:1" + }, + "nodeType": "YulIf", + "src": "1178:2:1" + }, + { + "nodeType": "YulBlock", + "src": "1240:117:1", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "1255:15:1", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1269:1:1", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "1259:6:1", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "1284:63:1", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1319:9:1" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "1330:6:1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1315:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "1315:22:1" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "1339:7:1" + } + ], + "functionName": { + "name": "abi_decode_t_address", + "nodeType": "YulIdentifier", + "src": "1294:20:1" + }, + "nodeType": "YulFunctionCall", + "src": "1294:53:1" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "1284:6:1" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "1138:9:1", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "1149:7:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "1161:6:1", + "type": "" + } + ], + "src": "1102:262:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1461:332:1", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "1507:16:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1516:1:1", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1519:1:1", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "1509:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "1509:12:1" + }, + "nodeType": "YulExpressionStatement", + "src": "1509:12:1" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "1482:7:1" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1491:9:1" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "1478:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "1478:23:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1503:2:1", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "1474:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "1474:32:1" + }, + "nodeType": "YulIf", + "src": "1471:2:1" + }, + { + "nodeType": "YulBlock", + "src": "1533:125:1", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "1548:15:1", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1562:1:1", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "1552:6:1", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "1577:71:1", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1620:9:1" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "1631:6:1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1616:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "1616:22:1" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "1640:7:1" + } + ], + "functionName": { + "name": "abi_decode_t_address_payable", + "nodeType": "YulIdentifier", + "src": "1587:28:1" + }, + "nodeType": "YulFunctionCall", + "src": "1587:61:1" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "1577:6:1" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "1668:118:1", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "1683:16:1", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1697:2:1", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "1687:6:1", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "1713:63:1", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1748:9:1" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "1759:6:1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1744:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "1744:22:1" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "1768:7:1" + } + ], + "functionName": { + "name": "abi_decode_t_uint256", + "nodeType": "YulIdentifier", + "src": "1723:20:1" + }, + "nodeType": "YulFunctionCall", + "src": "1723:53:1" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "1713:6:1" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_address_payablet_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "1423:9:1", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "1434:7:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "1446:6:1", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "1454:6:1", + "type": "" + } + ], + "src": "1370:423:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1875:299:1", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "1921:16:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1930:1:1", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1933:1:1", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "1923:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "1923:12:1" + }, + "nodeType": "YulExpressionStatement", + "src": "1923:12:1" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "1896:7:1" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1905:9:1" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "1892:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "1892:23:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1917:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "1888:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "1888:32:1" + }, + "nodeType": "YulIf", + "src": "1885:2:1" + }, + { + "nodeType": "YulBlock", + "src": "1947:220:1", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "1962:45:1", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1993:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2004:1:1", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1989:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "1989:17:1" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "1976:12:1" + }, + "nodeType": "YulFunctionCall", + "src": "1976:31:1" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "1966:6:1", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2054:16:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2063:1:1", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2066:1:1", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "2056:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "2056:12:1" + }, + "nodeType": "YulExpressionStatement", + "src": "2056:12:1" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "2026:6:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2034:18:1", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "2023:2:1" + }, + "nodeType": "YulFunctionCall", + "src": "2023:30:1" + }, + "nodeType": "YulIf", + "src": "2020:2:1" + }, + { + "nodeType": "YulAssignment", + "src": "2084:73:1", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2129:9:1" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "2140:6:1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2125:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "2125:22:1" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "2149:7:1" + } + ], + "functionName": { + "name": "abi_decode_t_string_memory_ptr", + "nodeType": "YulIdentifier", + "src": "2094:30:1" + }, + "nodeType": "YulFunctionCall", + "src": "2094:63:1" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "2084:6:1" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_string_memory_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "1845:9:1", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "1856:7:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "1868:6:1", + "type": "" + } + ], + "src": "1799:375:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2245:53:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "2262:3:1" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "2285:5:1" + } + ], + "functionName": { + "name": "cleanup_t_address", + "nodeType": "YulIdentifier", + "src": "2267:17:1" + }, + "nodeType": "YulFunctionCall", + "src": "2267:24:1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2255:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "2255:37:1" + }, + "nodeType": "YulExpressionStatement", + "src": "2255:37:1" + } + ] + }, + "name": "abi_encode_t_address_to_t_address_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "2233:5:1", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "2240:3:1", + "type": "" + } + ], + "src": "2180:118:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2396:272:1", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "2406:53:1", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "2453:5:1" + } + ], + "functionName": { + "name": "array_length_t_string_memory_ptr", + "nodeType": "YulIdentifier", + "src": "2420:32:1" + }, + "nodeType": "YulFunctionCall", + "src": "2420:39:1" + }, + "variables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "2410:6:1", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "2468:78:1", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "2534:3:1" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "2539:6:1" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "2475:58:1" + }, + "nodeType": "YulFunctionCall", + "src": "2475:71:1" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "2468:3:1" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "2581:5:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2588:4:1", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2577:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "2577:16:1" + }, + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "2595:3:1" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "2600:6:1" + } + ], + "functionName": { + "name": "copy_memory_to_memory", + "nodeType": "YulIdentifier", + "src": "2555:21:1" + }, + "nodeType": "YulFunctionCall", + "src": "2555:52:1" + }, + "nodeType": "YulExpressionStatement", + "src": "2555:52:1" + }, + { + "nodeType": "YulAssignment", + "src": "2616:46:1", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "2627:3:1" + }, + { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "2654:6:1" + } + ], + "functionName": { + "name": "round_up_to_mul_of_32", + "nodeType": "YulIdentifier", + "src": "2632:21:1" + }, + "nodeType": "YulFunctionCall", + "src": "2632:29:1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2623:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "2623:39:1" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "2616:3:1" + } + ] + } + ] + }, + "name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "2377:5:1", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "2384:3:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "2392:3:1", + "type": "" + } + ], + "src": "2304:364:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2820:220:1", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "2830:74:1", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "2896:3:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2901:2:1", + "type": "", + "value": "37" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "2837:58:1" + }, + "nodeType": "YulFunctionCall", + "src": "2837:67:1" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "2830:3:1" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "3002:3:1" + } + ], + "functionName": { + "name": "store_literal_in_memory_18037f7671dff45aa59a05ea62cc9ff1b00d8c9d4210c3feb6299a750fd73ff5", + "nodeType": "YulIdentifier", + "src": "2913:88:1" + }, + "nodeType": "YulFunctionCall", + "src": "2913:93:1" + }, + "nodeType": "YulExpressionStatement", + "src": "2913:93:1" + }, + { + "nodeType": "YulAssignment", + "src": "3015:19:1", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "3026:3:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3031:2:1", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3022:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "3022:12:1" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "3015:3:1" + } + ] + } + ] + }, + "name": "abi_encode_t_stringliteral_18037f7671dff45aa59a05ea62cc9ff1b00d8c9d4210c3feb6299a750fd73ff5_to_t_string_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "2808:3:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "2816:3:1", + "type": "" + } + ], + "src": "2674:366:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3192:220:1", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "3202:74:1", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "3268:3:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3273:2:1", + "type": "", + "value": "41" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "3209:58:1" + }, + "nodeType": "YulFunctionCall", + "src": "3209:67:1" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "3202:3:1" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "3374:3:1" + } + ], + "functionName": { + "name": "store_literal_in_memory_1969bc7601ae3a62b4b405b91518f8d205069fe9c774945925a05a712356ffe1", + "nodeType": "YulIdentifier", + "src": "3285:88:1" + }, + "nodeType": "YulFunctionCall", + "src": "3285:93:1" + }, + "nodeType": "YulExpressionStatement", + "src": "3285:93:1" + }, + { + "nodeType": "YulAssignment", + "src": "3387:19:1", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "3398:3:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3403:2:1", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3394:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "3394:12:1" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "3387:3:1" + } + ] + } + ] + }, + "name": "abi_encode_t_stringliteral_1969bc7601ae3a62b4b405b91518f8d205069fe9c774945925a05a712356ffe1_to_t_string_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "3180:3:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "3188:3:1", + "type": "" + } + ], + "src": "3046:366:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3564:220:1", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "3574:74:1", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "3640:3:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3645:2:1", + "type": "", + "value": "41" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "3581:58:1" + }, + "nodeType": "YulFunctionCall", + "src": "3581:67:1" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "3574:3:1" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "3746:3:1" + } + ], + "functionName": { + "name": "store_literal_in_memory_bfa65412111432fce2362bbabad4114362afad846001e448f921d67e627d799e", + "nodeType": "YulIdentifier", + "src": "3657:88:1" + }, + "nodeType": "YulFunctionCall", + "src": "3657:93:1" + }, + "nodeType": "YulExpressionStatement", + "src": "3657:93:1" + }, + { + "nodeType": "YulAssignment", + "src": "3759:19:1", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "3770:3:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3775:2:1", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3766:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "3766:12:1" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "3759:3:1" + } + ] + } + ] + }, + "name": "abi_encode_t_stringliteral_bfa65412111432fce2362bbabad4114362afad846001e448f921d67e627d799e_to_t_string_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "3552:3:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "3560:3:1", + "type": "" + } + ], + "src": "3418:366:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3936:220:1", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "3946:74:1", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "4012:3:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4017:2:1", + "type": "", + "value": "49" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "3953:58:1" + }, + "nodeType": "YulFunctionCall", + "src": "3953:67:1" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "3946:3:1" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "4118:3:1" + } + ], + "functionName": { + "name": "store_literal_in_memory_ca3c24339a7da078ea968511f604017cc3c97e5aeb3b1f52ef205f639cf26654", + "nodeType": "YulIdentifier", + "src": "4029:88:1" + }, + "nodeType": "YulFunctionCall", + "src": "4029:93:1" + }, + "nodeType": "YulExpressionStatement", + "src": "4029:93:1" + }, + { + "nodeType": "YulAssignment", + "src": "4131:19:1", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "4142:3:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4147:2:1", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4138:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "4138:12:1" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "4131:3:1" + } + ] + } + ] + }, + "name": "abi_encode_t_stringliteral_ca3c24339a7da078ea968511f604017cc3c97e5aeb3b1f52ef205f639cf26654_to_t_string_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "3924:3:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "3932:3:1", + "type": "" + } + ], + "src": "3790:366:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4308:220:1", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "4318:74:1", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "4384:3:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4389:2:1", + "type": "", + "value": "54" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "4325:58:1" + }, + "nodeType": "YulFunctionCall", + "src": "4325:67:1" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "4318:3:1" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "4490:3:1" + } + ], + "functionName": { + "name": "store_literal_in_memory_df3ff31f2116ba8d006a221f6e4f26b98c1ecbe498256ab3dd9617da30390c2e", + "nodeType": "YulIdentifier", + "src": "4401:88:1" + }, + "nodeType": "YulFunctionCall", + "src": "4401:93:1" + }, + "nodeType": "YulExpressionStatement", + "src": "4401:93:1" + }, + { + "nodeType": "YulAssignment", + "src": "4503:19:1", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "4514:3:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4519:2:1", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4510:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "4510:12:1" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "4503:3:1" + } + ] + } + ] + }, + "name": "abi_encode_t_stringliteral_df3ff31f2116ba8d006a221f6e4f26b98c1ecbe498256ab3dd9617da30390c2e_to_t_string_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "4296:3:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "4304:3:1", + "type": "" + } + ], + "src": "4162:366:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4599:53:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "4616:3:1" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "4639:5:1" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "4621:17:1" + }, + "nodeType": "YulFunctionCall", + "src": "4621:24:1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "4609:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "4609:37:1" + }, + "nodeType": "YulExpressionStatement", + "src": "4609:37:1" + } + ] + }, + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "4587:5:1", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "4594:3:1", + "type": "" + } + ], + "src": "4534:118:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4756:124:1", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "4766:26:1", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4778:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4789:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4774:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "4774:18:1" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "4766:4:1" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "4846:6:1" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4859:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4870:1:1", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4855:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "4855:17:1" + } + ], + "functionName": { + "name": "abi_encode_t_address_to_t_address_fromStack", + "nodeType": "YulIdentifier", + "src": "4802:43:1" + }, + "nodeType": "YulFunctionCall", + "src": "4802:71:1" + }, + "nodeType": "YulExpressionStatement", + "src": "4802:71:1" + } + ] + }, + "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "4728:9:1", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "4740:6:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "4751:4:1", + "type": "" + } + ], + "src": "4658:222:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5004:195:1", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "5014:26:1", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5026:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5037:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5022:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "5022:18:1" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "5014:4:1" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5061:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5072:1:1", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5057:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "5057:17:1" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "5080:4:1" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5086:9:1" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "5076:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "5076:20:1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "5050:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "5050:47:1" + }, + "nodeType": "YulExpressionStatement", + "src": "5050:47:1" + }, + { + "nodeType": "YulAssignment", + "src": "5106:86:1", + "value": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "5178:6:1" + }, + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "5187:4:1" + } + ], + "functionName": { + "name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "5114:63:1" + }, + "nodeType": "YulFunctionCall", + "src": "5114:78:1" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "5106:4:1" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "4976:9:1", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "4988:6:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "4999:4:1", + "type": "" + } + ], + "src": "4886:313:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5376:248:1", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "5386:26:1", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5398:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5409:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5394:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "5394:18:1" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "5386:4:1" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5433:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5444:1:1", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5429:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "5429:17:1" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "5452:4:1" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5458:9:1" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "5448:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "5448:20:1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "5422:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "5422:47:1" + }, + "nodeType": "YulExpressionStatement", + "src": "5422:47:1" + }, + { + "nodeType": "YulAssignment", + "src": "5478:139:1", + "value": { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "5612:4:1" + } + ], + "functionName": { + "name": "abi_encode_t_stringliteral_18037f7671dff45aa59a05ea62cc9ff1b00d8c9d4210c3feb6299a750fd73ff5_to_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "5486:124:1" + }, + "nodeType": "YulFunctionCall", + "src": "5486:131:1" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "5478:4:1" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_18037f7671dff45aa59a05ea62cc9ff1b00d8c9d4210c3feb6299a750fd73ff5__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "5356:9:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "5371:4:1", + "type": "" + } + ], + "src": "5205:419:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5801:248:1", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "5811:26:1", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5823:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5834:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5819:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "5819:18:1" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "5811:4:1" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5858:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5869:1:1", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5854:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "5854:17:1" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "5877:4:1" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5883:9:1" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "5873:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "5873:20:1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "5847:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "5847:47:1" + }, + "nodeType": "YulExpressionStatement", + "src": "5847:47:1" + }, + { + "nodeType": "YulAssignment", + "src": "5903:139:1", + "value": { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "6037:4:1" + } + ], + "functionName": { + "name": "abi_encode_t_stringliteral_1969bc7601ae3a62b4b405b91518f8d205069fe9c774945925a05a712356ffe1_to_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "5911:124:1" + }, + "nodeType": "YulFunctionCall", + "src": "5911:131:1" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "5903:4:1" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_1969bc7601ae3a62b4b405b91518f8d205069fe9c774945925a05a712356ffe1__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "5781:9:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "5796:4:1", + "type": "" + } + ], + "src": "5630:419:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6226:248:1", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "6236:26:1", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6248:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6259:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6244:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "6244:18:1" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "6236:4:1" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6283:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6294:1:1", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6279:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "6279:17:1" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "6302:4:1" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6308:9:1" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "6298:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "6298:20:1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "6272:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "6272:47:1" + }, + "nodeType": "YulExpressionStatement", + "src": "6272:47:1" + }, + { + "nodeType": "YulAssignment", + "src": "6328:139:1", + "value": { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "6462:4:1" + } + ], + "functionName": { + "name": "abi_encode_t_stringliteral_bfa65412111432fce2362bbabad4114362afad846001e448f921d67e627d799e_to_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "6336:124:1" + }, + "nodeType": "YulFunctionCall", + "src": "6336:131:1" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "6328:4:1" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_bfa65412111432fce2362bbabad4114362afad846001e448f921d67e627d799e__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "6206:9:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "6221:4:1", + "type": "" + } + ], + "src": "6055:419:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6651:248:1", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "6661:26:1", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6673:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6684:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6669:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "6669:18:1" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "6661:4:1" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6708:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6719:1:1", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6704:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "6704:17:1" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "6727:4:1" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6733:9:1" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "6723:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "6723:20:1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "6697:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "6697:47:1" + }, + "nodeType": "YulExpressionStatement", + "src": "6697:47:1" + }, + { + "nodeType": "YulAssignment", + "src": "6753:139:1", + "value": { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "6887:4:1" + } + ], + "functionName": { + "name": "abi_encode_t_stringliteral_ca3c24339a7da078ea968511f604017cc3c97e5aeb3b1f52ef205f639cf26654_to_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "6761:124:1" + }, + "nodeType": "YulFunctionCall", + "src": "6761:131:1" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "6753:4:1" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_ca3c24339a7da078ea968511f604017cc3c97e5aeb3b1f52ef205f639cf26654__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "6631:9:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "6646:4:1", + "type": "" + } + ], + "src": "6480:419:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "7076:248:1", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "7086:26:1", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7098:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7109:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7094:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "7094:18:1" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "7086:4:1" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7133:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7144:1:1", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7129:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "7129:17:1" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "7152:4:1" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7158:9:1" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "7148:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "7148:20:1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "7122:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "7122:47:1" + }, + "nodeType": "YulExpressionStatement", + "src": "7122:47:1" + }, + { + "nodeType": "YulAssignment", + "src": "7178:139:1", + "value": { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "7312:4:1" + } + ], + "functionName": { + "name": "abi_encode_t_stringliteral_df3ff31f2116ba8d006a221f6e4f26b98c1ecbe498256ab3dd9617da30390c2e_to_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "7186:124:1" + }, + "nodeType": "YulFunctionCall", + "src": "7186:131:1" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "7178:4:1" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_df3ff31f2116ba8d006a221f6e4f26b98c1ecbe498256ab3dd9617da30390c2e__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "7056:9:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "7071:4:1", + "type": "" + } + ], + "src": "6905:419:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "7428:124:1", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "7438:26:1", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7450:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7461:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7446:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "7446:18:1" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "7438:4:1" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "7518:6:1" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7531:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7542:1:1", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7527:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "7527:17:1" + } + ], + "functionName": { + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "nodeType": "YulIdentifier", + "src": "7474:43:1" + }, + "nodeType": "YulFunctionCall", + "src": "7474:71:1" + }, + "nodeType": "YulExpressionStatement", + "src": "7474:71:1" + } + ] + }, + "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "7400:9:1", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "7412:6:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "7423:4:1", + "type": "" + } + ], + "src": "7330:222:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "7684:206:1", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "7694:26:1", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7706:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7717:2:1", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7702:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "7702:18:1" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "7694:4:1" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "7774:6:1" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7787:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7798:1:1", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7783:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "7783:17:1" + } + ], + "functionName": { + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "nodeType": "YulIdentifier", + "src": "7730:43:1" + }, + "nodeType": "YulFunctionCall", + "src": "7730:71:1" + }, + "nodeType": "YulExpressionStatement", + "src": "7730:71:1" + }, + { + "expression": { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "7855:6:1" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7868:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7879:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7864:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "7864:18:1" + } + ], + "functionName": { + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "nodeType": "YulIdentifier", + "src": "7811:43:1" + }, + "nodeType": "YulFunctionCall", + "src": "7811:72:1" + }, + "nodeType": "YulExpressionStatement", + "src": "7811:72:1" + } + ] + }, + "name": "abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "7648:9:1", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "7660:6:1", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "7668:6:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "7679:4:1", + "type": "" + } + ], + "src": "7558:332:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "7937:88:1", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "7947:30:1", + "value": { + "arguments": [], + "functionName": { + "name": "allocate_unbounded", + "nodeType": "YulIdentifier", + "src": "7957:18:1" + }, + "nodeType": "YulFunctionCall", + "src": "7957:20:1" + }, + "variableNames": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "7947:6:1" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "8006:6:1" + }, + { + "name": "size", + "nodeType": "YulIdentifier", + "src": "8014:4:1" + } + ], + "functionName": { + "name": "finalize_allocation", + "nodeType": "YulIdentifier", + "src": "7986:19:1" + }, + "nodeType": "YulFunctionCall", + "src": "7986:33:1" + }, + "nodeType": "YulExpressionStatement", + "src": "7986:33:1" + } + ] + }, + "name": "allocate_memory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "size", + "nodeType": "YulTypedName", + "src": "7921:4:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "7930:6:1", + "type": "" + } + ], + "src": "7896:129:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "8071:35:1", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "8081:19:1", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8097:2:1", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "8091:5:1" + }, + "nodeType": "YulFunctionCall", + "src": "8091:9:1" + }, + "variableNames": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "8081:6:1" + } + ] + } + ] + }, + "name": "allocate_unbounded", + "nodeType": "YulFunctionDefinition", + "returnVariables": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "8064:6:1", + "type": "" + } + ], + "src": "8031:75:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "8179:241:1", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "8284:22:1", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x41", + "nodeType": "YulIdentifier", + "src": "8286:16:1" + }, + "nodeType": "YulFunctionCall", + "src": "8286:18:1" + }, + "nodeType": "YulExpressionStatement", + "src": "8286:18:1" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "8256:6:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8264:18:1", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "8253:2:1" + }, + "nodeType": "YulFunctionCall", + "src": "8253:30:1" + }, + "nodeType": "YulIf", + "src": "8250:2:1" + }, + { + "nodeType": "YulAssignment", + "src": "8316:37:1", + "value": { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "8346:6:1" + } + ], + "functionName": { + "name": "round_up_to_mul_of_32", + "nodeType": "YulIdentifier", + "src": "8324:21:1" + }, + "nodeType": "YulFunctionCall", + "src": "8324:29:1" + }, + "variableNames": [ + { + "name": "size", + "nodeType": "YulIdentifier", + "src": "8316:4:1" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "8390:23:1", + "value": { + "arguments": [ + { + "name": "size", + "nodeType": "YulIdentifier", + "src": "8402:4:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8408:4:1", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8398:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "8398:15:1" + }, + "variableNames": [ + { + "name": "size", + "nodeType": "YulIdentifier", + "src": "8390:4:1" + } + ] + } + ] + }, + "name": "array_allocation_size_t_string_memory_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "8163:6:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "size", + "nodeType": "YulTypedName", + "src": "8174:4:1", + "type": "" + } + ], + "src": "8112:308:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "8485:40:1", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "8496:22:1", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "8512:5:1" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "8506:5:1" + }, + "nodeType": "YulFunctionCall", + "src": "8506:12:1" + }, + "variableNames": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "8496:6:1" + } + ] + } + ] + }, + "name": "array_length_t_string_memory_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "8468:5:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "8478:6:1", + "type": "" + } + ], + "src": "8426:99:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "8627:73:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "8644:3:1" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "8649:6:1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "8637:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "8637:19:1" + }, + "nodeType": "YulExpressionStatement", + "src": "8637:19:1" + }, + { + "nodeType": "YulAssignment", + "src": "8665:29:1", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "8684:3:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8689:4:1", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8680:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "8680:14:1" + }, + "variableNames": [ + { + "name": "updated_pos", + "nodeType": "YulIdentifier", + "src": "8665:11:1" + } + ] + } + ] + }, + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "8599:3:1", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "8604:6:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "updated_pos", + "nodeType": "YulTypedName", + "src": "8615:11:1", + "type": "" + } + ], + "src": "8531:169:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "8750:261:1", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "8760:25:1", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "8783:1:1" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "8765:17:1" + }, + "nodeType": "YulFunctionCall", + "src": "8765:20:1" + }, + "variableNames": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "8760:1:1" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "8794:25:1", + "value": { + "arguments": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "8817:1:1" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "8799:17:1" + }, + "nodeType": "YulFunctionCall", + "src": "8799:20:1" + }, + "variableNames": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "8794:1:1" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "8957:22:1", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nodeType": "YulIdentifier", + "src": "8959:16:1" + }, + "nodeType": "YulFunctionCall", + "src": "8959:18:1" + }, + "nodeType": "YulExpressionStatement", + "src": "8959:18:1" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "8878:1:1" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8885:66:1", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "8953:1:1" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "8881:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "8881:74:1" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "8875:2:1" + }, + "nodeType": "YulFunctionCall", + "src": "8875:81:1" + }, + "nodeType": "YulIf", + "src": "8872:2:1" + }, + { + "nodeType": "YulAssignment", + "src": "8989:16:1", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "9000:1:1" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "9003:1:1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8996:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "8996:9:1" + }, + "variableNames": [ + { + "name": "sum", + "nodeType": "YulIdentifier", + "src": "8989:3:1" + } + ] + } + ] + }, + "name": "checked_add_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nodeType": "YulTypedName", + "src": "8737:1:1", + "type": "" + }, + { + "name": "y", + "nodeType": "YulTypedName", + "src": "8740:1:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "sum", + "nodeType": "YulTypedName", + "src": "8746:3:1", + "type": "" + } + ], + "src": "8706:305:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "9062:146:1", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "9072:25:1", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "9095:1:1" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "9077:17:1" + }, + "nodeType": "YulFunctionCall", + "src": "9077:20:1" + }, + "variableNames": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "9072:1:1" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "9106:25:1", + "value": { + "arguments": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "9129:1:1" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "9111:17:1" + }, + "nodeType": "YulFunctionCall", + "src": "9111:20:1" + }, + "variableNames": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "9106:1:1" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "9153:22:1", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nodeType": "YulIdentifier", + "src": "9155:16:1" + }, + "nodeType": "YulFunctionCall", + "src": "9155:18:1" + }, + "nodeType": "YulExpressionStatement", + "src": "9155:18:1" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "9147:1:1" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "9150:1:1" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "9144:2:1" + }, + "nodeType": "YulFunctionCall", + "src": "9144:8:1" + }, + "nodeType": "YulIf", + "src": "9141:2:1" + }, + { + "nodeType": "YulAssignment", + "src": "9185:17:1", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "9197:1:1" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "9200:1:1" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "9193:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "9193:9:1" + }, + "variableNames": [ + { + "name": "diff", + "nodeType": "YulIdentifier", + "src": "9185:4:1" + } + ] + } + ] + }, + "name": "checked_sub_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nodeType": "YulTypedName", + "src": "9048:1:1", + "type": "" + }, + { + "name": "y", + "nodeType": "YulTypedName", + "src": "9051:1:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "diff", + "nodeType": "YulTypedName", + "src": "9057:4:1", + "type": "" + } + ], + "src": "9017:191:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "9259:51:1", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "9269:35:1", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "9298:5:1" + } + ], + "functionName": { + "name": "cleanup_t_uint160", + "nodeType": "YulIdentifier", + "src": "9280:17:1" + }, + "nodeType": "YulFunctionCall", + "src": "9280:24:1" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "9269:7:1" + } + ] + } + ] + }, + "name": "cleanup_t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "9241:5:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "9251:7:1", + "type": "" + } + ], + "src": "9214:96:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "9369:51:1", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "9379:35:1", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "9408:5:1" + } + ], + "functionName": { + "name": "cleanup_t_uint160", + "nodeType": "YulIdentifier", + "src": "9390:17:1" + }, + "nodeType": "YulFunctionCall", + "src": "9390:24:1" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "9379:7:1" + } + ] + } + ] + }, + "name": "cleanup_t_address_payable", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "9351:5:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "9361:7:1", + "type": "" + } + ], + "src": "9316:104:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "9471:81:1", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "9481:65:1", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "9496:5:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9503:42:1", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "9492:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "9492:54:1" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "9481:7:1" + } + ] + } + ] + }, + "name": "cleanup_t_uint160", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "9453:5:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "9463:7:1", + "type": "" + } + ], + "src": "9426:126:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "9603:32:1", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "9613:16:1", + "value": { + "name": "value", + "nodeType": "YulIdentifier", + "src": "9624:5:1" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "9613:7:1" + } + ] + } + ] + }, + "name": "cleanup_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "9585:5:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "9595:7:1", + "type": "" + } + ], + "src": "9558:77:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "9692:103:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "9715:3:1" + }, + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "9720:3:1" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "9725:6:1" + } + ], + "functionName": { + "name": "calldatacopy", + "nodeType": "YulIdentifier", + "src": "9702:12:1" + }, + "nodeType": "YulFunctionCall", + "src": "9702:30:1" + }, + "nodeType": "YulExpressionStatement", + "src": "9702:30:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "9773:3:1" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "9778:6:1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9769:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "9769:16:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9787:1:1", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "9762:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "9762:27:1" + }, + "nodeType": "YulExpressionStatement", + "src": "9762:27:1" + } + ] + }, + "name": "copy_calldata_to_memory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "src", + "nodeType": "YulTypedName", + "src": "9674:3:1", + "type": "" + }, + { + "name": "dst", + "nodeType": "YulTypedName", + "src": "9679:3:1", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "9684:6:1", + "type": "" + } + ], + "src": "9641:154:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "9850:258:1", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "9860:10:1", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9869:1:1", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nodeType": "YulTypedName", + "src": "9864:1:1", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "9929:63:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "9954:3:1" + }, + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "9959:1:1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9950:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "9950:11:1" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "9973:3:1" + }, + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "9978:1:1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9969:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "9969:11:1" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "9963:5:1" + }, + "nodeType": "YulFunctionCall", + "src": "9963:18:1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "9943:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "9943:39:1" + }, + "nodeType": "YulExpressionStatement", + "src": "9943:39:1" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "9890:1:1" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "9893:6:1" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "9887:2:1" + }, + "nodeType": "YulFunctionCall", + "src": "9887:13:1" + }, + "nodeType": "YulForLoop", + "post": { + "nodeType": "YulBlock", + "src": "9901:19:1", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "9903:15:1", + "value": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "9912:1:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9915:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9908:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "9908:10:1" + }, + "variableNames": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "9903:1:1" + } + ] + } + ] + }, + "pre": { + "nodeType": "YulBlock", + "src": "9883:3:1", + "statements": [] + }, + "src": "9879:113:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "10026:76:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "10076:3:1" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "10081:6:1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10072:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "10072:16:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10090:1:1", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "10065:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "10065:27:1" + }, + "nodeType": "YulExpressionStatement", + "src": "10065:27:1" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "10007:1:1" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "10010:6:1" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "10004:2:1" + }, + "nodeType": "YulFunctionCall", + "src": "10004:13:1" + }, + "nodeType": "YulIf", + "src": "10001:2:1" + } + ] + }, + "name": "copy_memory_to_memory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "src", + "nodeType": "YulTypedName", + "src": "9832:3:1", + "type": "" + }, + { + "name": "dst", + "nodeType": "YulTypedName", + "src": "9837:3:1", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "9842:6:1", + "type": "" + } + ], + "src": "9801:307:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "10165:269:1", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "10175:22:1", + "value": { + "arguments": [ + { + "name": "data", + "nodeType": "YulIdentifier", + "src": "10189:4:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10195:1:1", + "type": "", + "value": "2" + } + ], + "functionName": { + "name": "div", + "nodeType": "YulIdentifier", + "src": "10185:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "10185:12:1" + }, + "variableNames": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "10175:6:1" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "10206:38:1", + "value": { + "arguments": [ + { + "name": "data", + "nodeType": "YulIdentifier", + "src": "10236:4:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10242:1:1", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "10232:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "10232:12:1" + }, + "variables": [ + { + "name": "outOfPlaceEncoding", + "nodeType": "YulTypedName", + "src": "10210:18:1", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "10283:51:1", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "10297:27:1", + "value": { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "10311:6:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10319:4:1", + "type": "", + "value": "0x7f" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "10307:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "10307:17:1" + }, + "variableNames": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "10297:6:1" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "outOfPlaceEncoding", + "nodeType": "YulIdentifier", + "src": "10263:18:1" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "10256:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "10256:26:1" + }, + "nodeType": "YulIf", + "src": "10253:2:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "10386:42:1", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x22", + "nodeType": "YulIdentifier", + "src": "10400:16:1" + }, + "nodeType": "YulFunctionCall", + "src": "10400:18:1" + }, + "nodeType": "YulExpressionStatement", + "src": "10400:18:1" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "outOfPlaceEncoding", + "nodeType": "YulIdentifier", + "src": "10350:18:1" + }, + { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "10373:6:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10381:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "10370:2:1" + }, + "nodeType": "YulFunctionCall", + "src": "10370:14:1" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "10347:2:1" + }, + "nodeType": "YulFunctionCall", + "src": "10347:38:1" + }, + "nodeType": "YulIf", + "src": "10344:2:1" + } + ] + }, + "name": "extract_byte_array_length", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "data", + "nodeType": "YulTypedName", + "src": "10149:4:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "10158:6:1", + "type": "" + } + ], + "src": "10114:320:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "10483:238:1", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "10493:58:1", + "value": { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "10515:6:1" + }, + { + "arguments": [ + { + "name": "size", + "nodeType": "YulIdentifier", + "src": "10545:4:1" + } + ], + "functionName": { + "name": "round_up_to_mul_of_32", + "nodeType": "YulIdentifier", + "src": "10523:21:1" + }, + "nodeType": "YulFunctionCall", + "src": "10523:27:1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10511:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "10511:40:1" + }, + "variables": [ + { + "name": "newFreePtr", + "nodeType": "YulTypedName", + "src": "10497:10:1", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "10662:22:1", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x41", + "nodeType": "YulIdentifier", + "src": "10664:16:1" + }, + "nodeType": "YulFunctionCall", + "src": "10664:18:1" + }, + "nodeType": "YulExpressionStatement", + "src": "10664:18:1" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "newFreePtr", + "nodeType": "YulIdentifier", + "src": "10605:10:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10617:18:1", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "10602:2:1" + }, + "nodeType": "YulFunctionCall", + "src": "10602:34:1" + }, + { + "arguments": [ + { + "name": "newFreePtr", + "nodeType": "YulIdentifier", + "src": "10641:10:1" + }, + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "10653:6:1" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "10638:2:1" + }, + "nodeType": "YulFunctionCall", + "src": "10638:22:1" + } + ], + "functionName": { + "name": "or", + "nodeType": "YulIdentifier", + "src": "10599:2:1" + }, + "nodeType": "YulFunctionCall", + "src": "10599:62:1" + }, + "nodeType": "YulIf", + "src": "10596:2:1" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10700:2:1", + "type": "", + "value": "64" + }, + { + "name": "newFreePtr", + "nodeType": "YulIdentifier", + "src": "10704:10:1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "10693:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "10693:22:1" + }, + "nodeType": "YulExpressionStatement", + "src": "10693:22:1" + } + ] + }, + "name": "finalize_allocation", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "10469:6:1", + "type": "" + }, + { + "name": "size", + "nodeType": "YulTypedName", + "src": "10477:4:1", + "type": "" + } + ], + "src": "10440:281:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "10755:152:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10772:1:1", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10775:77:1", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "10765:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "10765:88:1" + }, + "nodeType": "YulExpressionStatement", + "src": "10765:88:1" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10869:1:1", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10872:4:1", + "type": "", + "value": "0x11" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "10862:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "10862:15:1" + }, + "nodeType": "YulExpressionStatement", + "src": "10862:15:1" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10893:1:1", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10896:4:1", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "10886:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "10886:15:1" + }, + "nodeType": "YulExpressionStatement", + "src": "10886:15:1" + } + ] + }, + "name": "panic_error_0x11", + "nodeType": "YulFunctionDefinition", + "src": "10727:180:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "10941:152:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10958:1:1", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10961:77:1", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "10951:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "10951:88:1" + }, + "nodeType": "YulExpressionStatement", + "src": "10951:88:1" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11055:1:1", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11058:4:1", + "type": "", + "value": "0x22" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "11048:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "11048:15:1" + }, + "nodeType": "YulExpressionStatement", + "src": "11048:15:1" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11079:1:1", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11082:4:1", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "11072:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "11072:15:1" + }, + "nodeType": "YulExpressionStatement", + "src": "11072:15:1" + } + ] + }, + "name": "panic_error_0x22", + "nodeType": "YulFunctionDefinition", + "src": "10913:180:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "11127:152:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11144:1:1", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11147:77:1", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "11137:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "11137:88:1" + }, + "nodeType": "YulExpressionStatement", + "src": "11137:88:1" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11241:1:1", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11244:4:1", + "type": "", + "value": "0x41" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "11234:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "11234:15:1" + }, + "nodeType": "YulExpressionStatement", + "src": "11234:15:1" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11265:1:1", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11268:4:1", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "11258:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "11258:15:1" + }, + "nodeType": "YulExpressionStatement", + "src": "11258:15:1" + } + ] + }, + "name": "panic_error_0x41", + "nodeType": "YulFunctionDefinition", + "src": "11099:180:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "11333:54:1", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "11343:38:1", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "11361:5:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11368:2:1", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11357:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "11357:14:1" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11377:2:1", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "not", + "nodeType": "YulIdentifier", + "src": "11373:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "11373:7:1" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "11353:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "11353:28:1" + }, + "variableNames": [ + { + "name": "result", + "nodeType": "YulIdentifier", + "src": "11343:6:1" + } + ] + } + ] + }, + "name": "round_up_to_mul_of_32", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "11316:5:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "result", + "nodeType": "YulTypedName", + "src": "11326:6:1", + "type": "" + } + ], + "src": "11285:102:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "11499:118:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "11521:6:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11529:1:1", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11517:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "11517:14:1" + }, + { + "kind": "string", + "nodeType": "YulLiteral", + "src": "11533:34:1", + "type": "", + "value": "You have insuffient funds to wit" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "11510:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "11510:58:1" + }, + "nodeType": "YulExpressionStatement", + "src": "11510:58:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "11589:6:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11597:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11585:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "11585:15:1" + }, + { + "kind": "string", + "nodeType": "YulLiteral", + "src": "11602:7:1", + "type": "", + "value": "hdraw" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "11578:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "11578:32:1" + }, + "nodeType": "YulExpressionStatement", + "src": "11578:32:1" + } + ] + }, + "name": "store_literal_in_memory_18037f7671dff45aa59a05ea62cc9ff1b00d8c9d4210c3feb6299a750fd73ff5", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "11491:6:1", + "type": "" + } + ], + "src": "11393:224:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "11729:122:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "11751:6:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11759:1:1", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11747:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "11747:14:1" + }, + { + "kind": "string", + "nodeType": "YulLiteral", + "src": "11763:34:1", + "type": "", + "value": "You need to deposit some amount " + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "11740:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "11740:58:1" + }, + "nodeType": "YulExpressionStatement", + "src": "11740:58:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "11819:6:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11827:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11815:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "11815:15:1" + }, + { + "kind": "string", + "nodeType": "YulLiteral", + "src": "11832:11:1", + "type": "", + "value": "of money!" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "11808:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "11808:36:1" + }, + "nodeType": "YulExpressionStatement", + "src": "11808:36:1" + } + ] + }, + "name": "store_literal_in_memory_1969bc7601ae3a62b4b405b91518f8d205069fe9c774945925a05a712356ffe1", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "11721:6:1", + "type": "" + } + ], + "src": "11623:228:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "11963:122:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "11985:6:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11993:1:1", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11981:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "11981:14:1" + }, + { + "kind": "string", + "nodeType": "YulLiteral", + "src": "11997:34:1", + "type": "", + "value": "You must be the owner to make wi" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "11974:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "11974:58:1" + }, + "nodeType": "YulExpressionStatement", + "src": "11974:58:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "12053:6:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12061:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12049:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "12049:15:1" + }, + { + "kind": "string", + "nodeType": "YulLiteral", + "src": "12066:11:1", + "type": "", + "value": "thdrawals" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "12042:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "12042:36:1" + }, + "nodeType": "YulExpressionStatement", + "src": "12042:36:1" + } + ] + }, + "name": "store_literal_in_memory_bfa65412111432fce2362bbabad4114362afad846001e448f921d67e627d799e", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "11955:6:1", + "type": "" + } + ], + "src": "11857:228:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "12197:130:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "12219:6:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12227:1:1", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12215:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "12215:14:1" + }, + { + "kind": "string", + "nodeType": "YulLiteral", + "src": "12231:34:1", + "type": "", + "value": "You must be the owner to set the" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "12208:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "12208:58:1" + }, + "nodeType": "YulExpressionStatement", + "src": "12208:58:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "12287:6:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12295:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12283:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "12283:15:1" + }, + { + "kind": "string", + "nodeType": "YulLiteral", + "src": "12300:19:1", + "type": "", + "value": " name of the bank" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "12276:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "12276:44:1" + }, + "nodeType": "YulExpressionStatement", + "src": "12276:44:1" + } + ] + }, + "name": "store_literal_in_memory_ca3c24339a7da078ea968511f604017cc3c97e5aeb3b1f52ef205f639cf26654", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "12189:6:1", + "type": "" + } + ], + "src": "12091:236:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "12439:135:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "12461:6:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12469:1:1", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12457:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "12457:14:1" + }, + { + "kind": "string", + "nodeType": "YulLiteral", + "src": "12473:34:1", + "type": "", + "value": "You must be the owner of the ban" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "12450:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "12450:58:1" + }, + "nodeType": "YulExpressionStatement", + "src": "12450:58:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "12529:6:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12537:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12525:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "12525:15:1" + }, + { + "kind": "string", + "nodeType": "YulLiteral", + "src": "12542:24:1", + "type": "", + "value": "k to see all balances." + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "12518:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "12518:49:1" + }, + "nodeType": "YulExpressionStatement", + "src": "12518:49:1" + } + ] + }, + "name": "store_literal_in_memory_df3ff31f2116ba8d006a221f6e4f26b98c1ecbe498256ab3dd9617da30390c2e", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "12431:6:1", + "type": "" + } + ], + "src": "12333:241:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "12623:79:1", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "12680:16:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12689:1:1", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12692:1:1", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "12682:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "12682:12:1" + }, + "nodeType": "YulExpressionStatement", + "src": "12682:12:1" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "12646:5:1" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "12671:5:1" + } + ], + "functionName": { + "name": "cleanup_t_address", + "nodeType": "YulIdentifier", + "src": "12653:17:1" + }, + "nodeType": "YulFunctionCall", + "src": "12653:24:1" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "12643:2:1" + }, + "nodeType": "YulFunctionCall", + "src": "12643:35:1" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "12636:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "12636:43:1" + }, + "nodeType": "YulIf", + "src": "12633:2:1" + } + ] + }, + "name": "validator_revert_t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "12616:5:1", + "type": "" + } + ], + "src": "12580:122:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "12759:87:1", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "12824:16:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12833:1:1", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12836:1:1", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "12826:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "12826:12:1" + }, + "nodeType": "YulExpressionStatement", + "src": "12826:12:1" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "12782:5:1" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "12815:5:1" + } + ], + "functionName": { + "name": "cleanup_t_address_payable", + "nodeType": "YulIdentifier", + "src": "12789:25:1" + }, + "nodeType": "YulFunctionCall", + "src": "12789:32:1" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "12779:2:1" + }, + "nodeType": "YulFunctionCall", + "src": "12779:43:1" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "12772:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "12772:51:1" + }, + "nodeType": "YulIf", + "src": "12769:2:1" + } + ] + }, + "name": "validator_revert_t_address_payable", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "12752:5:1", + "type": "" + } + ], + "src": "12708:138:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "12895:79:1", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "12952:16:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12961:1:1", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12964:1:1", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "12954:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "12954:12:1" + }, + "nodeType": "YulExpressionStatement", + "src": "12954:12:1" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "12918:5:1" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "12943:5:1" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "12925:17:1" + }, + "nodeType": "YulFunctionCall", + "src": "12925:24:1" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "12915:2:1" + }, + "nodeType": "YulFunctionCall", + "src": "12915:35:1" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "12908:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "12908:43:1" + }, + "nodeType": "YulIf", + "src": "12905:2:1" + } + ] + }, + "name": "validator_revert_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "12888:5:1", + "type": "" + } + ], + "src": "12852:122:1" + } + ] + }, + "contents": "{\n\n function abi_decode_available_length_t_string_memory_ptr(src, length, end) -> array {\n array := allocate_memory(array_allocation_size_t_string_memory_ptr(length))\n mstore(array, length)\n let dst := add(array, 0x20)\n if gt(add(src, length), end) { revert(0, 0) }\n copy_calldata_to_memory(src, dst, length)\n }\n\n function abi_decode_t_address(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_address(value)\n }\n\n function abi_decode_t_address_payable(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_address_payable(value)\n }\n\n // string\n function abi_decode_t_string_memory_ptr(offset, end) -> array {\n if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n let length := calldataload(offset)\n array := abi_decode_available_length_t_string_memory_ptr(add(offset, 0x20), length, end)\n }\n\n function abi_decode_t_uint256(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_uint256(value)\n }\n\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_address_payablet_uint256(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address_payable(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_string_memory_ptr(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n\n {\n\n let offset := calldataload(add(headStart, 0))\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n\n value0 := abi_decode_t_string_memory_ptr(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_t_address_to_t_address_fromStack(value, pos) {\n mstore(pos, cleanup_t_address(value))\n }\n\n function abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack(value, pos) -> end {\n let length := array_length_t_string_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length)\n copy_memory_to_memory(add(value, 0x20), pos, length)\n end := add(pos, round_up_to_mul_of_32(length))\n }\n\n function abi_encode_t_stringliteral_18037f7671dff45aa59a05ea62cc9ff1b00d8c9d4210c3feb6299a750fd73ff5_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 37)\n store_literal_in_memory_18037f7671dff45aa59a05ea62cc9ff1b00d8c9d4210c3feb6299a750fd73ff5(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_t_stringliteral_1969bc7601ae3a62b4b405b91518f8d205069fe9c774945925a05a712356ffe1_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 41)\n store_literal_in_memory_1969bc7601ae3a62b4b405b91518f8d205069fe9c774945925a05a712356ffe1(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_t_stringliteral_bfa65412111432fce2362bbabad4114362afad846001e448f921d67e627d799e_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 41)\n store_literal_in_memory_bfa65412111432fce2362bbabad4114362afad846001e448f921d67e627d799e(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_t_stringliteral_ca3c24339a7da078ea968511f604017cc3c97e5aeb3b1f52ef205f639cf26654_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 49)\n store_literal_in_memory_ca3c24339a7da078ea968511f604017cc3c97e5aeb3b1f52ef205f639cf26654(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_t_stringliteral_df3ff31f2116ba8d006a221f6e4f26b98c1ecbe498256ab3dd9617da30390c2e_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 54)\n store_literal_in_memory_df3ff31f2116ba8d006a221f6e4f26b98c1ecbe498256ab3dd9617da30390c2e(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_t_uint256_to_t_uint256_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint256(value))\n }\n\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack(value0, tail)\n\n }\n\n function abi_encode_tuple_t_stringliteral_18037f7671dff45aa59a05ea62cc9ff1b00d8c9d4210c3feb6299a750fd73ff5__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_18037f7671dff45aa59a05ea62cc9ff1b00d8c9d4210c3feb6299a750fd73ff5_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function abi_encode_tuple_t_stringliteral_1969bc7601ae3a62b4b405b91518f8d205069fe9c774945925a05a712356ffe1__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_1969bc7601ae3a62b4b405b91518f8d205069fe9c774945925a05a712356ffe1_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function abi_encode_tuple_t_stringliteral_bfa65412111432fce2362bbabad4114362afad846001e448f921d67e627d799e__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_bfa65412111432fce2362bbabad4114362afad846001e448f921d67e627d799e_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function abi_encode_tuple_t_stringliteral_ca3c24339a7da078ea968511f604017cc3c97e5aeb3b1f52ef205f639cf26654__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_ca3c24339a7da078ea968511f604017cc3c97e5aeb3b1f52ef205f639cf26654_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function abi_encode_tuple_t_stringliteral_df3ff31f2116ba8d006a221f6e4f26b98c1ecbe498256ab3dd9617da30390c2e__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_df3ff31f2116ba8d006a221f6e4f26b98c1ecbe498256ab3dd9617da30390c2e_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed(headStart , value1, value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value1, add(headStart, 32))\n\n }\n\n function allocate_memory(size) -> memPtr {\n memPtr := allocate_unbounded()\n finalize_allocation(memPtr, size)\n }\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function array_allocation_size_t_string_memory_ptr(length) -> size {\n // Make sure we can allocate memory without overflow\n if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n\n size := round_up_to_mul_of_32(length)\n\n // add length slot\n size := add(size, 0x20)\n\n }\n\n function array_length_t_string_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function checked_add_t_uint256(x, y) -> sum {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n\n // overflow, if x > (maxValue - y)\n if gt(x, sub(0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff, y)) { panic_error_0x11() }\n\n sum := add(x, y)\n }\n\n function checked_sub_t_uint256(x, y) -> diff {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n\n if lt(x, y) { panic_error_0x11() }\n\n diff := sub(x, y)\n }\n\n function cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function cleanup_t_address_payable(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function cleanup_t_uint160(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n }\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function copy_calldata_to_memory(src, dst, length) {\n calldatacopy(dst, src, length)\n // clear end\n mstore(add(dst, length), 0)\n }\n\n function copy_memory_to_memory(src, dst, length) {\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n if gt(i, length)\n {\n // clear end\n mstore(add(dst, length), 0)\n }\n }\n\n function extract_byte_array_length(data) -> length {\n length := div(data, 2)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) {\n length := and(length, 0x7f)\n }\n\n if eq(outOfPlaceEncoding, lt(length, 32)) {\n panic_error_0x22()\n }\n }\n\n function finalize_allocation(memPtr, size) {\n let newFreePtr := add(memPtr, round_up_to_mul_of_32(size))\n // protect against overflow\n if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n }\n\n function panic_error_0x11() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n\n function panic_error_0x22() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n\n function panic_error_0x41() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n\n function round_up_to_mul_of_32(value) -> result {\n result := and(add(value, 31), not(31))\n }\n\n function store_literal_in_memory_18037f7671dff45aa59a05ea62cc9ff1b00d8c9d4210c3feb6299a750fd73ff5(memPtr) {\n\n mstore(add(memPtr, 0), \"You have insuffient funds to wit\")\n\n mstore(add(memPtr, 32), \"hdraw\")\n\n }\n\n function store_literal_in_memory_1969bc7601ae3a62b4b405b91518f8d205069fe9c774945925a05a712356ffe1(memPtr) {\n\n mstore(add(memPtr, 0), \"You need to deposit some amount \")\n\n mstore(add(memPtr, 32), \"of money!\")\n\n }\n\n function store_literal_in_memory_bfa65412111432fce2362bbabad4114362afad846001e448f921d67e627d799e(memPtr) {\n\n mstore(add(memPtr, 0), \"You must be the owner to make wi\")\n\n mstore(add(memPtr, 32), \"thdrawals\")\n\n }\n\n function store_literal_in_memory_ca3c24339a7da078ea968511f604017cc3c97e5aeb3b1f52ef205f639cf26654(memPtr) {\n\n mstore(add(memPtr, 0), \"You must be the owner to set the\")\n\n mstore(add(memPtr, 32), \" name of the bank\")\n\n }\n\n function store_literal_in_memory_df3ff31f2116ba8d006a221f6e4f26b98c1ecbe498256ab3dd9617da30390c2e(memPtr) {\n\n mstore(add(memPtr, 0), \"You must be the owner of the ban\")\n\n mstore(add(memPtr, 32), \"k to see all balances.\")\n\n }\n\n function validator_revert_t_address(value) {\n if iszero(eq(value, cleanup_t_address(value))) { revert(0, 0) }\n }\n\n function validator_revert_t_address_payable(value) {\n if iszero(eq(value, cleanup_t_address_payable(value))) { revert(0, 0) }\n }\n\n function validator_revert_t_uint256(value) {\n if iszero(eq(value, cleanup_t_uint256(value))) { revert(0, 0) }\n }\n\n}\n", + "id": 1, + "language": "Yul", + "name": "#utility.yul" + } + ], + "immutableReferences": {}, + "linkReferences": {}, + "object": "60806040526004361061007b5760003560e01c80637b83b50b1161004e5780637b83b50b1461011b578063a853409a14610146578063e147aaa714610171578063f274c8971461019c5761007b565b806316c05aa21461008057806327d358011461008a57806337ebe47b146100b557806370142690146100f2575b600080fd5b6100886101c5565b005b34801561009657600080fd5b5061009f610318565b6040516100ac9190610ae1565b60405180910390f35b3480156100c157600080fd5b506100dc60048036038101906100d7919061091a565b6103a6565b6040516100e99190610ba3565b60405180910390f35b3480156100fe57600080fd5b506101196004803603810190610114919061097f565b6103be565b005b34801561012757600080fd5b50610130610466565b60405161013d9190610ba3565b60405180910390f35b34801561015257600080fd5b5061015b6104fd565b6040516101689190610ba3565b60405180910390f35b34801561017d57600080fd5b50610186610544565b6040516101939190610ac6565b60405180910390f35b3480156101a857600080fd5b506101c360048036038101906101be9190610943565b610568565b005b6000341415610209576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161020090610b23565b60405180910390fd5b34600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546102589190610c59565b925050819055503373ffffffffffffffffffffffffffffffffffffffff167f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a1534426040516102a7929190610bbe565b60405180910390a23073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f9ed053bb818ff08b8353cd46f78db1f0799f31c9e4458fdb425c10eccd2efc44344260405161030e929190610bbe565b60405180910390a3565b6001805461032590610d73565b80601f016020809104026020016040519081016040528092919081815260200182805461035190610d73565b801561039e5780601f106103735761010080835404028352916020019161039e565b820191906000526020600020905b81548152906001019060200180831161038157829003601f168201915b505050505081565b60026020528060005260406000206000915090505481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461044c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161044390610b63565b60405180910390fd5b80600190805190602001906104629291906107d0565b5050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146104f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104ee90610b83565b60405180910390fd5b47905090565b6000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146105f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105ed90610b43565b60405180910390fd5b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054811115610678576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161066f90610b03565b60405180910390fd5b80600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546106c79190610caf565b925050819055508173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610714573d6000803e3d6000fd5b503373ffffffffffffffffffffffffffffffffffffffff167ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b568824260405161075d929190610bbe565b60405180910390a23373ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167f9ed053bb818ff08b8353cd46f78db1f0799f31c9e4458fdb425c10eccd2efc4483426040516107c4929190610bbe565b60405180910390a35050565b8280546107dc90610d73565b90600052602060002090601f0160209004810192826107fe5760008555610845565b82601f1061081757805160ff1916838001178555610845565b82800160010185558215610845579182015b82811115610844578251825591602001919060010190610829565b5b5090506108529190610856565b5090565b5b8082111561086f576000816000905550600101610857565b5090565b600061088661088184610c0c565b610be7565b90508281526020810184848401111561089e57600080fd5b6108a9848285610d31565b509392505050565b6000813590506108c081610fff565b92915050565b6000813590506108d581611016565b92915050565b600082601f8301126108ec57600080fd5b81356108fc848260208601610873565b91505092915050565b6000813590506109148161102d565b92915050565b60006020828403121561092c57600080fd5b600061093a848285016108b1565b91505092915050565b6000806040838503121561095657600080fd5b6000610964858286016108c6565b925050602061097585828601610905565b9150509250929050565b60006020828403121561099157600080fd5b600082013567ffffffffffffffff8111156109ab57600080fd5b6109b7848285016108db565b91505092915050565b6109c981610ce3565b82525050565b60006109da82610c3d565b6109e48185610c48565b93506109f4818560208601610d40565b6109fd81610e63565b840191505092915050565b6000610a15602583610c48565b9150610a2082610e74565b604082019050919050565b6000610a38602983610c48565b9150610a4382610ec3565b604082019050919050565b6000610a5b602983610c48565b9150610a6682610f12565b604082019050919050565b6000610a7e603183610c48565b9150610a8982610f61565b604082019050919050565b6000610aa1603683610c48565b9150610aac82610fb0565b604082019050919050565b610ac081610d27565b82525050565b6000602082019050610adb60008301846109c0565b92915050565b60006020820190508181036000830152610afb81846109cf565b905092915050565b60006020820190508181036000830152610b1c81610a08565b9050919050565b60006020820190508181036000830152610b3c81610a2b565b9050919050565b60006020820190508181036000830152610b5c81610a4e565b9050919050565b60006020820190508181036000830152610b7c81610a71565b9050919050565b60006020820190508181036000830152610b9c81610a94565b9050919050565b6000602082019050610bb86000830184610ab7565b92915050565b6000604082019050610bd36000830185610ab7565b610be06020830184610ab7565b9392505050565b6000610bf1610c02565b9050610bfd8282610da5565b919050565b6000604051905090565b600067ffffffffffffffff821115610c2757610c26610e34565b5b610c3082610e63565b9050602081019050919050565b600081519050919050565b600082825260208201905092915050565b6000610c6482610d27565b9150610c6f83610d27565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115610ca457610ca3610dd6565b5b828201905092915050565b6000610cba82610d27565b9150610cc583610d27565b925082821015610cd857610cd7610dd6565b5b828203905092915050565b6000610cee82610d07565b9050919050565b6000610d0082610d07565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015610d5e578082015181840152602081019050610d43565b83811115610d6d576000848401525b50505050565b60006002820490506001821680610d8b57607f821691505b60208210811415610d9f57610d9e610e05565b5b50919050565b610dae82610e63565b810181811067ffffffffffffffff82111715610dcd57610dcc610e34565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f596f75206861766520696e7375666669656e742066756e647320746f2077697460008201527f6864726177000000000000000000000000000000000000000000000000000000602082015250565b7f596f75206e65656420746f206465706f73697420736f6d6520616d6f756e742060008201527f6f66206d6f6e6579210000000000000000000000000000000000000000000000602082015250565b7f596f75206d75737420626520746865206f776e657220746f206d616b6520776960008201527f746864726177616c730000000000000000000000000000000000000000000000602082015250565b7f596f75206d75737420626520746865206f776e657220746f207365742074686560008201527f206e616d65206f66207468652062616e6b000000000000000000000000000000602082015250565b7f596f75206d75737420626520746865206f776e6572206f66207468652062616e60008201527f6b20746f2073656520616c6c2062616c616e6365732e00000000000000000000602082015250565b61100881610ce3565b811461101357600080fd5b50565b61101f81610cf5565b811461102a57600080fd5b50565b61103681610d27565b811461104157600080fd5b5056fea2646970667358221220663b89433054af34babe152fd1be443e7fb8ada0bdb8b3591ae4b85aeadf181864736f6c63430008040033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x7B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7B83B50B GT PUSH2 0x4E JUMPI DUP1 PUSH4 0x7B83B50B EQ PUSH2 0x11B JUMPI DUP1 PUSH4 0xA853409A EQ PUSH2 0x146 JUMPI DUP1 PUSH4 0xE147AAA7 EQ PUSH2 0x171 JUMPI DUP1 PUSH4 0xF274C897 EQ PUSH2 0x19C JUMPI PUSH2 0x7B JUMP JUMPDEST DUP1 PUSH4 0x16C05AA2 EQ PUSH2 0x80 JUMPI DUP1 PUSH4 0x27D35801 EQ PUSH2 0x8A JUMPI DUP1 PUSH4 0x37EBE47B EQ PUSH2 0xB5 JUMPI DUP1 PUSH4 0x70142690 EQ PUSH2 0xF2 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x88 PUSH2 0x1C5 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x96 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x9F PUSH2 0x318 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xAC SWAP2 SWAP1 PUSH2 0xAE1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xDC PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xD7 SWAP2 SWAP1 PUSH2 0x91A JUMP JUMPDEST PUSH2 0x3A6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xE9 SWAP2 SWAP1 PUSH2 0xBA3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xFE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x119 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x114 SWAP2 SWAP1 PUSH2 0x97F JUMP JUMPDEST PUSH2 0x3BE JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x127 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x130 PUSH2 0x466 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x13D SWAP2 SWAP1 PUSH2 0xBA3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x152 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x15B PUSH2 0x4FD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x168 SWAP2 SWAP1 PUSH2 0xBA3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x17D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x186 PUSH2 0x544 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x193 SWAP2 SWAP1 PUSH2 0xAC6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C3 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1BE SWAP2 SWAP1 PUSH2 0x943 JUMP JUMPDEST PUSH2 0x568 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 CALLVALUE EQ ISZERO PUSH2 0x209 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x200 SWAP1 PUSH2 0xB23 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLVALUE PUSH1 0x2 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x258 SWAP2 SWAP1 PUSH2 0xC59 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x90890809C654F11D6E72A28FA60149770A0D11EC6C92319D6CEB2BB0A4EA1A15 CALLVALUE TIMESTAMP PUSH1 0x40 MLOAD PUSH2 0x2A7 SWAP3 SWAP2 SWAP1 PUSH2 0xBBE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 ADDRESS PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x9ED053BB818FF08B8353CD46F78DB1F0799F31C9E4458FDB425C10ECCD2EFC44 CALLVALUE TIMESTAMP PUSH1 0x40 MLOAD PUSH2 0x30E SWAP3 SWAP2 SWAP1 PUSH2 0xBBE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH2 0x325 SWAP1 PUSH2 0xD73 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x351 SWAP1 PUSH2 0xD73 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x39E JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x373 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x39E JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x381 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x20 MSTORE DUP1 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP2 POP SWAP1 POP SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x44C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x443 SWAP1 PUSH2 0xB63 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x1 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0x462 SWAP3 SWAP2 SWAP1 PUSH2 0x7D0 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x4F7 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4EE SWAP1 PUSH2 0xB83 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SELFBALANCE SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x2 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x5F6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5ED SWAP1 PUSH2 0xB43 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD DUP2 GT ISZERO PUSH2 0x678 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x66F SWAP1 PUSH2 0xB03 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x2 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x6C7 SWAP2 SWAP1 PUSH2 0xCAF JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8FC DUP3 SWAP1 DUP2 ISZERO MUL SWAP1 PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x714 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xF279E6A1F5E320CCA91135676D9CB6E44CA8A08C0B88342BCDB1144F6511B568 DUP3 TIMESTAMP PUSH1 0x40 MLOAD PUSH2 0x75D SWAP3 SWAP2 SWAP1 PUSH2 0xBBE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND ADDRESS PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x9ED053BB818FF08B8353CD46F78DB1F0799F31C9E4458FDB425C10ECCD2EFC44 DUP4 TIMESTAMP PUSH1 0x40 MLOAD PUSH2 0x7C4 SWAP3 SWAP2 SWAP1 PUSH2 0xBBE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH2 0x7DC SWAP1 PUSH2 0xD73 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH2 0x7FE JUMPI PUSH1 0x0 DUP6 SSTORE PUSH2 0x845 JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH2 0x817 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x845 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x845 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x844 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x829 JUMP JUMPDEST JUMPDEST POP SWAP1 POP PUSH2 0x852 SWAP2 SWAP1 PUSH2 0x856 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x86F JUMPI PUSH1 0x0 DUP2 PUSH1 0x0 SWAP1 SSTORE POP PUSH1 0x1 ADD PUSH2 0x857 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x886 PUSH2 0x881 DUP5 PUSH2 0xC0C JUMP JUMPDEST PUSH2 0xBE7 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 DUP5 DUP5 ADD GT ISZERO PUSH2 0x89E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8A9 DUP5 DUP3 DUP6 PUSH2 0xD31 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x8C0 DUP2 PUSH2 0xFFF JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x8D5 DUP2 PUSH2 0x1016 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x8EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x8FC DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x873 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x914 DUP2 PUSH2 0x102D JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x92C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x93A DUP5 DUP3 DUP6 ADD PUSH2 0x8B1 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x956 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x964 DUP6 DUP3 DUP7 ADD PUSH2 0x8C6 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x975 DUP6 DUP3 DUP7 ADD PUSH2 0x905 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x991 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x9AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9B7 DUP5 DUP3 DUP6 ADD PUSH2 0x8DB JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x9C9 DUP2 PUSH2 0xCE3 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9DA DUP3 PUSH2 0xC3D JUMP JUMPDEST PUSH2 0x9E4 DUP2 DUP6 PUSH2 0xC48 JUMP JUMPDEST SWAP4 POP PUSH2 0x9F4 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0xD40 JUMP JUMPDEST PUSH2 0x9FD DUP2 PUSH2 0xE63 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA15 PUSH1 0x25 DUP4 PUSH2 0xC48 JUMP JUMPDEST SWAP2 POP PUSH2 0xA20 DUP3 PUSH2 0xE74 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA38 PUSH1 0x29 DUP4 PUSH2 0xC48 JUMP JUMPDEST SWAP2 POP PUSH2 0xA43 DUP3 PUSH2 0xEC3 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA5B PUSH1 0x29 DUP4 PUSH2 0xC48 JUMP JUMPDEST SWAP2 POP PUSH2 0xA66 DUP3 PUSH2 0xF12 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA7E PUSH1 0x31 DUP4 PUSH2 0xC48 JUMP JUMPDEST SWAP2 POP PUSH2 0xA89 DUP3 PUSH2 0xF61 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xAA1 PUSH1 0x36 DUP4 PUSH2 0xC48 JUMP JUMPDEST SWAP2 POP PUSH2 0xAAC DUP3 PUSH2 0xFB0 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xAC0 DUP2 PUSH2 0xD27 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xADB PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x9C0 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0xAFB DUP2 DUP5 PUSH2 0x9CF JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0xB1C DUP2 PUSH2 0xA08 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0xB3C DUP2 PUSH2 0xA2B JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0xB5C DUP2 PUSH2 0xA4E JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0xB7C DUP2 PUSH2 0xA71 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0xB9C DUP2 PUSH2 0xA94 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xBB8 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xAB7 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0xBD3 PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0xAB7 JUMP JUMPDEST PUSH2 0xBE0 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0xAB7 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xBF1 PUSH2 0xC02 JUMP JUMPDEST SWAP1 POP PUSH2 0xBFD DUP3 DUP3 PUSH2 0xDA5 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0xC27 JUMPI PUSH2 0xC26 PUSH2 0xE34 JUMP JUMPDEST JUMPDEST PUSH2 0xC30 DUP3 PUSH2 0xE63 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC64 DUP3 PUSH2 0xD27 JUMP JUMPDEST SWAP2 POP PUSH2 0xC6F DUP4 PUSH2 0xD27 JUMP JUMPDEST SWAP3 POP DUP3 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SUB DUP3 GT ISZERO PUSH2 0xCA4 JUMPI PUSH2 0xCA3 PUSH2 0xDD6 JUMP JUMPDEST JUMPDEST DUP3 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCBA DUP3 PUSH2 0xD27 JUMP JUMPDEST SWAP2 POP PUSH2 0xCC5 DUP4 PUSH2 0xD27 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 LT ISZERO PUSH2 0xCD8 JUMPI PUSH2 0xCD7 PUSH2 0xDD6 JUMP JUMPDEST JUMPDEST DUP3 DUP3 SUB SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCEE DUP3 PUSH2 0xD07 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD00 DUP3 PUSH2 0xD07 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY PUSH1 0x0 DUP4 DUP4 ADD MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xD5E JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0xD43 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0xD6D JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x2 DUP3 DIV SWAP1 POP PUSH1 0x1 DUP3 AND DUP1 PUSH2 0xD8B JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 EQ ISZERO PUSH2 0xD9F JUMPI PUSH2 0xD9E PUSH2 0xE05 JUMP JUMPDEST JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xDAE DUP3 PUSH2 0xE63 JUMP JUMPDEST DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0xDCD JUMPI PUSH2 0xDCC PUSH2 0xE34 JUMP JUMPDEST JUMPDEST DUP1 PUSH1 0x40 MSTORE POP POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x596F75206861766520696E7375666669656E742066756E647320746F20776974 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6864726177000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH32 0x596F75206E65656420746F206465706F73697420736F6D6520616D6F756E7420 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6F66206D6F6E6579210000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH32 0x596F75206D75737420626520746865206F776E657220746F206D616B65207769 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x746864726177616C730000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH32 0x596F75206D75737420626520746865206F776E657220746F2073657420746865 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x206E616D65206F66207468652062616E6B000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH32 0x596F75206D75737420626520746865206F776E6572206F66207468652062616E PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6B20746F2073656520616C6C2062616C616E6365732E00000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH2 0x1008 DUP2 PUSH2 0xCE3 JUMP JUMPDEST DUP2 EQ PUSH2 0x1013 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x101F DUP2 PUSH2 0xCF5 JUMP JUMPDEST DUP2 EQ PUSH2 0x102A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x1036 DUP2 PUSH2 0xD27 JUMP JUMPDEST DUP2 EQ PUSH2 0x1041 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH7 0x3B89433054AF34 0xBA 0xBE ISZERO 0x2F 0xD1 0xBE DIFFICULTY RETURNDATACOPY PUSH32 0xB8ADA0BDB8B3591AE4B85AEADF181864736F6C63430008040033000000000000 ", + "sourceMap": "62:1840:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;515:314;;;:::i;:::-;;112:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;140:50;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;835:213;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1665:235;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1546:113;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;82:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1054:486;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;515:314;585:1;572:9;:14;;564:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;673:9;642:15;:27;658:10;642:27;;;;;;;;;;;;;;;;:40;;;;;;;:::i;:::-;;;;;;;;705:10;697:47;;;717:9;728:15;697:47;;;;;;;:::i;:::-;;;;;;;;788:4;759:63;;768:10;759:63;;;795:9;806:15;759:63;;;;;;;:::i;:::-;;;;;;;;515:314::o;112:22::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;140:50::-;;;;;;;;;;;;;;;;;:::o;835:213::-;931:9;;;;;;;;;;917:23;;:10;:23;;;896:119;;;;;;;;;;;;:::i;:::-;;;;;;;;;1036:5;1025:8;:16;;;;;;;;;;;;:::i;:::-;;835:213;:::o;1665:235::-;1712:7;1766:9;;;;;;;;;;;1752:23;;:10;:23;;;1731:124;;;;;;;;;;;;:::i;:::-;;;;;;;;;1872:21;1865:28;;1665:235;:::o;1546:113::-;1599:7;1625:15;:27;1641:10;1625:27;;;;;;;;;;;;;;;;1618:34;;1546:113;:::o;82:24::-;;;;;;;;;;;;:::o;1054:486::-;1150:9;;;;;;;;;;1136:23;;:10;:23;;;1128:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;1242:15;:27;1258:10;1242:27;;;;;;;;;;;;;;;;1232:6;:37;;1213:115;;;;;;;;;;;;:::i;:::-;;;;;;;;;1368:6;1337:15;:27;1353:10;1337:27;;;;;;;;;;;;;;;;:37;;;;;;;:::i;:::-;;;;;;;;1382:3;:12;;:20;1395:6;1382:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1424:10;1415:45;;;1436:6;1444:15;1415:45;;;;;;;:::i;:::-;;;;;;;;1497:10;1473:60;;1490:4;1473:60;;;1509:6;1517:15;1473:60;;;;;;;:::i;:::-;;;;;;;;1054:486;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;7:345:1:-;85:5;110:66;126:49;168:6;126:49;:::i;:::-;110:66;:::i;:::-;101:75;;199:6;192:5;185:21;237:4;230:5;226:16;275:3;266:6;261:3;257:16;254:25;251:2;;;292:1;289;282:12;251:2;305:41;339:6;334:3;329;305:41;:::i;:::-;91:261;;;;;;:::o;358:139::-;404:5;442:6;429:20;420:29;;458:33;485:5;458:33;:::i;:::-;410:87;;;;:::o;503:155::-;557:5;595:6;582:20;573:29;;611:41;646:5;611:41;:::i;:::-;563:95;;;;:::o;678:273::-;734:5;783:3;776:4;768:6;764:17;760:27;750:2;;801:1;798;791:12;750:2;841:6;828:20;866:79;941:3;933:6;926:4;918:6;914:17;866:79;:::i;:::-;857:88;;740:211;;;;;:::o;957:139::-;1003:5;1041:6;1028:20;1019:29;;1057:33;1084:5;1057:33;:::i;:::-;1009:87;;;;:::o;1102:262::-;1161:6;1210:2;1198:9;1189:7;1185:23;1181:32;1178:2;;;1226:1;1223;1216:12;1178:2;1269:1;1294:53;1339:7;1330:6;1319:9;1315:22;1294:53;:::i;:::-;1284:63;;1240:117;1168:196;;;;:::o;1370:423::-;1446:6;1454;1503:2;1491:9;1482:7;1478:23;1474:32;1471:2;;;1519:1;1516;1509:12;1471:2;1562:1;1587:61;1640:7;1631:6;1620:9;1616:22;1587:61;:::i;:::-;1577:71;;1533:125;1697:2;1723:53;1768:7;1759:6;1748:9;1744:22;1723:53;:::i;:::-;1713:63;;1668:118;1461:332;;;;;:::o;1799:375::-;1868:6;1917:2;1905:9;1896:7;1892:23;1888:32;1885:2;;;1933:1;1930;1923:12;1885:2;2004:1;1993:9;1989:17;1976:31;2034:18;2026:6;2023:30;2020:2;;;2066:1;2063;2056:12;2020:2;2094:63;2149:7;2140:6;2129:9;2125:22;2094:63;:::i;:::-;2084:73;;1947:220;1875:299;;;;:::o;2180:118::-;2267:24;2285:5;2267:24;:::i;:::-;2262:3;2255:37;2245:53;;:::o;2304:364::-;2392:3;2420:39;2453:5;2420:39;:::i;:::-;2475:71;2539:6;2534:3;2475:71;:::i;:::-;2468:78;;2555:52;2600:6;2595:3;2588:4;2581:5;2577:16;2555:52;:::i;:::-;2632:29;2654:6;2632:29;:::i;:::-;2627:3;2623:39;2616:46;;2396:272;;;;;:::o;2674:366::-;2816:3;2837:67;2901:2;2896:3;2837:67;:::i;:::-;2830:74;;2913:93;3002:3;2913:93;:::i;:::-;3031:2;3026:3;3022:12;3015:19;;2820:220;;;:::o;3046:366::-;3188:3;3209:67;3273:2;3268:3;3209:67;:::i;:::-;3202:74;;3285:93;3374:3;3285:93;:::i;:::-;3403:2;3398:3;3394:12;3387:19;;3192:220;;;:::o;3418:366::-;3560:3;3581:67;3645:2;3640:3;3581:67;:::i;:::-;3574:74;;3657:93;3746:3;3657:93;:::i;:::-;3775:2;3770:3;3766:12;3759:19;;3564:220;;;:::o;3790:366::-;3932:3;3953:67;4017:2;4012:3;3953:67;:::i;:::-;3946:74;;4029:93;4118:3;4029:93;:::i;:::-;4147:2;4142:3;4138:12;4131:19;;3936:220;;;:::o;4162:366::-;4304:3;4325:67;4389:2;4384:3;4325:67;:::i;:::-;4318:74;;4401:93;4490:3;4401:93;:::i;:::-;4519:2;4514:3;4510:12;4503:19;;4308:220;;;:::o;4534:118::-;4621:24;4639:5;4621:24;:::i;:::-;4616:3;4609:37;4599:53;;:::o;4658:222::-;4751:4;4789:2;4778:9;4774:18;4766:26;;4802:71;4870:1;4859:9;4855:17;4846:6;4802:71;:::i;:::-;4756:124;;;;:::o;4886:313::-;4999:4;5037:2;5026:9;5022:18;5014:26;;5086:9;5080:4;5076:20;5072:1;5061:9;5057:17;5050:47;5114:78;5187:4;5178:6;5114:78;:::i;:::-;5106:86;;5004:195;;;;:::o;5205:419::-;5371:4;5409:2;5398:9;5394:18;5386:26;;5458:9;5452:4;5448:20;5444:1;5433:9;5429:17;5422:47;5486:131;5612:4;5486:131;:::i;:::-;5478:139;;5376:248;;;:::o;5630:419::-;5796:4;5834:2;5823:9;5819:18;5811:26;;5883:9;5877:4;5873:20;5869:1;5858:9;5854:17;5847:47;5911:131;6037:4;5911:131;:::i;:::-;5903:139;;5801:248;;;:::o;6055:419::-;6221:4;6259:2;6248:9;6244:18;6236:26;;6308:9;6302:4;6298:20;6294:1;6283:9;6279:17;6272:47;6336:131;6462:4;6336:131;:::i;:::-;6328:139;;6226:248;;;:::o;6480:419::-;6646:4;6684:2;6673:9;6669:18;6661:26;;6733:9;6727:4;6723:20;6719:1;6708:9;6704:17;6697:47;6761:131;6887:4;6761:131;:::i;:::-;6753:139;;6651:248;;;:::o;6905:419::-;7071:4;7109:2;7098:9;7094:18;7086:26;;7158:9;7152:4;7148:20;7144:1;7133:9;7129:17;7122:47;7186:131;7312:4;7186:131;:::i;:::-;7178:139;;7076:248;;;:::o;7330:222::-;7423:4;7461:2;7450:9;7446:18;7438:26;;7474:71;7542:1;7531:9;7527:17;7518:6;7474:71;:::i;:::-;7428:124;;;;:::o;7558:332::-;7679:4;7717:2;7706:9;7702:18;7694:26;;7730:71;7798:1;7787:9;7783:17;7774:6;7730:71;:::i;:::-;7811:72;7879:2;7868:9;7864:18;7855:6;7811:72;:::i;:::-;7684:206;;;;;:::o;7896:129::-;7930:6;7957:20;;:::i;:::-;7947:30;;7986:33;8014:4;8006:6;7986:33;:::i;:::-;7937:88;;;:::o;8031:75::-;8064:6;8097:2;8091:9;8081:19;;8071:35;:::o;8112:308::-;8174:4;8264:18;8256:6;8253:30;8250:2;;;8286:18;;:::i;:::-;8250:2;8324:29;8346:6;8324:29;:::i;:::-;8316:37;;8408:4;8402;8398:15;8390:23;;8179:241;;;:::o;8426:99::-;8478:6;8512:5;8506:12;8496:22;;8485:40;;;:::o;8531:169::-;8615:11;8649:6;8644:3;8637:19;8689:4;8684:3;8680:14;8665:29;;8627:73;;;;:::o;8706:305::-;8746:3;8765:20;8783:1;8765:20;:::i;:::-;8760:25;;8799:20;8817:1;8799:20;:::i;:::-;8794:25;;8953:1;8885:66;8881:74;8878:1;8875:81;8872:2;;;8959:18;;:::i;:::-;8872:2;9003:1;9000;8996:9;8989:16;;8750:261;;;;:::o;9017:191::-;9057:4;9077:20;9095:1;9077:20;:::i;:::-;9072:25;;9111:20;9129:1;9111:20;:::i;:::-;9106:25;;9150:1;9147;9144:8;9141:2;;;9155:18;;:::i;:::-;9141:2;9200:1;9197;9193:9;9185:17;;9062:146;;;;:::o;9214:96::-;9251:7;9280:24;9298:5;9280:24;:::i;:::-;9269:35;;9259:51;;;:::o;9316:104::-;9361:7;9390:24;9408:5;9390:24;:::i;:::-;9379:35;;9369:51;;;:::o;9426:126::-;9463:7;9503:42;9496:5;9492:54;9481:65;;9471:81;;;:::o;9558:77::-;9595:7;9624:5;9613:16;;9603:32;;;:::o;9641:154::-;9725:6;9720:3;9715;9702:30;9787:1;9778:6;9773:3;9769:16;9762:27;9692:103;;;:::o;9801:307::-;9869:1;9879:113;9893:6;9890:1;9887:13;9879:113;;;9978:1;9973:3;9969:11;9963:18;9959:1;9954:3;9950:11;9943:39;9915:2;9912:1;9908:10;9903:15;;9879:113;;;10010:6;10007:1;10004:13;10001:2;;;10090:1;10081:6;10076:3;10072:16;10065:27;10001:2;9850:258;;;;:::o;10114:320::-;10158:6;10195:1;10189:4;10185:12;10175:22;;10242:1;10236:4;10232:12;10263:18;10253:2;;10319:4;10311:6;10307:17;10297:27;;10253:2;10381;10373:6;10370:14;10350:18;10347:38;10344:2;;;10400:18;;:::i;:::-;10344:2;10165:269;;;;:::o;10440:281::-;10523:27;10545:4;10523:27;:::i;:::-;10515:6;10511:40;10653:6;10641:10;10638:22;10617:18;10605:10;10602:34;10599:62;10596:2;;;10664:18;;:::i;:::-;10596:2;10704:10;10700:2;10693:22;10483:238;;;:::o;10727:180::-;10775:77;10772:1;10765:88;10872:4;10869:1;10862:15;10896:4;10893:1;10886:15;10913:180;10961:77;10958:1;10951:88;11058:4;11055:1;11048:15;11082:4;11079:1;11072:15;11099:180;11147:77;11144:1;11137:88;11244:4;11241:1;11234:15;11268:4;11265:1;11258:15;11285:102;11326:6;11377:2;11373:7;11368:2;11361:5;11357:14;11353:28;11343:38;;11333:54;;;:::o;11393:224::-;11533:34;11529:1;11521:6;11517:14;11510:58;11602:7;11597:2;11589:6;11585:15;11578:32;11499:118;:::o;11623:228::-;11763:34;11759:1;11751:6;11747:14;11740:58;11832:11;11827:2;11819:6;11815:15;11808:36;11729:122;:::o;11857:228::-;11997:34;11993:1;11985:6;11981:14;11974:58;12066:11;12061:2;12053:6;12049:15;12042:36;11963:122;:::o;12091:236::-;12231:34;12227:1;12219:6;12215:14;12208:58;12300:19;12295:2;12287:6;12283:15;12276:44;12197:130;:::o;12333:241::-;12473:34;12469:1;12461:6;12457:14;12450:58;12542:24;12537:2;12529:6;12525:15;12518:49;12439:135;:::o;12580:122::-;12653:24;12671:5;12653:24;:::i;:::-;12646:5;12643:35;12633:2;;12692:1;12689;12682:12;12633:2;12623:79;:::o;12708:138::-;12789:32;12815:5;12789:32;:::i;:::-;12782:5;12779:43;12769:2;;12836:1;12833;12826:12;12769:2;12759:87;:::o;12852:122::-;12925:24;12943:5;12925:24;:::i;:::-;12918:5;12915:35;12905:2;;12964:1;12961;12954:12;12905:2;12895:79;:::o" + }, + "methodIdentifiers": { + "bankName()": "27d35801", + "bankOwner()": "e147aaa7", + "customerBalance(address)": "37ebe47b", + "depositMoney()": "16c05aa2", + "getBankBalance()": "7b83b50b", + "getCustomerBalance()": "a853409a", + "setBankName(string)": "70142690", + "withdrawMoney(address,uint256)": "f274c897" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.4+commit.c7e474f2\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"customer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"Deposit\",\"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\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"customer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"Withdraw\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"bankName\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"bankOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"customerBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"depositMoney\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBankBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCustomerBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"}],\"name\":\"setBankName\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address payable\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_total\",\"type\":\"uint256\"}],\"name\":\"withdrawMoney\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/Bank.sol\":\"Bank\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/Bank.sol\":{\"keccak256\":\"0x8fb1809b745fb4085fb87d8f4a7639967d1905dc089a51f511d9338baba9ced2\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://b526a47687dcb39ee7a92cea1bcd6e3916176928c243d830f19c67185510543b\",\"dweb:/ipfs/QmUqFHeeBb39ZQrHpinUMJrN2pJcjpDiLML1rRvAuyibUn\"]}},\"version\":1}" + } + } + }, + "sources": { + "contracts/Bank.sol": { + "ast": { + "absolutePath": "contracts/Bank.sol", + "exportedSymbols": { + "Bank": [ + 195 + ] + }, + "id": 196, + "license": "GPL-3.0", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1, + "literals": [ + "solidity", + "^", + "0.8", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "37:23:0" + }, + { + "abstract": false, + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "fullyImplemented": true, + "id": 195, + "linearizedBaseContracts": [ + 195 + ], + "name": "Bank", + "nameLocation": "71:4:0", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "functionSelector": "e147aaa7", + "id": 3, + "mutability": "mutable", + "name": "bankOwner", + "nameLocation": "97:9:0", + "nodeType": "VariableDeclaration", + "scope": 195, + "src": "82:24:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "82:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "27d35801", + "id": 5, + "mutability": "mutable", + "name": "bankName", + "nameLocation": "126:8:0", + "nodeType": "VariableDeclaration", + "scope": 195, + "src": "112:22:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string" + }, + "typeName": { + "id": 4, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "112:6:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "37ebe47b", + "id": 9, + "mutability": "mutable", + "name": "customerBalance", + "nameLocation": "175:15:0", + "nodeType": "VariableDeclaration", + "scope": 195, + "src": "140:50:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "typeName": { + "id": 8, + "keyType": { + "id": 6, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "148:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "140:27:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueType": { + "id": 7, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "159:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "visibility": "public" + }, + { + "anonymous": false, + "id": 17, + "name": "Deposit", + "nameLocation": "203:7:0", + "nodeType": "EventDefinition", + "parameters": { + "id": 16, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11, + "indexed": true, + "mutability": "mutable", + "name": "customer", + "nameLocation": "227:8:0", + "nodeType": "VariableDeclaration", + "scope": 17, + "src": "211:24:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 10, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "211:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 13, + "indexed": false, + "mutability": "mutable", + "name": "amount", + "nameLocation": "245:6:0", + "nodeType": "VariableDeclaration", + "scope": 17, + "src": "237:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "237:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 15, + "indexed": false, + "mutability": "mutable", + "name": "timestamp", + "nameLocation": "261:9:0", + "nodeType": "VariableDeclaration", + "scope": 17, + "src": "253:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 14, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "253:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "210:61:0" + }, + "src": "197:75:0" + }, + { + "anonymous": false, + "id": 25, + "name": "Withdraw", + "nameLocation": "283:8:0", + "nodeType": "EventDefinition", + "parameters": { + "id": 24, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 19, + "indexed": true, + "mutability": "mutable", + "name": "customer", + "nameLocation": "308:8:0", + "nodeType": "VariableDeclaration", + "scope": 25, + "src": "292:24:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 18, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "292:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 21, + "indexed": false, + "mutability": "mutable", + "name": "amount", + "nameLocation": "326:6:0", + "nodeType": "VariableDeclaration", + "scope": 25, + "src": "318:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 20, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "318:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 23, + "indexed": false, + "mutability": "mutable", + "name": "timestamp", + "nameLocation": "342:9:0", + "nodeType": "VariableDeclaration", + "scope": 25, + "src": "334:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 22, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "334:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "291:61:0" + }, + "src": "277:76:0" + }, + { + "anonymous": false, + "id": 35, + "name": "Transfer", + "nameLocation": "364:8:0", + "nodeType": "EventDefinition", + "parameters": { + "id": 34, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 27, + "indexed": true, + "mutability": "mutable", + "name": "from", + "nameLocation": "389:4:0", + "nodeType": "VariableDeclaration", + "scope": 35, + "src": "373:20:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 26, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "373:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 29, + "indexed": true, + "mutability": "mutable", + "name": "to", + "nameLocation": "411:2:0", + "nodeType": "VariableDeclaration", + "scope": 35, + "src": "395:18:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 28, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "395:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 31, + "indexed": false, + "mutability": "mutable", + "name": "amount", + "nameLocation": "423:6:0", + "nodeType": "VariableDeclaration", + "scope": 35, + "src": "415:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 30, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "415:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 33, + "indexed": false, + "mutability": "mutable", + "name": "timestamp", + "nameLocation": "439:9:0", + "nodeType": "VariableDeclaration", + "scope": 35, + "src": "431:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 32, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "431:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "372:77:0" + }, + "src": "358:92:0" + }, + { + "body": { + "id": 43, + "nodeType": "Block", + "src": "470:39:0", + "statements": [ + { + "expression": { + "id": 41, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 38, + "name": "bankOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3, + "src": "480:9:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "expression": { + "id": 39, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "492:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 40, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "492:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "480:22:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 42, + "nodeType": "ExpressionStatement", + "src": "480:22:0" + } + ] + }, + "id": 44, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 36, + "nodeType": "ParameterList", + "parameters": [], + "src": "467:2:0" + }, + "returnParameters": { + "id": 37, + "nodeType": "ParameterList", + "parameters": [], + "src": "470:0:0" + }, + "scope": 195, + "src": "456:53:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 85, + "nodeType": "Block", + "src": "554:275:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 51, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 48, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "572:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 49, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "value", + "nodeType": "MemberAccess", + "src": "572:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 50, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "585:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "572:14:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "596f75206e65656420746f206465706f73697420736f6d6520616d6f756e74206f66206d6f6e657921", + "id": 52, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "588:43:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_1969bc7601ae3a62b4b405b91518f8d205069fe9c774945925a05a712356ffe1", + "typeString": "literal_string \"You need to deposit some amount of money!\"" + }, + "value": "You need to deposit some amount of money!" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_1969bc7601ae3a62b4b405b91518f8d205069fe9c774945925a05a712356ffe1", + "typeString": "literal_string \"You need to deposit some amount of money!\"" + } + ], + "id": 47, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "564:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 53, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "564:68:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 54, + "nodeType": "ExpressionStatement", + "src": "564:68:0" + }, + { + "expression": { + "id": 61, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 55, + "name": "customerBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9, + "src": "642:15:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 58, + "indexExpression": { + "expression": { + "id": 56, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "658:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 57, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "658:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "642:27:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "expression": { + "id": 59, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "673:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 60, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "value", + "nodeType": "MemberAccess", + "src": "673:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "642:40:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 62, + "nodeType": "ExpressionStatement", + "src": "642:40:0" + }, + { + "eventCall": { + "arguments": [ + { + "expression": { + "id": 64, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "705:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 65, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "705:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "expression": { + "id": 66, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "717:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 67, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "value", + "nodeType": "MemberAccess", + "src": "717:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "id": 68, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -4, + "src": "728:5:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 69, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "timestamp", + "nodeType": "MemberAccess", + "src": "728:15:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 63, + "name": "Deposit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17, + "src": "697:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256,uint256)" + } + }, + "id": 70, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "697:47:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 71, + "nodeType": "EmitStatement", + "src": "692:52:0" + }, + { + "eventCall": { + "arguments": [ + { + "expression": { + "id": 73, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "768:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 74, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "768:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "arguments": [ + { + "id": 77, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "788:4:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Bank_$195", + "typeString": "contract Bank" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Bank_$195", + "typeString": "contract Bank" + } + ], + "id": 76, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "780:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 75, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "780:7:0", + "typeDescriptions": {} + } + }, + "id": 78, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "780:13:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "expression": { + "id": 79, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "795:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 80, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "value", + "nodeType": "MemberAccess", + "src": "795:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "id": 81, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -4, + "src": "806:5:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 82, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "timestamp", + "nodeType": "MemberAccess", + "src": "806:15:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 72, + "name": "Transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 35, + "src": "759:8:0", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256,uint256)" + } + }, + "id": 83, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "759:63:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 84, + "nodeType": "EmitStatement", + "src": "754:68:0" + } + ] + }, + "functionSelector": "16c05aa2", + "id": 86, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "depositMoney", + "nameLocation": "524:12:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 45, + "nodeType": "ParameterList", + "parameters": [], + "src": "536:2:0" + }, + "returnParameters": { + "id": 46, + "nodeType": "ParameterList", + "parameters": [], + "src": "554:0:0" + }, + "scope": 195, + "src": "515:314:0", + "stateMutability": "payable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 103, + "nodeType": "Block", + "src": "886:162:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 95, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 92, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "917:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 93, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "917:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "id": 94, + "name": "bankOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3, + "src": "931:9:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "917:23:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "596f75206d75737420626520746865206f776e657220746f2073657420746865206e616d65206f66207468652062616e6b", + "id": 96, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "954:51:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ca3c24339a7da078ea968511f604017cc3c97e5aeb3b1f52ef205f639cf26654", + "typeString": "literal_string \"You must be the owner to set the name of the bank\"" + }, + "value": "You must be the owner to set the name of the bank" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_ca3c24339a7da078ea968511f604017cc3c97e5aeb3b1f52ef205f639cf26654", + "typeString": "literal_string \"You must be the owner to set the name of the bank\"" + } + ], + "id": 91, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "896:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 97, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "896:119:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 98, + "nodeType": "ExpressionStatement", + "src": "896:119:0" + }, + { + "expression": { + "id": 101, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 99, + "name": "bankName", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5, + "src": "1025:8:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 100, + "name": "_name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 88, + "src": "1036:5:0", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "src": "1025:16:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "id": 102, + "nodeType": "ExpressionStatement", + "src": "1025:16:0" + } + ] + }, + "functionSelector": "70142690", + "id": 104, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "setBankName", + "nameLocation": "844:11:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 89, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 88, + "mutability": "mutable", + "name": "_name", + "nameLocation": "870:5:0", + "nodeType": "VariableDeclaration", + "scope": 104, + "src": "856:19:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 87, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "856:6:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "855:21:0" + }, + "returnParameters": { + "id": 90, + "nodeType": "ParameterList", + "parameters": [], + "src": "886:0:0" + }, + "scope": 195, + "src": "835:213:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 162, + "nodeType": "Block", + "src": "1121:419:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 115, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 112, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "1136:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 113, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "1136:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "id": 114, + "name": "bankOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3, + "src": "1150:9:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "1136:23:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "596f75206d75737420626520746865206f776e657220746f206d616b65207769746864726177616c73", + "id": 116, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1161:43:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_bfa65412111432fce2362bbabad4114362afad846001e448f921d67e627d799e", + "typeString": "literal_string \"You must be the owner to make withdrawals\"" + }, + "value": "You must be the owner to make withdrawals" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_bfa65412111432fce2362bbabad4114362afad846001e448f921d67e627d799e", + "typeString": "literal_string \"You must be the owner to make withdrawals\"" + } + ], + "id": 111, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "1128:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 117, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1128:77:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 118, + "nodeType": "ExpressionStatement", + "src": "1128:77:0" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 125, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 120, + "name": "_total", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 108, + "src": "1232:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "baseExpression": { + "id": 121, + "name": "customerBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9, + "src": "1242:15:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 124, + "indexExpression": { + "expression": { + "id": 122, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "1258:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 123, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "1258:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1242:27:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1232:37:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "596f75206861766520696e7375666669656e742066756e647320746f207769746864726177", + "id": 126, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1281:39:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_18037f7671dff45aa59a05ea62cc9ff1b00d8c9d4210c3feb6299a750fd73ff5", + "typeString": "literal_string \"You have insuffient funds to withdraw\"" + }, + "value": "You have insuffient funds to withdraw" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_18037f7671dff45aa59a05ea62cc9ff1b00d8c9d4210c3feb6299a750fd73ff5", + "typeString": "literal_string \"You have insuffient funds to withdraw\"" + } + ], + "id": 119, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "1213:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 127, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1213:115:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 128, + "nodeType": "ExpressionStatement", + "src": "1213:115:0" + }, + { + "expression": { + "id": 134, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 129, + "name": "customerBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9, + "src": "1337:15:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 132, + "indexExpression": { + "expression": { + "id": 130, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "1353:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 131, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "1353:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "1337:27:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "-=", + "rightHandSide": { + "id": 133, + "name": "_total", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 108, + "src": "1368:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1337:37:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 135, + "nodeType": "ExpressionStatement", + "src": "1337:37:0" + }, + { + "expression": { + "arguments": [ + { + "id": 139, + "name": "_total", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 108, + "src": "1395:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 136, + "name": "_to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 106, + "src": "1382:3:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "id": 138, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transfer", + "nodeType": "MemberAccess", + "src": "1382:12:0", + "typeDescriptions": { + "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 140, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1382:20:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 141, + "nodeType": "ExpressionStatement", + "src": "1382:20:0" + }, + { + "eventCall": { + "arguments": [ + { + "expression": { + "id": 143, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "1424:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 144, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "1424:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 145, + "name": "_total", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 108, + "src": "1436:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "id": 146, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -4, + "src": "1444:5:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 147, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "timestamp", + "nodeType": "MemberAccess", + "src": "1444:15:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 142, + "name": "Withdraw", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 25, + "src": "1415:8:0", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256,uint256)" + } + }, + "id": 148, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1415:45:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 149, + "nodeType": "EmitStatement", + "src": "1410:50:0" + }, + { + "eventCall": { + "arguments": [ + { + "arguments": [ + { + "id": 153, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "1490:4:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Bank_$195", + "typeString": "contract Bank" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Bank_$195", + "typeString": "contract Bank" + } + ], + "id": 152, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1482:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 151, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1482:7:0", + "typeDescriptions": {} + } + }, + "id": 154, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1482:13:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "expression": { + "id": 155, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "1497:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 156, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "1497:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 157, + "name": "_total", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 108, + "src": "1509:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "id": 158, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -4, + "src": "1517:5:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 159, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "timestamp", + "nodeType": "MemberAccess", + "src": "1517:15:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 150, + "name": "Transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 35, + "src": "1473:8:0", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256,uint256)" + } + }, + "id": 160, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1473:60:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 161, + "nodeType": "EmitStatement", + "src": "1468:65:0" + } + ] + }, + "functionSelector": "f274c897", + "id": 163, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "withdrawMoney", + "nameLocation": "1063:13:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 109, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 106, + "mutability": "mutable", + "name": "_to", + "nameLocation": "1093:3:0", + "nodeType": "VariableDeclaration", + "scope": 163, + "src": "1077:19:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "typeName": { + "id": 105, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1077:15:0", + "stateMutability": "payable", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 108, + "mutability": "mutable", + "name": "_total", + "nameLocation": "1106:6:0", + "nodeType": "VariableDeclaration", + "scope": 163, + "src": "1098:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 107, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1098:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1076:37:0" + }, + "returnParameters": { + "id": 110, + "nodeType": "ParameterList", + "parameters": [], + "src": "1121:0:0" + }, + "scope": 195, + "src": "1054:486:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 173, + "nodeType": "Block", + "src": "1608:51:0", + "statements": [ + { + "expression": { + "baseExpression": { + "id": 168, + "name": "customerBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9, + "src": "1625:15:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 171, + "indexExpression": { + "expression": { + "id": 169, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "1641:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 170, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "1641:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1625:27:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 167, + "id": 172, + "nodeType": "Return", + "src": "1618:34:0" + } + ] + }, + "functionSelector": "a853409a", + "id": 174, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getCustomerBalance", + "nameLocation": "1555:18:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 164, + "nodeType": "ParameterList", + "parameters": [], + "src": "1573:2:0" + }, + "returnParameters": { + "id": 167, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 166, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 174, + "src": "1599:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 165, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1599:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1598:9:0" + }, + "scope": 195, + "src": "1546:113:0", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 193, + "nodeType": "Block", + "src": "1721:179:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 183, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 180, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "1752:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 181, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "1752:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "id": 182, + "name": "bankOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3, + "src": "1766:9:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "1752:23:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "596f75206d75737420626520746865206f776e6572206f66207468652062616e6b20746f2073656520616c6c2062616c616e6365732e", + "id": 184, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1789:56:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_df3ff31f2116ba8d006a221f6e4f26b98c1ecbe498256ab3dd9617da30390c2e", + "typeString": "literal_string \"You must be the owner of the bank to see all balances.\"" + }, + "value": "You must be the owner of the bank to see all balances." + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_df3ff31f2116ba8d006a221f6e4f26b98c1ecbe498256ab3dd9617da30390c2e", + "typeString": "literal_string \"You must be the owner of the bank to see all balances.\"" + } + ], + "id": 179, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "1731:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 185, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1731:124:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 186, + "nodeType": "ExpressionStatement", + "src": "1731:124:0" + }, + { + "expression": { + "expression": { + "arguments": [ + { + "id": 189, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "1880:4:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Bank_$195", + "typeString": "contract Bank" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Bank_$195", + "typeString": "contract Bank" + } + ], + "id": 188, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1872:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 187, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1872:7:0", + "typeDescriptions": {} + } + }, + "id": 190, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1872:13:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 191, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "balance", + "nodeType": "MemberAccess", + "src": "1872:21:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 178, + "id": 192, + "nodeType": "Return", + "src": "1865:28:0" + } + ] + }, + "functionSelector": "7b83b50b", + "id": 194, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getBankBalance", + "nameLocation": "1674:14:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 175, + "nodeType": "ParameterList", + "parameters": [], + "src": "1688:2:0" + }, + "returnParameters": { + "id": 178, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 177, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 194, + "src": "1712:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 176, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1712:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1711:9:0" + }, + "scope": 195, + "src": "1665:235:0", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + } + ], + "scope": 196, + "src": "62:1840:0", + "usedErrors": [] + } + ], + "src": "37:1866:0" + }, + "id": 0 + } + } + } +} diff --git a/hardhat/artifacts/contracts/Bank.sol/Bank.dbg.json b/hardhat/artifacts/contracts/Bank.sol/Bank.dbg.json new file mode 100644 index 0000000..8f678c2 --- /dev/null +++ b/hardhat/artifacts/contracts/Bank.sol/Bank.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../build-info/e2d3106846a5e5b3170e0e4487fc1766.json" +} diff --git a/hardhat/artifacts/contracts/Bank.sol/Bank.json b/hardhat/artifacts/contracts/Bank.sol/Bank.json new file mode 100644 index 0000000..15f17cb --- /dev/null +++ b/hardhat/artifacts/contracts/Bank.sol/Bank.json @@ -0,0 +1,206 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "Bank", + "sourceName": "contracts/Bank.sol", + "abi": [ + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "customer", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + } + ], + "name": "Deposit", + "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": "amount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "customer", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + } + ], + "name": "Withdraw", + "type": "event" + }, + { + "inputs": [], + "name": "bankName", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "bankOwner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "customerBalance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "depositMoney", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [], + "name": "getBankBalance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getCustomerBalance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "_name", + "type": "string" + } + ], + "name": "setBankName", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address payable", + "name": "_to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_total", + "type": "uint256" + } + ], + "name": "withdrawMoney", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061107a806100606000396000f3fe60806040526004361061007b5760003560e01c80637b83b50b1161004e5780637b83b50b1461011b578063a853409a14610146578063e147aaa714610171578063f274c8971461019c5761007b565b806316c05aa21461008057806327d358011461008a57806337ebe47b146100b557806370142690146100f2575b600080fd5b6100886101c5565b005b34801561009657600080fd5b5061009f610318565b6040516100ac9190610ae1565b60405180910390f35b3480156100c157600080fd5b506100dc60048036038101906100d7919061091a565b6103a6565b6040516100e99190610ba3565b60405180910390f35b3480156100fe57600080fd5b506101196004803603810190610114919061097f565b6103be565b005b34801561012757600080fd5b50610130610466565b60405161013d9190610ba3565b60405180910390f35b34801561015257600080fd5b5061015b6104fd565b6040516101689190610ba3565b60405180910390f35b34801561017d57600080fd5b50610186610544565b6040516101939190610ac6565b60405180910390f35b3480156101a857600080fd5b506101c360048036038101906101be9190610943565b610568565b005b6000341415610209576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161020090610b23565b60405180910390fd5b34600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546102589190610c59565b925050819055503373ffffffffffffffffffffffffffffffffffffffff167f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a1534426040516102a7929190610bbe565b60405180910390a23073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f9ed053bb818ff08b8353cd46f78db1f0799f31c9e4458fdb425c10eccd2efc44344260405161030e929190610bbe565b60405180910390a3565b6001805461032590610d73565b80601f016020809104026020016040519081016040528092919081815260200182805461035190610d73565b801561039e5780601f106103735761010080835404028352916020019161039e565b820191906000526020600020905b81548152906001019060200180831161038157829003601f168201915b505050505081565b60026020528060005260406000206000915090505481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461044c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161044390610b63565b60405180910390fd5b80600190805190602001906104629291906107d0565b5050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146104f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104ee90610b83565b60405180910390fd5b47905090565b6000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146105f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105ed90610b43565b60405180910390fd5b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054811115610678576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161066f90610b03565b60405180910390fd5b80600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546106c79190610caf565b925050819055508173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610714573d6000803e3d6000fd5b503373ffffffffffffffffffffffffffffffffffffffff167ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b568824260405161075d929190610bbe565b60405180910390a23373ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167f9ed053bb818ff08b8353cd46f78db1f0799f31c9e4458fdb425c10eccd2efc4483426040516107c4929190610bbe565b60405180910390a35050565b8280546107dc90610d73565b90600052602060002090601f0160209004810192826107fe5760008555610845565b82601f1061081757805160ff1916838001178555610845565b82800160010185558215610845579182015b82811115610844578251825591602001919060010190610829565b5b5090506108529190610856565b5090565b5b8082111561086f576000816000905550600101610857565b5090565b600061088661088184610c0c565b610be7565b90508281526020810184848401111561089e57600080fd5b6108a9848285610d31565b509392505050565b6000813590506108c081610fff565b92915050565b6000813590506108d581611016565b92915050565b600082601f8301126108ec57600080fd5b81356108fc848260208601610873565b91505092915050565b6000813590506109148161102d565b92915050565b60006020828403121561092c57600080fd5b600061093a848285016108b1565b91505092915050565b6000806040838503121561095657600080fd5b6000610964858286016108c6565b925050602061097585828601610905565b9150509250929050565b60006020828403121561099157600080fd5b600082013567ffffffffffffffff8111156109ab57600080fd5b6109b7848285016108db565b91505092915050565b6109c981610ce3565b82525050565b60006109da82610c3d565b6109e48185610c48565b93506109f4818560208601610d40565b6109fd81610e63565b840191505092915050565b6000610a15602583610c48565b9150610a2082610e74565b604082019050919050565b6000610a38602983610c48565b9150610a4382610ec3565b604082019050919050565b6000610a5b602983610c48565b9150610a6682610f12565b604082019050919050565b6000610a7e603183610c48565b9150610a8982610f61565b604082019050919050565b6000610aa1603683610c48565b9150610aac82610fb0565b604082019050919050565b610ac081610d27565b82525050565b6000602082019050610adb60008301846109c0565b92915050565b60006020820190508181036000830152610afb81846109cf565b905092915050565b60006020820190508181036000830152610b1c81610a08565b9050919050565b60006020820190508181036000830152610b3c81610a2b565b9050919050565b60006020820190508181036000830152610b5c81610a4e565b9050919050565b60006020820190508181036000830152610b7c81610a71565b9050919050565b60006020820190508181036000830152610b9c81610a94565b9050919050565b6000602082019050610bb86000830184610ab7565b92915050565b6000604082019050610bd36000830185610ab7565b610be06020830184610ab7565b9392505050565b6000610bf1610c02565b9050610bfd8282610da5565b919050565b6000604051905090565b600067ffffffffffffffff821115610c2757610c26610e34565b5b610c3082610e63565b9050602081019050919050565b600081519050919050565b600082825260208201905092915050565b6000610c6482610d27565b9150610c6f83610d27565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115610ca457610ca3610dd6565b5b828201905092915050565b6000610cba82610d27565b9150610cc583610d27565b925082821015610cd857610cd7610dd6565b5b828203905092915050565b6000610cee82610d07565b9050919050565b6000610d0082610d07565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015610d5e578082015181840152602081019050610d43565b83811115610d6d576000848401525b50505050565b60006002820490506001821680610d8b57607f821691505b60208210811415610d9f57610d9e610e05565b5b50919050565b610dae82610e63565b810181811067ffffffffffffffff82111715610dcd57610dcc610e34565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f596f75206861766520696e7375666669656e742066756e647320746f2077697460008201527f6864726177000000000000000000000000000000000000000000000000000000602082015250565b7f596f75206e65656420746f206465706f73697420736f6d6520616d6f756e742060008201527f6f66206d6f6e6579210000000000000000000000000000000000000000000000602082015250565b7f596f75206d75737420626520746865206f776e657220746f206d616b6520776960008201527f746864726177616c730000000000000000000000000000000000000000000000602082015250565b7f596f75206d75737420626520746865206f776e657220746f207365742074686560008201527f206e616d65206f66207468652062616e6b000000000000000000000000000000602082015250565b7f596f75206d75737420626520746865206f776e6572206f66207468652062616e60008201527f6b20746f2073656520616c6c2062616c616e6365732e00000000000000000000602082015250565b61100881610ce3565b811461101357600080fd5b50565b61101f81610cf5565b811461102a57600080fd5b50565b61103681610d27565b811461104157600080fd5b5056fea2646970667358221220663b89433054af34babe152fd1be443e7fb8ada0bdb8b3591ae4b85aeadf181864736f6c63430008040033", + "deployedBytecode": "0x60806040526004361061007b5760003560e01c80637b83b50b1161004e5780637b83b50b1461011b578063a853409a14610146578063e147aaa714610171578063f274c8971461019c5761007b565b806316c05aa21461008057806327d358011461008a57806337ebe47b146100b557806370142690146100f2575b600080fd5b6100886101c5565b005b34801561009657600080fd5b5061009f610318565b6040516100ac9190610ae1565b60405180910390f35b3480156100c157600080fd5b506100dc60048036038101906100d7919061091a565b6103a6565b6040516100e99190610ba3565b60405180910390f35b3480156100fe57600080fd5b506101196004803603810190610114919061097f565b6103be565b005b34801561012757600080fd5b50610130610466565b60405161013d9190610ba3565b60405180910390f35b34801561015257600080fd5b5061015b6104fd565b6040516101689190610ba3565b60405180910390f35b34801561017d57600080fd5b50610186610544565b6040516101939190610ac6565b60405180910390f35b3480156101a857600080fd5b506101c360048036038101906101be9190610943565b610568565b005b6000341415610209576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161020090610b23565b60405180910390fd5b34600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546102589190610c59565b925050819055503373ffffffffffffffffffffffffffffffffffffffff167f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a1534426040516102a7929190610bbe565b60405180910390a23073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f9ed053bb818ff08b8353cd46f78db1f0799f31c9e4458fdb425c10eccd2efc44344260405161030e929190610bbe565b60405180910390a3565b6001805461032590610d73565b80601f016020809104026020016040519081016040528092919081815260200182805461035190610d73565b801561039e5780601f106103735761010080835404028352916020019161039e565b820191906000526020600020905b81548152906001019060200180831161038157829003601f168201915b505050505081565b60026020528060005260406000206000915090505481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461044c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161044390610b63565b60405180910390fd5b80600190805190602001906104629291906107d0565b5050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146104f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104ee90610b83565b60405180910390fd5b47905090565b6000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146105f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105ed90610b43565b60405180910390fd5b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054811115610678576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161066f90610b03565b60405180910390fd5b80600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546106c79190610caf565b925050819055508173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610714573d6000803e3d6000fd5b503373ffffffffffffffffffffffffffffffffffffffff167ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b568824260405161075d929190610bbe565b60405180910390a23373ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167f9ed053bb818ff08b8353cd46f78db1f0799f31c9e4458fdb425c10eccd2efc4483426040516107c4929190610bbe565b60405180910390a35050565b8280546107dc90610d73565b90600052602060002090601f0160209004810192826107fe5760008555610845565b82601f1061081757805160ff1916838001178555610845565b82800160010185558215610845579182015b82811115610844578251825591602001919060010190610829565b5b5090506108529190610856565b5090565b5b8082111561086f576000816000905550600101610857565b5090565b600061088661088184610c0c565b610be7565b90508281526020810184848401111561089e57600080fd5b6108a9848285610d31565b509392505050565b6000813590506108c081610fff565b92915050565b6000813590506108d581611016565b92915050565b600082601f8301126108ec57600080fd5b81356108fc848260208601610873565b91505092915050565b6000813590506109148161102d565b92915050565b60006020828403121561092c57600080fd5b600061093a848285016108b1565b91505092915050565b6000806040838503121561095657600080fd5b6000610964858286016108c6565b925050602061097585828601610905565b9150509250929050565b60006020828403121561099157600080fd5b600082013567ffffffffffffffff8111156109ab57600080fd5b6109b7848285016108db565b91505092915050565b6109c981610ce3565b82525050565b60006109da82610c3d565b6109e48185610c48565b93506109f4818560208601610d40565b6109fd81610e63565b840191505092915050565b6000610a15602583610c48565b9150610a2082610e74565b604082019050919050565b6000610a38602983610c48565b9150610a4382610ec3565b604082019050919050565b6000610a5b602983610c48565b9150610a6682610f12565b604082019050919050565b6000610a7e603183610c48565b9150610a8982610f61565b604082019050919050565b6000610aa1603683610c48565b9150610aac82610fb0565b604082019050919050565b610ac081610d27565b82525050565b6000602082019050610adb60008301846109c0565b92915050565b60006020820190508181036000830152610afb81846109cf565b905092915050565b60006020820190508181036000830152610b1c81610a08565b9050919050565b60006020820190508181036000830152610b3c81610a2b565b9050919050565b60006020820190508181036000830152610b5c81610a4e565b9050919050565b60006020820190508181036000830152610b7c81610a71565b9050919050565b60006020820190508181036000830152610b9c81610a94565b9050919050565b6000602082019050610bb86000830184610ab7565b92915050565b6000604082019050610bd36000830185610ab7565b610be06020830184610ab7565b9392505050565b6000610bf1610c02565b9050610bfd8282610da5565b919050565b6000604051905090565b600067ffffffffffffffff821115610c2757610c26610e34565b5b610c3082610e63565b9050602081019050919050565b600081519050919050565b600082825260208201905092915050565b6000610c6482610d27565b9150610c6f83610d27565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115610ca457610ca3610dd6565b5b828201905092915050565b6000610cba82610d27565b9150610cc583610d27565b925082821015610cd857610cd7610dd6565b5b828203905092915050565b6000610cee82610d07565b9050919050565b6000610d0082610d07565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015610d5e578082015181840152602081019050610d43565b83811115610d6d576000848401525b50505050565b60006002820490506001821680610d8b57607f821691505b60208210811415610d9f57610d9e610e05565b5b50919050565b610dae82610e63565b810181811067ffffffffffffffff82111715610dcd57610dcc610e34565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f596f75206861766520696e7375666669656e742066756e647320746f2077697460008201527f6864726177000000000000000000000000000000000000000000000000000000602082015250565b7f596f75206e65656420746f206465706f73697420736f6d6520616d6f756e742060008201527f6f66206d6f6e6579210000000000000000000000000000000000000000000000602082015250565b7f596f75206d75737420626520746865206f776e657220746f206d616b6520776960008201527f746864726177616c730000000000000000000000000000000000000000000000602082015250565b7f596f75206d75737420626520746865206f776e657220746f207365742074686560008201527f206e616d65206f66207468652062616e6b000000000000000000000000000000602082015250565b7f596f75206d75737420626520746865206f776e6572206f66207468652062616e60008201527f6b20746f2073656520616c6c2062616c616e6365732e00000000000000000000602082015250565b61100881610ce3565b811461101357600080fd5b50565b61101f81610cf5565b811461102a57600080fd5b50565b61103681610d27565b811461104157600080fd5b5056fea2646970667358221220663b89433054af34babe152fd1be443e7fb8ada0bdb8b3591ae4b85aeadf181864736f6c63430008040033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/hardhat/contracts/Bank.sol b/hardhat/contracts/Bank.sol new file mode 100644 index 0000000..8f3a196 --- /dev/null +++ b/hardhat/contracts/Bank.sol @@ -0,0 +1,57 @@ +// SPDX-License-Identifier: GPL-3.0 + +pragma solidity ^0.8.0; + +contract Bank { + address public bankOwner; + string public bankName; + mapping(address => uint256) public customerBalance; + + event Deposit(address indexed customer, uint256 amount, uint256 timestamp); + event Withdraw(address indexed customer, uint256 amount, uint256 timestamp); + event Transfer(address indexed from, address indexed to, uint256 amount, uint256 timestamp); + + constructor() { + bankOwner = msg.sender; + } + + function depositMoney() public payable { + require(msg.value != 0, "You need to deposit some amount of money!"); + customerBalance[msg.sender] += msg.value; + emit Deposit(msg.sender, msg.value, block.timestamp); + emit Transfer(msg.sender, address(this), msg.value, block.timestamp); + } + + function setBankName(string memory _name) external { + require( + msg.sender == bankOwner, + "You must be the owner to set the name of the bank" + ); + bankName = _name; + } + + function withdrawMoney(address payable _to, uint256 _total) public { + require(msg.sender == bankOwner, "You must be the owner to make withdrawals"); + require( + _total <= customerBalance[msg.sender], + "You have insuffient funds to withdraw" + ); + + customerBalance[msg.sender] -= _total; + _to.transfer(_total); + emit Withdraw(msg.sender, _total, block.timestamp); + emit Transfer(address(this), msg.sender, _total, block.timestamp); + } + + function getCustomerBalance() external view returns (uint256) { + return customerBalance[msg.sender]; + } + + function getBankBalance() public view returns (uint256) { + require( + msg.sender == bankOwner, + "You must be the owner of the bank to see all balances." + ); + return address(this).balance; + } +} diff --git a/hardhat/hardhat.config.ts b/hardhat/hardhat.config.ts new file mode 100644 index 0000000..d1dbb8c --- /dev/null +++ b/hardhat/hardhat.config.ts @@ -0,0 +1,43 @@ +import * as dotenv from "dotenv"; + +import { HardhatUserConfig, task } from "hardhat/config"; +import "@nomiclabs/hardhat-etherscan"; +import "@nomiclabs/hardhat-waffle"; +import "@typechain/hardhat"; +import "hardhat-gas-reporter"; +import "solidity-coverage"; + +dotenv.config(); + +// This is a sample Hardhat task. To learn how to create your own go to +// https://hardhat.org/guides/create-task.html +task("accounts", "Prints the list of accounts", async (taskArgs, hre) => { + const accounts = await hre.ethers.getSigners(); + + for (const account of accounts) { + console.log(account.address); + } +}); + +// You need to export an object to set up your config +// Go to https://hardhat.org/config/ to learn more + +const config: HardhatUserConfig = { + solidity: "0.8.4", + networks: { + rinkeby: { + url: process.env.RINKEBY_URL || "", + accounts: + process.env.PRIVATE_KEY !== undefined ? [process.env.PRIVATE_KEY] : [], + }, + }, + gasReporter: { + enabled: process.env.REPORT_GAS !== undefined, + currency: "USD", + }, + etherscan: { + apiKey: process.env.ETHERSCAN_API_KEY, + }, +}; + +export default config; diff --git a/hardhat/package.json b/hardhat/package.json new file mode 100644 index 0000000..6d5e4f4 --- /dev/null +++ b/hardhat/package.json @@ -0,0 +1,44 @@ +{ + "name": "hardhat", + "version": "1.0.0", + "description": "This project demonstrates an advanced Hardhat use case, integrating other tools commonly used alongside Hardhat in the ecosystem.", + "main": ".eslintrc.js", + "directories": { + "test": "test" + }, + "scripts": { + "clean": "rm -rf artifacts && rm -rf typechain", + "compile": "hardhat compile", + "test": "hardhat test", + "verify:rinkeby": "hardhat verify --network rinkeby", + "deploy:rinkeby": "hardhat compile && hardhat run scripts/deploy.ts --network rinkeby" + }, + "keywords": [], + "author": "", + "license": "ISC", + "devDependencies": { + "@nomiclabs/hardhat-ethers": "^2.0.5", + "@nomiclabs/hardhat-etherscan": "^3.0.3", + "@nomiclabs/hardhat-waffle": "^2.0.3", + "@openzeppelin/test-helpers": "^0.5.15", + "@typechain/ethers-v5": "^7.2.0", + "@typechain/hardhat": "^2.3.1", + "@types/chai": "^4.3.0", + "@types/mocha": "^9.1.0", + "@types/node": "^12.20.46", + "chai": "^4.3.6", + "dotenv": "^10.0.0", + "eslint": "^7.32.0", + "ethereum-waffle": "^3.4.0", + "ethers": "^5.5.4", + "hardhat": "^2.9.1", + "solhint": "^3.3.7", + "ts-node": "^10.6.0", + "typechain": "^5.2.0", + "typescript": "^4.6.2" + }, + "dependencies": { + "hardhat-gas-reporter": "^1.0.8", + "solidity-coverage": "^0.7.20" + } +} diff --git a/hardhat/scripts/deploy.ts b/hardhat/scripts/deploy.ts new file mode 100644 index 0000000..0771930 --- /dev/null +++ b/hardhat/scripts/deploy.ts @@ -0,0 +1,30 @@ +// We require the Hardhat Runtime Environment explicitly here. This is optional +// but useful for running the script in a standalone fashion through `node