From b12033495ce80e98663a065c91ad9e456fe8102e Mon Sep 17 00:00:00 2001 From: ChrisD <18092467+ChristopherDedominici@users.noreply.github.com> Date: Mon, 11 Nov 2024 16:39:18 +0100 Subject: [PATCH 01/61] set up package --- .changeset/pre.json | 1 + pnpm-lock.yaml | 84 +++++++++++++++++-- v-next/hardhat-chai-matchers/.eslintrc.cjs | 3 + v-next/hardhat-chai-matchers/.gitignore | 5 ++ v-next/hardhat-chai-matchers/.prettierignore | 4 + v-next/hardhat-chai-matchers/LICENSE | 9 ++ v-next/hardhat-chai-matchers/README.md | 3 + v-next/hardhat-chai-matchers/package.json | 74 ++++++++++++++++ v-next/hardhat-chai-matchers/src/index.ts | 0 .../src/type-extensions.ts | 0 v-next/hardhat-chai-matchers/src/types.ts | 0 v-next/hardhat-chai-matchers/test/index.ts | 0 v-next/hardhat-chai-matchers/tsconfig.json | 20 +++++ 13 files changed, 196 insertions(+), 7 deletions(-) create mode 100644 v-next/hardhat-chai-matchers/.eslintrc.cjs create mode 100644 v-next/hardhat-chai-matchers/.gitignore create mode 100644 v-next/hardhat-chai-matchers/.prettierignore create mode 100644 v-next/hardhat-chai-matchers/LICENSE create mode 100644 v-next/hardhat-chai-matchers/README.md create mode 100644 v-next/hardhat-chai-matchers/package.json create mode 100644 v-next/hardhat-chai-matchers/src/index.ts create mode 100644 v-next/hardhat-chai-matchers/src/type-extensions.ts create mode 100644 v-next/hardhat-chai-matchers/src/types.ts create mode 100644 v-next/hardhat-chai-matchers/test/index.ts create mode 100644 v-next/hardhat-chai-matchers/tsconfig.json diff --git a/.changeset/pre.json b/.changeset/pre.json index 56ee4ec57a..63192bb611 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -20,6 +20,7 @@ "@nomicfoundation/hardhat-web3-v4": "1.0.0", "@nomicfoundation/example-project": "3.0.0", "@ignored/hardhat-vnext": "2.0.0", + "@ignored/hardhat-vnext-chai-matchers": "2.0.0", "@ignored/hardhat-vnext-errors": "2.0.0", "@ignored/hardhat-vnext-ethers": "2.0.0", "@ignored/hardhat-vnext-keystore": "2.0.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 90927f344a..4e4cd196b1 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1589,6 +1589,76 @@ importers: specifier: 7.7.1 version: 7.7.1(eslint@8.57.0)(typescript@5.5.4) + v-next/hardhat-chai-matchers: + dependencies: + '@ignored/hardhat-vnext': + specifier: workspace:^3.0.0-next.16 + version: link:../hardhat + '@ignored/hardhat-vnext-errors': + specifier: workspace:^3.0.0-next.15 + version: link:../hardhat-errors + '@ignored/hardhat-vnext-utils': + specifier: workspace:^3.0.0-next.15 + version: link:../hardhat-utils + devDependencies: + '@eslint-community/eslint-plugin-eslint-comments': + specifier: ^4.3.0 + version: 4.4.1(eslint@8.57.0) + '@ignored/hardhat-vnext-node-test-reporter': + specifier: workspace:^3.0.0-next.15 + version: link:../hardhat-node-test-reporter + '@nomicfoundation/hardhat-test-utils': + specifier: workspace:^ + version: link:../hardhat-test-utils + '@types/debug': + specifier: ^4.1.4 + version: 4.1.12 + '@types/node': + specifier: ^20.14.9 + version: 20.17.1 + '@typescript-eslint/eslint-plugin': + specifier: ^7.7.1 + version: 7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0)(typescript@5.5.4) + '@typescript-eslint/parser': + specifier: ^7.7.1 + version: 7.18.0(eslint@8.57.0)(typescript@5.5.4) + c8: + specifier: ^9.1.0 + version: 9.1.0 + eslint: + specifier: 8.57.0 + version: 8.57.0 + eslint-config-prettier: + specifier: 9.1.0 + version: 9.1.0(eslint@8.57.0) + eslint-import-resolver-typescript: + specifier: ^3.6.1 + version: 3.6.3(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint-plugin-import@2.29.1)(eslint@8.57.0) + eslint-plugin-import: + specifier: 2.29.1 + version: 2.29.1(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.0) + eslint-plugin-no-only-tests: + specifier: 3.1.0 + version: 3.1.0 + expect-type: + specifier: ^0.19.0 + version: 0.19.0 + prettier: + specifier: 3.2.5 + version: 3.2.5 + rimraf: + specifier: ^5.0.5 + version: 5.0.10 + tsx: + specifier: ^4.11.0 + version: 4.19.2 + typescript: + specifier: ~5.5.0 + version: 5.5.4 + typescript-eslint: + specifier: 7.7.1 + version: 7.7.1(eslint@8.57.0)(typescript@5.5.4) + v-next/hardhat-errors: dependencies: '@ignored/hardhat-vnext-utils': @@ -8106,7 +8176,7 @@ snapshots: '@types/bn.js@4.11.6': dependencies: - '@types/node': 20.17.1 + '@types/node': 22.8.5 '@types/bn.js@5.1.6': dependencies: @@ -8126,7 +8196,7 @@ snapshots: '@types/concat-stream@1.6.1': dependencies: - '@types/node': 20.17.1 + '@types/node': 22.8.5 '@types/debug@4.1.12': dependencies: @@ -8138,7 +8208,7 @@ snapshots: '@types/form-data@0.0.33': dependencies: - '@types/node': 20.17.1 + '@types/node': 22.8.5 '@types/fs-extra@5.1.0': dependencies: @@ -8205,7 +8275,7 @@ snapshots: '@types/pbkdf2@3.1.2': dependencies: - '@types/node': 20.17.1 + '@types/node': 22.8.5 '@types/prettier@2.7.3': {} @@ -8213,14 +8283,14 @@ snapshots: '@types/readable-stream@2.3.15': dependencies: - '@types/node': 20.17.1 + '@types/node': 22.8.5 safe-buffer: 5.1.2 '@types/resolve@1.20.6': {} '@types/secp256k1@4.0.6': dependencies: - '@types/node': 20.17.1 + '@types/node': 22.8.5 '@types/semver@6.2.7': {} @@ -8247,7 +8317,7 @@ snapshots: '@types/ws@8.5.3': dependencies: - '@types/node': 20.17.1 + '@types/node': 22.8.5 '@typescript-eslint/eslint-plugin@5.61.0(@typescript-eslint/parser@5.61.0(eslint@8.57.0)(typescript@5.0.4))(eslint@8.57.0)(typescript@5.0.4)': dependencies: diff --git a/v-next/hardhat-chai-matchers/.eslintrc.cjs b/v-next/hardhat-chai-matchers/.eslintrc.cjs new file mode 100644 index 0000000000..939317ab1c --- /dev/null +++ b/v-next/hardhat-chai-matchers/.eslintrc.cjs @@ -0,0 +1,3 @@ +const { createConfig } = require("../../config-v-next/eslint.cjs"); + +module.exports = createConfig(__filename); diff --git a/v-next/hardhat-chai-matchers/.gitignore b/v-next/hardhat-chai-matchers/.gitignore new file mode 100644 index 0000000000..6aa5402c62 --- /dev/null +++ b/v-next/hardhat-chai-matchers/.gitignore @@ -0,0 +1,5 @@ +# Node modules +/node_modules + +# Compilation output +/dist diff --git a/v-next/hardhat-chai-matchers/.prettierignore b/v-next/hardhat-chai-matchers/.prettierignore new file mode 100644 index 0000000000..dafdfc3e02 --- /dev/null +++ b/v-next/hardhat-chai-matchers/.prettierignore @@ -0,0 +1,4 @@ +/node_modules +/dist +/coverage +CHANGELOG.md diff --git a/v-next/hardhat-chai-matchers/LICENSE b/v-next/hardhat-chai-matchers/LICENSE new file mode 100644 index 0000000000..0781b4a819 --- /dev/null +++ b/v-next/hardhat-chai-matchers/LICENSE @@ -0,0 +1,9 @@ +MIT License + +Copyright (c) 2024 Nomic Foundation + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/v-next/hardhat-chai-matchers/README.md b/v-next/hardhat-chai-matchers/README.md new file mode 100644 index 0000000000..da470627a0 --- /dev/null +++ b/v-next/hardhat-chai-matchers/README.md @@ -0,0 +1,3 @@ +# Hardhat Chai Matchers + +This plugin adds Ethereum-specific capabilities to the [Chai](https://chaijs.com/) assertion library, making your smart contract tests easy to write and read. diff --git a/v-next/hardhat-chai-matchers/package.json b/v-next/hardhat-chai-matchers/package.json new file mode 100644 index 0000000000..9a7c38e0a9 --- /dev/null +++ b/v-next/hardhat-chai-matchers/package.json @@ -0,0 +1,74 @@ +{ + "name": "@ignored/hardhat-vnext-chai-matchers", + "version": "3.0.0-next.12", + "description": "Hardhat utils for testing", + "homepage": "https://github.com/nomicfoundation/hardhat/tree/v-next/v-next/hardhat-chai-matchers", + "repository": { + "type": "git", + "url": "https://github.com/NomicFoundation/hardhat", + "directory": "v-next/hardhat-chai-matchers" + }, + "author": "Nomic Foundation", + "license": "MIT", + "type": "module", + "types": "dist/src/index.d.ts", + "exports": { + ".": "./dist/src/index.js", + "./types": "./dist/src/types.js" + }, + "keywords": [ + "ethereum", + "smart-contracts", + "hardhat", + "testing" + ], + "scripts": { + "lint": "pnpm prettier --check && pnpm eslint", + "lint:fix": "pnpm prettier --write && pnpm eslint --fix", + "eslint": "eslint \"src/**/*.ts\" \"test/**/*.ts\"", + "prettier": "prettier \"**/*.{ts,js,md,json}\"", + "test": "node --import tsx/esm --test --test-reporter=@ignored/hardhat-vnext-node-test-reporter \"test/*.ts\" \"test/!(fixture-projects|helpers)/**/*.ts\"", + "test:only": "node --import tsx/esm --test --test-only --test-reporter=@ignored/hardhat-vnext-node-test-reporter \"test/*.ts\" \"test/!(fixture-projects|helpers)/**/*.ts\"", + "test:coverage": "c8 --reporter html --reporter text --all --exclude test --exclude src/internal/types.ts --exclude src/internal/ui/direct-user-interruption-manager.ts --src src node --import tsx/esm --test --test-reporter=@ignored/hardhat-vnext-node-test-reporter \"test/!(fixture-projects|helpers)/**/*.ts\"", + "pretest": "pnpm build", + "pretest:only": "pnpm build", + "build": "tsc --build .", + "prepublishOnly": "pnpm build", + "clean": "rimraf dist" + }, + "files": [ + "dist/src/", + "src/", + "CHANGELOG.md", + "LICENSE", + "README.md" + ], + "devDependencies": { + "@eslint-community/eslint-plugin-eslint-comments": "^4.3.0", + "@ignored/hardhat-vnext-node-test-reporter": "workspace:^3.0.0-next.15", + "@nomicfoundation/hardhat-test-utils": "workspace:^", + "@types/debug": "^4.1.4", + "@types/node": "^20.14.9", + "@typescript-eslint/eslint-plugin": "^7.7.1", + "@typescript-eslint/parser": "^7.7.1", + "c8": "^9.1.0", + "eslint": "8.57.0", + "eslint-config-prettier": "9.1.0", + "eslint-import-resolver-typescript": "^3.6.1", + "eslint-plugin-import": "2.29.1", + "eslint-plugin-no-only-tests": "3.1.0", + "expect-type": "^0.19.0", + "prettier": "3.2.5", + "rimraf": "^5.0.5", + "tsx": "^4.11.0", + "typescript": "~5.5.0", + "typescript-eslint": "7.7.1" + }, + "dependencies": { + "@ignored/hardhat-vnext-errors": "workspace:^3.0.0-next.15", + "@ignored/hardhat-vnext-utils": "workspace:^3.0.0-next.15" + }, + "peerDependencies": { + "@ignored/hardhat-vnext": "workspace:^3.0.0-next.16" + } +} diff --git a/v-next/hardhat-chai-matchers/src/index.ts b/v-next/hardhat-chai-matchers/src/index.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/v-next/hardhat-chai-matchers/src/type-extensions.ts b/v-next/hardhat-chai-matchers/src/type-extensions.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/v-next/hardhat-chai-matchers/src/types.ts b/v-next/hardhat-chai-matchers/src/types.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/v-next/hardhat-chai-matchers/test/index.ts b/v-next/hardhat-chai-matchers/test/index.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/v-next/hardhat-chai-matchers/tsconfig.json b/v-next/hardhat-chai-matchers/tsconfig.json new file mode 100644 index 0000000000..47b339df71 --- /dev/null +++ b/v-next/hardhat-chai-matchers/tsconfig.json @@ -0,0 +1,20 @@ +{ + "extends": "../../config-v-next/tsconfig.json", + "references": [ + { + "path": "../hardhat" + }, + { + "path": "../hardhat-errors" + }, + { + "path": "../hardhat-node-test-reporter" + }, + { + "path": "../hardhat-test-utils" + }, + { + "path": "../hardhat-utils" + } + ] +} From d8f4db5f923c7642ff462f7b2f7e6a1a755d4326 Mon Sep 17 00:00:00 2001 From: ChrisD <18092467+ChristopherDedominici@users.noreply.github.com> Date: Tue, 12 Nov 2024 14:05:16 +0100 Subject: [PATCH 02/61] package.json + entry point --- v-next/hardhat-chai-matchers/package.json | 9 +++++++-- .../src/internal/add-chai-matchers.ts | 8 ++++++++ 2 files changed, 15 insertions(+), 2 deletions(-) create mode 100644 v-next/hardhat-chai-matchers/src/internal/add-chai-matchers.ts diff --git a/v-next/hardhat-chai-matchers/package.json b/v-next/hardhat-chai-matchers/package.json index 9a7c38e0a9..3affbd0893 100644 --- a/v-next/hardhat-chai-matchers/package.json +++ b/v-next/hardhat-chai-matchers/package.json @@ -47,6 +47,7 @@ "@eslint-community/eslint-plugin-eslint-comments": "^4.3.0", "@ignored/hardhat-vnext-node-test-reporter": "workspace:^3.0.0-next.15", "@nomicfoundation/hardhat-test-utils": "workspace:^", + "@types/chai": "^4.2.0", "@types/debug": "^4.1.4", "@types/node": "^20.14.9", "@typescript-eslint/eslint-plugin": "^7.7.1", @@ -66,9 +67,13 @@ }, "dependencies": { "@ignored/hardhat-vnext-errors": "workspace:^3.0.0-next.15", - "@ignored/hardhat-vnext-utils": "workspace:^3.0.0-next.15" + "@ignored/hardhat-vnext-utils": "workspace:^3.0.0-next.15", + "@types/chai-as-promised": "^8.0.1", + "chai-as-promised": "^8.0.0" }, "peerDependencies": { - "@ignored/hardhat-vnext": "workspace:^3.0.0-next.16" + "@ignored/hardhat-vnext": "workspace:^3.0.0-next.16", + "chai": "^5.1.2", + "ethers": "^6.13.4" } } diff --git a/v-next/hardhat-chai-matchers/src/internal/add-chai-matchers.ts b/v-next/hardhat-chai-matchers/src/internal/add-chai-matchers.ts new file mode 100644 index 0000000000..fa3e784eb9 --- /dev/null +++ b/v-next/hardhat-chai-matchers/src/internal/add-chai-matchers.ts @@ -0,0 +1,8 @@ +import { use } from "chai"; +import chaiAsPromised from "chai-as-promised"; + +import "../types"; +import { hardhatChaiMatchers } from "./hardhatChaiMatchers.js"; + +use(hardhatChaiMatchers); +use(chaiAsPromised); From 0e75ca236bd5ce03ae632349a53032ed266d4235 Mon Sep 17 00:00:00 2001 From: ChrisD <18092467+ChristopherDedominici@users.noreply.github.com> Date: Tue, 12 Nov 2024 14:06:15 +0100 Subject: [PATCH 03/61] port "addressable" --- .../src/internal/addressable.ts | 86 +++++++++++++++++++ .../src/internal/hardhatChaiMatchers.ts | 38 ++++++++ .../src/internal/typed.ts | 9 ++ .../hardhat-chai-matchers/test/addressable.ts | 84 ++++++++++++++++++ 4 files changed, 217 insertions(+) create mode 100644 v-next/hardhat-chai-matchers/src/internal/addressable.ts create mode 100644 v-next/hardhat-chai-matchers/src/internal/hardhatChaiMatchers.ts create mode 100644 v-next/hardhat-chai-matchers/src/internal/typed.ts create mode 100644 v-next/hardhat-chai-matchers/test/addressable.ts diff --git a/v-next/hardhat-chai-matchers/src/internal/addressable.ts b/v-next/hardhat-chai-matchers/src/internal/addressable.ts new file mode 100644 index 0000000000..f5fa327228 --- /dev/null +++ b/v-next/hardhat-chai-matchers/src/internal/addressable.ts @@ -0,0 +1,86 @@ +import { assertHardhatInvariant } from "@ignored/hardhat-vnext-errors"; +import { isAddress, isAddressable } from "ethers"; + +import { tryDereference } from "./typed.js"; + +export function supportAddressable( + Assertion: Chai.AssertionStatic, + chaiUtils: Chai.ChaiUtils, +): void { + const equalsFunction = override("eq", "equal", "not equal", chaiUtils); + Assertion.overwriteMethod("equals", equalsFunction); + Assertion.overwriteMethod("equal", equalsFunction); + Assertion.overwriteMethod("eq", equalsFunction); +} + +type Methods = "eq"; + +function override( + method: Methods, + name: string, + negativeName: string, + chaiUtils: Chai.ChaiUtils, +) { + return (_super: (...args: any[]) => any) => + overwriteAddressableFunction(method, name, negativeName, _super, chaiUtils); +} + +// ethers's Addressable have a .getAddress() that returns a Promise. We don't want to deal with async here, +// so we are looking for a sync way of getting the address. If an address was recovered, it is returned as a string, +// otherwise undefined is returned. +function tryGetAddressSync(value: any): string | undefined { + value = tryDereference(value, "address"); + + if (isAddressable(value)) { + if ("address" in value) { + value = value.address; + } else { + assertHardhatInvariant( + "target" in value, + "target property should exist in value", + ); + value = value.target; + } + } + + if (isAddress(value)) { + return value; + } else { + return undefined; + } +} + +function overwriteAddressableFunction( + functionName: Methods, + readableName: string, + readableNegativeName: string, + _super: (...args: any[]) => any, + chaiUtils: Chai.ChaiUtils, +) { + return function (this: Chai.AssertionStatic, ...args: any[]) { + const [actualArg, message] = args; + const expectedFlag = chaiUtils.flag(this, "object"); + + if (message !== undefined) { + chaiUtils.flag(this, "message", message); + } + + const actual = tryGetAddressSync(actualArg); + const expected = tryGetAddressSync(expectedFlag); + if ( + functionName === "eq" && + expected !== undefined && + actual !== undefined + ) { + this.assert( + expected === actual, + `expected '${expected}' to ${readableName} '${actual}'.`, + `expected '${expected}' to ${readableNegativeName} '${actual}'.`, + actual.toString(), + expected.toString(), + ); + } else { + _super.apply(this, args); + } + }; +} diff --git a/v-next/hardhat-chai-matchers/src/internal/hardhatChaiMatchers.ts b/v-next/hardhat-chai-matchers/src/internal/hardhatChaiMatchers.ts new file mode 100644 index 0000000000..80bda52d87 --- /dev/null +++ b/v-next/hardhat-chai-matchers/src/internal/hardhatChaiMatchers.ts @@ -0,0 +1,38 @@ +import { supportAddressable } from "./addressable.js"; +// import { supportBigNumber } from "./big-number.js"; +// import { supportEmit } from "./emit"; +// import { supportHexEqual } from "./hexEqual"; +// import { supportProperAddress } from "./properAddress"; +// import { supportProperHex } from "./properHex"; +// import { supportProperPrivateKey } from "./properPrivateKey"; +// import { supportChangeEtherBalance } from "./changeEtherBalance"; +// import { supportChangeEtherBalances } from "./changeEtherBalances"; +// import { supportChangeTokenBalance } from "./changeTokenBalance"; +// import { supportReverted } from "./reverted/reverted"; +// import { supportRevertedWith } from "./reverted/revertedWith"; +// import { supportRevertedWithCustomError } from "./reverted/revertedWithCustomError"; +// import { supportRevertedWithPanic } from "./reverted/revertedWithPanic"; +// import { supportRevertedWithoutReason } from "./reverted/revertedWithoutReason"; +// import { supportWithArgs } from "./withArgs"; + +export function hardhatChaiMatchers( + chai: Chai.ChaiStatic, + chaiUtils: Chai.ChaiUtils, +): void { + supportAddressable(chai.Assertion, chaiUtils); + // supportBigNumber(chai.Assertion, chaiUtils); + // supportEmit(chai.Assertion, chaiUtils); + // supportHexEqual(chai.Assertion); + // supportProperAddress(chai.Assertion); + // supportProperHex(chai.Assertion); + // supportProperPrivateKey(chai.Assertion); + // supportChangeEtherBalance(chai.Assertion, chaiUtils); + // supportChangeEtherBalances(chai.Assertion, chaiUtils); + // supportChangeTokenBalance(chai.Assertion, chaiUtils); + // supportReverted(chai.Assertion, chaiUtils); + // supportRevertedWith(chai.Assertion, chaiUtils); + // supportRevertedWithCustomError(chai.Assertion, chaiUtils); + // supportRevertedWithPanic(chai.Assertion, chaiUtils); + // supportRevertedWithoutReason(chai.Assertion, chaiUtils); + // supportWithArgs(chai.Assertion, chaiUtils); +} diff --git a/v-next/hardhat-chai-matchers/src/internal/typed.ts b/v-next/hardhat-chai-matchers/src/internal/typed.ts new file mode 100644 index 0000000000..a8923d4cf8 --- /dev/null +++ b/v-next/hardhat-chai-matchers/src/internal/typed.ts @@ -0,0 +1,9 @@ +import { Typed } from "ethers"; + +export function tryDereference(value: any, type: string): any | undefined { + try { + return Typed.dereference(value, type); + } catch { + return undefined; + } +} diff --git a/v-next/hardhat-chai-matchers/test/addressable.ts b/v-next/hardhat-chai-matchers/test/addressable.ts new file mode 100644 index 0000000000..848858053e --- /dev/null +++ b/v-next/hardhat-chai-matchers/test/addressable.ts @@ -0,0 +1,84 @@ +import { describe, it } from "node:test"; + +import { AssertionError, expect } from "chai"; +import { ethers } from "ethers"; + +import "../src/internal/add-chai-matchers"; + +describe("Addressable matcher", () => { + const signer = ethers.Wallet.createRandom(); + const address = signer.address; + const contract = new ethers.Contract(address, []); + const typedAddress = ethers.Typed.address(address); + const typedSigner = ethers.Typed.address(signer); + const typedContract = ethers.Typed.address(contract); + + const otherSigner = ethers.Wallet.createRandom(); + const otherAddress = otherSigner.address; + const otherContract = new ethers.Contract(otherAddress, []); + const otherTypedAddress = ethers.Typed.address(otherAddress); + const otherTypedSigner = ethers.Typed.address(otherSigner); + const otherTypedContract = ethers.Typed.address(otherContract); + + const elements = [ + { name: "address", object: address, class: address }, + { name: "signer", object: signer, class: address }, + { name: "contract", object: contract, class: address }, + { name: "typed address", object: typedAddress, class: address }, + { name: "typed signer", object: typedSigner, class: address }, + { name: "typed contract", object: typedContract, class: address }, + { name: "other address", object: otherAddress, class: otherAddress }, + { name: "other signer", object: otherSigner, class: otherAddress }, + { name: "other contract", object: otherContract, class: otherAddress }, + { + name: "other typed address", + object: otherTypedAddress, + class: otherAddress, + }, + { + name: "other typed signer", + object: otherTypedSigner, + class: otherAddress, + }, + { + name: "other typed contract", + object: otherTypedContract, + class: otherAddress, + }, + ]; + + for (const el1 of elements) + for (const el2 of elements) { + const expectEqual = el1.class === el2.class; + + describe(`expect "${el1.name}" to equal "${el2.name}"`, () => { + if (expectEqual) { + it("should not revert", () => { + expect(el1.object).to.equal(el2.object); + }); + } else { + it("should revert", () => { + expect(() => expect(el1.object).to.equal(el2.object)).to.throw( + AssertionError, + `expected '${el1.class}' to equal '${el2.class}'.`, + ); + }); + } + }); + + describe(`expect "${el1.name}" to not equal "${el1.name}"`, () => { + if (expectEqual) { + it("should revert", () => { + expect(() => expect(el1.object).to.not.equal(el2.object)).to.throw( + AssertionError, + `expected '${el1.class}' to not equal '${el2.class}'.`, + ); + }); + } else { + it("should not revert", () => { + expect(el1.object).to.not.equal(el2.object); + }); + } + }); + } +}); From c5e2f79f465b6ca46a048511f4682d1e4abf2bdf Mon Sep 17 00:00:00 2001 From: ChrisD <18092467+ChristopherDedominici@users.noreply.github.com> Date: Tue, 12 Nov 2024 17:18:47 +0100 Subject: [PATCH 04/61] port "HexEqual" --- .../src/internal/hardhatChaiMatchers.ts | 4 +- .../src/internal/hexEqual.ts | 29 +++++++ v-next/hardhat-chai-matchers/test/hexEqual.ts | 81 +++++++++++++++++++ 3 files changed, 112 insertions(+), 2 deletions(-) create mode 100644 v-next/hardhat-chai-matchers/src/internal/hexEqual.ts create mode 100644 v-next/hardhat-chai-matchers/test/hexEqual.ts diff --git a/v-next/hardhat-chai-matchers/src/internal/hardhatChaiMatchers.ts b/v-next/hardhat-chai-matchers/src/internal/hardhatChaiMatchers.ts index 80bda52d87..e7752ae28c 100644 --- a/v-next/hardhat-chai-matchers/src/internal/hardhatChaiMatchers.ts +++ b/v-next/hardhat-chai-matchers/src/internal/hardhatChaiMatchers.ts @@ -1,7 +1,7 @@ import { supportAddressable } from "./addressable.js"; // import { supportBigNumber } from "./big-number.js"; // import { supportEmit } from "./emit"; -// import { supportHexEqual } from "./hexEqual"; +import { supportHexEqual } from "./hexEqual.js"; // import { supportProperAddress } from "./properAddress"; // import { supportProperHex } from "./properHex"; // import { supportProperPrivateKey } from "./properPrivateKey"; @@ -22,7 +22,7 @@ export function hardhatChaiMatchers( supportAddressable(chai.Assertion, chaiUtils); // supportBigNumber(chai.Assertion, chaiUtils); // supportEmit(chai.Assertion, chaiUtils); - // supportHexEqual(chai.Assertion); + supportHexEqual(chai.Assertion); // supportProperAddress(chai.Assertion); // supportProperHex(chai.Assertion); // supportProperPrivateKey(chai.Assertion); diff --git a/v-next/hardhat-chai-matchers/src/internal/hexEqual.ts b/v-next/hardhat-chai-matchers/src/internal/hexEqual.ts new file mode 100644 index 0000000000..0cd6774762 --- /dev/null +++ b/v-next/hardhat-chai-matchers/src/internal/hexEqual.ts @@ -0,0 +1,29 @@ +export function supportHexEqual(Assertion: Chai.AssertionStatic): void { + Assertion.addMethod("hexEqual", function (this: any, other: string) { + const subject = this._obj; + const isNegated = this.__flags.negate === true; + + // check that both values are proper hex strings + const isHex = (a: string) => /^0x[0-9a-fA-F]*$/.test(a); + for (const element of [subject, other]) { + if (!isHex(element)) { + this.assert( + isNegated, // trick to make this assertion always fail + `Expected "${subject}" to be a hex string equal to "${other}", but "${element}" is not a valid hex string`, + `Expected "${subject}" not to be a hex string equal to "${other}", but "${element}" is not a valid hex string`, + ); + } + } + + // compare values + const extractNumeric = (hex: string) => hex.replace(/^0x0*/, ""); + this.assert( + extractNumeric(subject.toLowerCase()) === + extractNumeric(other.toLowerCase()), + `Expected "${subject}" to be a hex string equal to "${other}"`, + `Expected "${subject}" NOT to be a hex string equal to "${other}", but it was`, + `Hex string representing the same number as ${other}`, + subject, + ); + }); +} diff --git a/v-next/hardhat-chai-matchers/test/hexEqual.ts b/v-next/hardhat-chai-matchers/test/hexEqual.ts new file mode 100644 index 0000000000..f2c081322d --- /dev/null +++ b/v-next/hardhat-chai-matchers/test/hexEqual.ts @@ -0,0 +1,81 @@ +import { describe, it } from "node:test"; + +import { AssertionError, expect } from "chai"; + +import "../src/internal/add-chai-matchers"; + +describe("UNIT: hexEqual", () => { + it("0xAB equals 0xab", () => { + expect("0xAB").to.hexEqual("0xab"); + }); + + it("0xAB does not equal 0xabc", () => { + expect("0xAB").to.not.hexEqual("0xabc"); + }); + + it("0x0010ab equals 0x000010ab", () => { + expect("0x0010ab").to.hexEqual("0x000010ab"); + }); + + it("0x0000010AB does not equal 0x0010abc", () => { + expect("0x0000010AB").to.not.hexEqual("0x0010abc"); + }); + + it("0x edge case", () => { + expect("0x").to.hexEqual("0x000000"); + }); + + it("abc is not a hex string", () => { + expect(() => expect("abc").to.hexEqual("0xabc")).to.throw( + AssertionError, + 'Expected "abc" to be a hex string equal to "0xabc", but "abc" is not a valid hex string', + ); + expect(() => expect("0xabc").to.hexEqual("abc")).to.throw( + AssertionError, + 'Expected "0xabc" to be a hex string equal to "abc", but "abc" is not a valid hex string', + ); + expect(() => expect("abc").to.not.hexEqual("0xabc")).to.throw( + AssertionError, + 'Expected "abc" not to be a hex string equal to "0xabc", but "abc" is not a valid hex string', + ); + expect(() => expect("0xabc").to.not.hexEqual("abc")).to.throw( + AssertionError, + 'Expected "0xabc" not to be a hex string equal to "abc", but "abc" is not a valid hex string', + ); + }); + + it("xyz is not a hex string", () => { + expect(() => expect("xyz").to.hexEqual("0x1A4")).to.throw( + AssertionError, + 'Expected "xyz" to be a hex string equal to "0x1A4", but "xyz" is not a valid hex string', + ); + }); + + it("0xyz is not a hex string", () => { + expect(() => expect("0xyz").to.hexEqual("0x1A4")).to.throw( + AssertionError, + 'Expected "0xyz" to be a hex string equal to "0x1A4", but "0xyz" is not a valid hex string', + ); + }); + + it("empty string is not a hex string", () => { + expect(() => expect("").to.hexEqual("0x0")).to.throw( + AssertionError, + 'Expected "" to be a hex string equal to "0x0", but "" is not a valid hex string', + ); + }); + + it("correct error when strings are not equal", async function () { + expect(() => expect("0xa").to.hexEqual("0xb")).to.throw( + AssertionError, + 'Expected "0xa" to be a hex string equal to "0xb"', + ); + }); + + it("correct error when strings are equal but expected not to", async function () { + expect(() => expect("0xa").not.to.hexEqual("0xa")).to.throw( + AssertionError, + 'Expected "0xa" NOT to be a hex string equal to "0xa", but it was', + ); + }); +}); From 8c44b93bcae42e4d38db2ba4d7ad4a27ca83945f Mon Sep 17 00:00:00 2001 From: ChrisD <18092467+ChristopherDedominici@users.noreply.github.com> Date: Tue, 12 Nov 2024 17:25:38 +0100 Subject: [PATCH 05/61] port "properAddress" --- .../src/internal/hardhatChaiMatchers.ts | 4 +- .../src/internal/properAddress.ts | 12 +++++ .../test/properAddress.ts | 44 +++++++++++++++++++ 3 files changed, 58 insertions(+), 2 deletions(-) create mode 100644 v-next/hardhat-chai-matchers/src/internal/properAddress.ts create mode 100644 v-next/hardhat-chai-matchers/test/properAddress.ts diff --git a/v-next/hardhat-chai-matchers/src/internal/hardhatChaiMatchers.ts b/v-next/hardhat-chai-matchers/src/internal/hardhatChaiMatchers.ts index e7752ae28c..b44b767f78 100644 --- a/v-next/hardhat-chai-matchers/src/internal/hardhatChaiMatchers.ts +++ b/v-next/hardhat-chai-matchers/src/internal/hardhatChaiMatchers.ts @@ -2,7 +2,7 @@ import { supportAddressable } from "./addressable.js"; // import { supportBigNumber } from "./big-number.js"; // import { supportEmit } from "./emit"; import { supportHexEqual } from "./hexEqual.js"; -// import { supportProperAddress } from "./properAddress"; +import { supportProperAddress } from "./properAddress.js"; // import { supportProperHex } from "./properHex"; // import { supportProperPrivateKey } from "./properPrivateKey"; // import { supportChangeEtherBalance } from "./changeEtherBalance"; @@ -23,7 +23,7 @@ export function hardhatChaiMatchers( // supportBigNumber(chai.Assertion, chaiUtils); // supportEmit(chai.Assertion, chaiUtils); supportHexEqual(chai.Assertion); - // supportProperAddress(chai.Assertion); + supportProperAddress(chai.Assertion); // supportProperHex(chai.Assertion); // supportProperPrivateKey(chai.Assertion); // supportChangeEtherBalance(chai.Assertion, chaiUtils); diff --git a/v-next/hardhat-chai-matchers/src/internal/properAddress.ts b/v-next/hardhat-chai-matchers/src/internal/properAddress.ts new file mode 100644 index 0000000000..9dc0cb4ccb --- /dev/null +++ b/v-next/hardhat-chai-matchers/src/internal/properAddress.ts @@ -0,0 +1,12 @@ +export function supportProperAddress(Assertion: Chai.AssertionStatic): void { + Assertion.addProperty("properAddress", function (this: any) { + const subject = this._obj; + this.assert( + /^0x[0-9a-fA-F]{40}$/.test(subject), + `Expected "${subject}" to be a proper address`, + `Expected "${subject}" NOT to be a proper address`, + "proper address (eg.: 0x1234567890123456789012345678901234567890)", + subject, + ); + }); +} diff --git a/v-next/hardhat-chai-matchers/test/properAddress.ts b/v-next/hardhat-chai-matchers/test/properAddress.ts new file mode 100644 index 0000000000..cc3a1204c0 --- /dev/null +++ b/v-next/hardhat-chai-matchers/test/properAddress.ts @@ -0,0 +1,44 @@ +/* eslint-disable @typescript-eslint/no-unused-expressions -- allow all the "expect" to be expressions */ + +import { describe, it } from "node:test"; + +import { expect, AssertionError } from "chai"; + +import "../src/internal/add-chai-matchers"; + +describe("Proper address", () => { + it("Expect to be proper address", async () => { + expect("0x28FAA621c3348823D6c6548981a19716bcDc740e").to.be.properAddress; + expect("0x846C66cf71C43f80403B51fE3906B3599D63336f").to.be.properAddress; + }); + + it("Expect not to be proper address", async () => { + expect("28FAA621c3348823D6c6548981a19716bcDc740e").not.to.be.properAddress; + expect("0x28FAA621c3348823D6c6548981a19716bcDc740").to.not.be.properAddress; + expect("0x846C66cf71C43f80403B51fE3906B3599D63336g").to.not.be + .properAddress; + expect("0x846C66cf71C43f80403B51fE3906B3599D6333-f").to.not.be + .properAddress; + }); + + it("Expect to throw if invalid address", async () => { + expect( + () => + expect("0x28FAA621c3348823D6c6548981a19716bcDc740").to.be.properAddress, + ).to.throw( + AssertionError, + 'Expected "0x28FAA621c3348823D6c6548981a19716bcDc740" to be a proper address', + ); + }); + + it("Expect to throw if negation with proper address)", async () => { + expect( + () => + expect("0x28FAA621c3348823D6c6548981a19716bcDc740e").not.to.be + .properAddress, + ).to.throw( + AssertionError, + 'Expected "0x28FAA621c3348823D6c6548981a19716bcDc740e" NOT to be a proper address', + ); + }); +}); From 36445b181f329596502dcfb0a6c64a00d84c8af3 Mon Sep 17 00:00:00 2001 From: ChrisD <18092467+ChristopherDedominici@users.noreply.github.com> Date: Tue, 12 Nov 2024 17:34:26 +0100 Subject: [PATCH 06/61] port "properHex" --- .../src/internal/hardhatChaiMatchers.ts | 4 +- .../src/internal/properHex.ts | 29 ++++++++++ .../hardhat-chai-matchers/test/properHex.ts | 56 +++++++++++++++++++ 3 files changed, 87 insertions(+), 2 deletions(-) create mode 100644 v-next/hardhat-chai-matchers/src/internal/properHex.ts create mode 100644 v-next/hardhat-chai-matchers/test/properHex.ts diff --git a/v-next/hardhat-chai-matchers/src/internal/hardhatChaiMatchers.ts b/v-next/hardhat-chai-matchers/src/internal/hardhatChaiMatchers.ts index b44b767f78..f8f82b7d00 100644 --- a/v-next/hardhat-chai-matchers/src/internal/hardhatChaiMatchers.ts +++ b/v-next/hardhat-chai-matchers/src/internal/hardhatChaiMatchers.ts @@ -3,7 +3,7 @@ import { supportAddressable } from "./addressable.js"; // import { supportEmit } from "./emit"; import { supportHexEqual } from "./hexEqual.js"; import { supportProperAddress } from "./properAddress.js"; -// import { supportProperHex } from "./properHex"; +import { supportProperHex } from "./properHex.js"; // import { supportProperPrivateKey } from "./properPrivateKey"; // import { supportChangeEtherBalance } from "./changeEtherBalance"; // import { supportChangeEtherBalances } from "./changeEtherBalances"; @@ -24,7 +24,7 @@ export function hardhatChaiMatchers( // supportEmit(chai.Assertion, chaiUtils); supportHexEqual(chai.Assertion); supportProperAddress(chai.Assertion); - // supportProperHex(chai.Assertion); + supportProperHex(chai.Assertion); // supportProperPrivateKey(chai.Assertion); // supportChangeEtherBalance(chai.Assertion, chaiUtils); // supportChangeEtherBalances(chai.Assertion, chaiUtils); diff --git a/v-next/hardhat-chai-matchers/src/internal/properHex.ts b/v-next/hardhat-chai-matchers/src/internal/properHex.ts new file mode 100644 index 0000000000..2be2ba895a --- /dev/null +++ b/v-next/hardhat-chai-matchers/src/internal/properHex.ts @@ -0,0 +1,29 @@ +export function supportProperHex(Assertion: Chai.AssertionStatic): void { + Assertion.addMethod("properHex", function (this: any, length: number) { + const subject = this._obj; + const isNegated = this.__flags.negate === true; + + const isHex = (a: string) => /^0x[0-9a-fA-F]*$/.test(a); + if (!isHex(subject)) { + this.assert( + isNegated, // trick to make this assertion always fail + `Expected "${subject}" to be a proper hex string, but it contains invalid (non-hex) characters`, + `Expected "${subject}" NOT to be a proper hex string, but it contains only valid hex characters`, + ); + } + + this.assert( + subject.length === length + 2, + `Expected "${subject}" to be a hex string of length ${ + length + 2 + } (the provided ${length} plus 2 more for the "0x" prefix), but its length is ${ + subject.length + }`, + `Expected "${subject}" NOT to be a hex string of length ${ + length + 2 + } (the provided ${length} plus 2 more for the "0x" prefix), but its length is ${ + subject.length + }`, + ); + }); +} diff --git a/v-next/hardhat-chai-matchers/test/properHex.ts b/v-next/hardhat-chai-matchers/test/properHex.ts new file mode 100644 index 0000000000..1f682a489f --- /dev/null +++ b/v-next/hardhat-chai-matchers/test/properHex.ts @@ -0,0 +1,56 @@ +import { describe, it } from "node:test"; + +import { AssertionError, expect } from "chai"; + +import "../src/internal/add-chai-matchers"; + +describe("properHex", function () { + it("should handle a successful positive case", function () { + expect("0xAB").to.be.properHex(2); + }); + + it("should handle a successful negative case", function () { + expect("0xab").to.not.be.properHex(3); + }); + + it("should handle a positive case failing because of an invalid length", function () { + const input = "0xABCDEF"; + const length = 99; + expect(() => expect(input).to.be.properHex(length)).to.throw( + AssertionError, + `Expected "${input}" to be a hex string of length ${ + length + 2 + } (the provided ${length} plus 2 more for the "0x" prefix), but its length is ${ + input.length + }`, + ); + }); + + it("should handle a positive case failing because of an invalid hex value", function () { + expect(() => expect("0xABCDEFG").to.be.properHex(8)).to.throw( + AssertionError, + 'Expected "0xABCDEFG" to be a proper hex string, but it contains invalid (non-hex) characters', + ); + }); + + it("should handle a negative case failing because of a valid length", function () { + const input = "0xab"; + const length = 2; + expect(() => expect(input).to.not.be.properHex(length)).to.throw( + AssertionError, + `Expected "${input}" NOT to be a hex string of length ${ + length + 2 + } (the provided ${length} plus 2 more for the "0x" prefix), but its length is ${ + input.length + }`, + ); + }); + + it("should handle a negative case failing because of an invalid hex value", function () { + const input = "0xabcdefg"; + expect(() => expect(input).to.not.be.properHex(8)).to.throw( + AssertionError, + `Expected "${input}" NOT to be a proper hex string, but it contains only valid hex characters`, + ); + }); +}); From cff78249bebce35075b65a92c9f0f2c9881e11e6 Mon Sep 17 00:00:00 2001 From: ChrisD <18092467+ChristopherDedominici@users.noreply.github.com> Date: Wed, 13 Nov 2024 14:12:52 +0100 Subject: [PATCH 07/61] add constants --- .../src/internal/constants.ts | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 v-next/hardhat-chai-matchers/src/internal/constants.ts diff --git a/v-next/hardhat-chai-matchers/src/internal/constants.ts b/v-next/hardhat-chai-matchers/src/internal/constants.ts new file mode 100644 index 0000000000..44022c9877 --- /dev/null +++ b/v-next/hardhat-chai-matchers/src/internal/constants.ts @@ -0,0 +1,15 @@ +// TODO: check if all are used + +export const ASSERTION_ABORTED = "hh-chai-matchers-assertion-aborted"; +export const PREVIOUS_MATCHER_NAME = "previousMatcherName"; + +export const CHANGE_ETHER_BALANCE_MATCHER = "changeEtherBalance"; +export const CHANGE_ETHER_BALANCES_MATCHER = "changeEtherBalances"; +export const CHANGE_TOKEN_BALANCE_MATCHER = "changeTokenBalance"; +export const CHANGE_TOKEN_BALANCES_MATCHER = "changeTokenBalances"; +export const EMIT_MATCHER = "emit"; +export const REVERTED_MATCHER = "reverted"; +export const REVERTED_WITH_MATCHER = "revertedWith"; +export const REVERTED_WITH_CUSTOM_ERROR_MATCHER = "revertedWithCustomError"; +export const REVERTED_WITH_PANIC_MATCHER = "revertedWithPanic"; +export const REVERTED_WITHOUT_REASON_MATCHER = "revertedWithoutReason"; From 2600a27f5c1b06c31da64757a40f2f5eb48b4a68 Mon Sep 17 00:00:00 2001 From: ChrisD <18092467+ChristopherDedominici@users.noreply.github.com> Date: Tue, 19 Nov 2024 13:36:39 +0100 Subject: [PATCH 08/61] code ported: tests are passing but the build is not. Code cleaning still needed --- pnpm-lock.yaml | 256 ++++ v-next/hardhat-chai-matchers/package.json | 8 +- .../src/internal/big-number.ts | 285 ++++ .../src/internal/changeEtherBalance.ts | 138 ++ .../src/internal/changeEtherBalances.ts | 187 +++ .../src/internal/changeTokenBalance.ts | 288 ++++ .../src/internal/emit.ts | 236 +++ .../src/internal/hardhatChaiMatchers.ts | 48 +- .../src/internal/misc/account.ts | 24 + .../src/internal/misc/balance.ts | 40 + .../src/internal/properPrivateKey.ts | 12 + .../src/internal/reverted/panic.ts | 36 + .../src/internal/reverted/reverted.ts | 164 +++ .../src/internal/reverted/revertedWith.ts | 100 ++ .../reverted/revertedWithCustomError.ts | 246 ++++ .../internal/reverted/revertedWithPanic.ts | 118 ++ .../reverted/revertedWithoutReason.ts | 73 + .../src/internal/reverted/utils.ts | 146 ++ .../src/internal/utils.ts | 215 +++ .../src/internal/withArgs.ts | 137 ++ v-next/hardhat-chai-matchers/src/panic.ts | 2 + v-next/hardhat-chai-matchers/src/types.ts | 66 + v-next/hardhat-chai-matchers/src/utils.ts | 57 + v-next/hardhat-chai-matchers/src/withArgs.ts | 1 + .../hardhat-chai-matchers/test/big-number.ts | 1281 +++++++++++++++++ .../test/changeEtherBalance.ts | 668 +++++++++ .../test/changeEtherBalances.ts | 529 +++++++ .../test/changeTokenBalance.ts | 971 +++++++++++++ .../hardhat-chai-matchers/test/contracts.ts | 146 ++ v-next/hardhat-chai-matchers/test/events.ts | 929 ++++++++++++ .../test/fixture-projects/.gitignore | 2 + .../contracts/ChangeEtherBalance.sol | 14 + .../hardhat-project/contracts/Events.sol | 133 ++ .../hardhat-project/contracts/Matchers.sol | 137 ++ .../hardhat-project/contracts/Token.sol | 54 + .../hardhat-project/hardhat.config.js | 13 + .../hardhat-project/start-node.js | 14 + v-next/hardhat-chai-matchers/test/helpers.ts | 123 ++ v-next/hardhat-chai-matchers/test/hexEqual.ts | 4 +- v-next/hardhat-chai-matchers/test/panic.ts | 18 + .../hardhat-chai-matchers/test/properHex.ts | 14 +- .../test/properPrivateKey.ts | 48 + .../test/reverted/reverted.ts | 464 ++++++ .../test/reverted/revertedWith.ts | 277 ++++ .../test/reverted/revertedWithCustomError.ts | 562 ++++++++ .../test/reverted/revertedWithPanic.ts | 348 +++++ .../test/reverted/revertedWithoutReason.ts | 218 +++ v-next/hardhat-errors/src/descriptors.ts | 193 ++- 48 files changed, 10008 insertions(+), 35 deletions(-) create mode 100644 v-next/hardhat-chai-matchers/src/internal/big-number.ts create mode 100644 v-next/hardhat-chai-matchers/src/internal/changeEtherBalance.ts create mode 100644 v-next/hardhat-chai-matchers/src/internal/changeEtherBalances.ts create mode 100644 v-next/hardhat-chai-matchers/src/internal/changeTokenBalance.ts create mode 100644 v-next/hardhat-chai-matchers/src/internal/emit.ts create mode 100644 v-next/hardhat-chai-matchers/src/internal/misc/account.ts create mode 100644 v-next/hardhat-chai-matchers/src/internal/misc/balance.ts create mode 100644 v-next/hardhat-chai-matchers/src/internal/properPrivateKey.ts create mode 100644 v-next/hardhat-chai-matchers/src/internal/reverted/panic.ts create mode 100644 v-next/hardhat-chai-matchers/src/internal/reverted/reverted.ts create mode 100644 v-next/hardhat-chai-matchers/src/internal/reverted/revertedWith.ts create mode 100644 v-next/hardhat-chai-matchers/src/internal/reverted/revertedWithCustomError.ts create mode 100644 v-next/hardhat-chai-matchers/src/internal/reverted/revertedWithPanic.ts create mode 100644 v-next/hardhat-chai-matchers/src/internal/reverted/revertedWithoutReason.ts create mode 100644 v-next/hardhat-chai-matchers/src/internal/reverted/utils.ts create mode 100644 v-next/hardhat-chai-matchers/src/internal/utils.ts create mode 100644 v-next/hardhat-chai-matchers/src/internal/withArgs.ts create mode 100644 v-next/hardhat-chai-matchers/src/panic.ts create mode 100644 v-next/hardhat-chai-matchers/src/utils.ts create mode 100644 v-next/hardhat-chai-matchers/src/withArgs.ts create mode 100644 v-next/hardhat-chai-matchers/test/big-number.ts create mode 100644 v-next/hardhat-chai-matchers/test/changeEtherBalance.ts create mode 100644 v-next/hardhat-chai-matchers/test/changeEtherBalances.ts create mode 100644 v-next/hardhat-chai-matchers/test/changeTokenBalance.ts create mode 100644 v-next/hardhat-chai-matchers/test/contracts.ts create mode 100644 v-next/hardhat-chai-matchers/test/events.ts create mode 100644 v-next/hardhat-chai-matchers/test/fixture-projects/.gitignore create mode 100644 v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/contracts/ChangeEtherBalance.sol create mode 100644 v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/contracts/Events.sol create mode 100644 v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/contracts/Matchers.sol create mode 100644 v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/contracts/Token.sol create mode 100644 v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/hardhat.config.js create mode 100644 v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/start-node.js create mode 100644 v-next/hardhat-chai-matchers/test/helpers.ts create mode 100644 v-next/hardhat-chai-matchers/test/panic.ts create mode 100644 v-next/hardhat-chai-matchers/test/properPrivateKey.ts create mode 100644 v-next/hardhat-chai-matchers/test/reverted/reverted.ts create mode 100644 v-next/hardhat-chai-matchers/test/reverted/revertedWith.ts create mode 100644 v-next/hardhat-chai-matchers/test/reverted/revertedWithCustomError.ts create mode 100644 v-next/hardhat-chai-matchers/test/reverted/revertedWithPanic.ts create mode 100644 v-next/hardhat-chai-matchers/test/reverted/revertedWithoutReason.ts diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4e4cd196b1..f3b7eb46ae 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1597,9 +1597,36 @@ importers: '@ignored/hardhat-vnext-errors': specifier: workspace:^3.0.0-next.15 version: link:../hardhat-errors + '@ignored/hardhat-vnext-ethers': + specifier: workspace:^3.0.0-next.12 + version: link:../hardhat-ethers '@ignored/hardhat-vnext-utils': specifier: workspace:^3.0.0-next.15 version: link:../hardhat-utils + '@nomicfoundation/hardhat-ethers': + specifier: ^3.0.8 + version: 3.0.8(ethers@6.13.4)(hardhat@2.22.15(ts-node@10.9.2(@types/node@20.17.1)(typescript@5.5.4))(typescript@5.5.4)) + '@types/chai-as-promised': + specifier: ^8.0.1 + version: 8.0.1 + chai: + specifier: ^5.1.2 + version: 5.1.2 + chai-as-promised: + specifier: ^8.0.0 + version: 8.0.0(chai@5.1.2) + deep-eql: + specifier: ^4.0.1 + version: 4.1.4 + ethers: + specifier: ^6.13.4 + version: 6.13.4 + hardhat: + specifier: ^2.22.15 + version: 2.22.15(ts-node@10.9.2(@types/node@20.17.1)(typescript@5.5.4))(typescript@5.5.4) + ordinal: + specifier: ^1.0.3 + version: 1.0.3 devDependencies: '@eslint-community/eslint-plugin-eslint-comments': specifier: ^4.3.0 @@ -1610,9 +1637,15 @@ importers: '@nomicfoundation/hardhat-test-utils': specifier: workspace:^ version: link:../hardhat-test-utils + '@types/chai': + specifier: ^4.2.0 + version: 4.3.20 '@types/debug': specifier: ^4.1.4 version: 4.1.12 + '@types/deep-eql': + specifier: ^4.0.2 + version: 4.0.2 '@types/node': specifier: ^20.14.9 version: 20.17.1 @@ -3178,34 +3211,66 @@ packages: resolution: {integrity: sha512-Gm4wOPKhbDjGTIRyFA2QUAPfCXA1AHxYOKt3yLSGJkQkdy9a5WW+qtqKeEKHc/+4wpJSLtsGQfpzyIzggFfo/A==} engines: {node: '>= 18'} + '@nomicfoundation/edr-darwin-arm64@0.6.4': + resolution: {integrity: sha512-QNQErISLgssV9+qia8sIjRANqtbW8snSDvjspixT/kSQ5ZSGxxctTg7x72wPSrcu8+EBEveIe5uqENIp5GH8HQ==} + engines: {node: '>= 18'} + '@nomicfoundation/edr-darwin-x64@0.5.2': resolution: {integrity: sha512-ClyABq2dFCsrYEED3/UIO0c7p4H1/4vvlswFlqUyBpOkJccr75qIYvahOSJRM62WgUFRhbSS0OJXFRwc/PwmVg==} engines: {node: '>= 18'} + '@nomicfoundation/edr-darwin-x64@0.6.4': + resolution: {integrity: sha512-cjVmREiwByyc9+oGfvAh49IAw+oVJHF9WWYRD+Tm/ZlSpnEVWxrGNBak2bd/JSYjn+mZE7gmWS4SMRi4nKaLUg==} + engines: {node: '>= 18'} + '@nomicfoundation/edr-linux-arm64-gnu@0.5.2': resolution: {integrity: sha512-HWMTVk1iOabfvU2RvrKLDgtFjJZTC42CpHiw2h6rfpsgRqMahvIlx2jdjWYzFNy1jZKPTN1AStQ/91MRrg5KnA==} engines: {node: '>= 18'} + '@nomicfoundation/edr-linux-arm64-gnu@0.6.4': + resolution: {integrity: sha512-96o9kRIVD6W5VkgKvUOGpWyUGInVQ5BRlME2Fa36YoNsRQMaKtmYJEU0ACosYES6ZTpYC8U5sjMulvPtVoEfOA==} + engines: {node: '>= 18'} + '@nomicfoundation/edr-linux-arm64-musl@0.5.2': resolution: {integrity: sha512-CwsQ10xFx/QAD5y3/g5alm9+jFVuhc7uYMhrZAu9UVF+KtVjeCvafj0PaVsZ8qyijjqVuVsJ8hD1x5ob7SMcGg==} engines: {node: '>= 18'} + '@nomicfoundation/edr-linux-arm64-musl@0.6.4': + resolution: {integrity: sha512-+JVEW9e5plHrUfQlSgkEj/UONrIU6rADTEk+Yp9pbe+mzNkJdfJYhs5JYiLQRP4OjxH4QOrXI97bKU6FcEbt5Q==} + engines: {node: '>= 18'} + '@nomicfoundation/edr-linux-x64-gnu@0.5.2': resolution: {integrity: sha512-CWVCEdhWJ3fmUpzWHCRnC0/VLBDbqtqTGTR6yyY1Ep3S3BOrHEAvt7h5gx85r2vLcztisu2vlDq51auie4IU1A==} engines: {node: '>= 18'} + '@nomicfoundation/edr-linux-x64-gnu@0.6.4': + resolution: {integrity: sha512-nzYWW+fO3EZItOeP4CrdMgDXfaGBIBkKg0Y/7ySpUxLqzut40O4Mb0/+quqLAFkacUSWMlFp8nsmypJfOH5zoA==} + engines: {node: '>= 18'} + '@nomicfoundation/edr-linux-x64-musl@0.5.2': resolution: {integrity: sha512-+aJDfwhkddy2pP5u1ISg3IZVAm0dO836tRlDTFWtvvSMQ5hRGqPcWwlsbobhDQsIxhPJyT7phL0orCg5W3WMeA==} engines: {node: '>= 18'} + '@nomicfoundation/edr-linux-x64-musl@0.6.4': + resolution: {integrity: sha512-QFRoE9qSQ2boRrVeQ1HdzU+XN7NUgwZ1SIy5DQt4d7jCP+5qTNsq8LBNcqhRBOATgO63nsweNUhxX/Suj5r1Sw==} + engines: {node: '>= 18'} + '@nomicfoundation/edr-win32-x64-msvc@0.5.2': resolution: {integrity: sha512-CcvvuA3sAv7liFNPsIR/68YlH6rrybKzYttLlMr80d4GKJjwJ5OKb3YgE6FdZZnOfP19HEHhsLcE0DPLtY3r0w==} engines: {node: '>= 18'} + '@nomicfoundation/edr-win32-x64-msvc@0.6.4': + resolution: {integrity: sha512-2yopjelNkkCvIjUgBGhrn153IBPLwnsDeNiq6oA0WkeM8tGmQi4td+PGi9jAriUDAkc59Yoi2q9hYA6efiY7Zw==} + engines: {node: '>= 18'} + '@nomicfoundation/edr@0.5.2': resolution: {integrity: sha512-hW/iLvUQZNTVjFyX/I40rtKvvDOqUEyIi96T28YaLfmPL+3LW2lxmYLUXEJ6MI14HzqxDqrLyhf6IbjAa2r3Dw==} engines: {node: '>= 18'} + '@nomicfoundation/edr@0.6.4': + resolution: {integrity: sha512-YgrSuT3yo5ZQkbvBGqQ7hG+RDvz3YygSkddg4tb1Z0Y6pLXFzwrcEwWaJCFAVeeZxdxGfCgGMUYgRVneK+WXkw==} + engines: {node: '>= 18'} + '@nomicfoundation/ethereumjs-block@5.0.4': resolution: {integrity: sha512-AcyacJ9eX/uPEvqsPiB+WO1ymE+kyH48qGGiGV+YTojdtas8itUTW5dehDSOXEEItWGbbzEJ4PRqnQZlWaPvDw==} engines: {node: '>=18'} @@ -3240,6 +3305,12 @@ packages: c-kzg: optional: true + '@nomicfoundation/hardhat-ethers@3.0.8': + resolution: {integrity: sha512-zhOZ4hdRORls31DTOqg+GmEZM0ujly8GGIuRY7t7szEk2zW/arY1qDug/py8AEktT00v5K+b6RvbVog+va51IA==} + peerDependencies: + ethers: ^6.1.0 + hardhat: ^2.0.0 + '@nomicfoundation/hardhat-ignition-ethers@0.15.7': resolution: {integrity: sha512-pUZWQeFNMwDe6F/yKIJsCo+87elk/M/Edjp6AnWWIBplRyPa13Nh63+yOqMSSd9Mx9lLuBaEGnYXoI2Uz2wYZA==} peerDependencies: @@ -3436,6 +3507,9 @@ packages: '@types/debug@4.1.12': resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} + '@types/deep-eql@4.0.2': + resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==} + '@types/events@3.0.3': resolution: {integrity: sha512-trOc4AAUThEz9hapPtSd7wf5tiQKvTtu5b371UxXdTuqzIh0ArcRspRP0i0Viu+LXstIQ1z96t1nsPxT9ol01g==} @@ -3949,6 +4023,10 @@ packages: assertion-error@1.1.0: resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} + assertion-error@2.0.1: + resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} + engines: {node: '>=12'} + astral-regex@2.0.0: resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} engines: {node: '>=8'} @@ -4122,6 +4200,10 @@ packages: resolution: {integrity: sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==} engines: {node: '>=4'} + chai@5.1.2: + resolution: {integrity: sha512-aGtmf24DW6MLHHG5gCx4zaI3uBq3KRtxeVs0DjFH6Z0rDNbsvTxFASFvdj79pxjxZ8/5u3PIiN3IwEIQkiiuPw==} + engines: {node: '>=12'} + chalk@0.4.0: resolution: {integrity: sha512-sQfYDlfv2DGVtjdoQqxS0cEZDroyG8h6TamA6rvxwlrU5BaSLDx9xhatBYl2pxZ7gmpNaPFVwBtdGdu5rQ+tYQ==} engines: {node: '>=0.8.0'} @@ -4155,6 +4237,10 @@ packages: resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} engines: {node: '>= 8.10.0'} + chokidar@4.0.1: + resolution: {integrity: sha512-n8enUVCED/KVRQlab1hr3MVpcVMvxtZjmEa956u+4YijlmQED223XMSYj2tLuKvr4jcCTzNNMpQDUer72MMmzA==} + engines: {node: '>= 14.16.0'} + chownr@1.1.4: resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} @@ -4356,6 +4442,10 @@ packages: resolution: {integrity: sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==} engines: {node: '>=6'} + deep-eql@5.0.2: + resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} + engines: {node: '>=6'} + deep-extend@0.6.0: resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} engines: {node: '>=4.0.0'} @@ -4734,6 +4824,7 @@ packages: ethereumjs-abi@0.6.8: resolution: {integrity: sha512-Tx0r/iXI6r+lRsdvkFDlut0N08jWMnKRZ6Gkq+Nmw75lZe4e6o3EkSnkaBP5NF6+m5PTGAr9JP43N3LyeoglsA==} + deprecated: This library has been deprecated and usage is discouraged. ethereumjs-util@6.2.1: resolution: {integrity: sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw==} @@ -5045,6 +5136,18 @@ packages: peerDependencies: hardhat: ^2.0.2 + hardhat@2.22.15: + resolution: {integrity: sha512-BpTGa9PE/sKAaHi4s/S1e9WGv63DR1m7Lzfd60C8gSEchDPfAJssVRSq0MZ2v2k76ig9m0kHAwVLf5teYwu/Mw==} + hasBin: true + peerDependencies: + ts-node: '*' + typescript: '*' + peerDependenciesMeta: + ts-node: + optional: true + typescript: + optional: true + has-bigints@1.0.2: resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} @@ -5412,6 +5515,10 @@ packages: json-stable-stringify-without-jsonify@1.0.1: resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + json-stream-stringify@3.1.6: + resolution: {integrity: sha512-x7fpwxOkbhFCaJDJ8vb1fBY3DdSa4AlITaz+HHILQJzdPMnHEFjxPwVUi1ALIbcIxDE0PNe/0i7frnY8QnBQog==} + engines: {node: '>=7.10.1'} + json-stringify-safe@5.0.1: resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} @@ -5515,6 +5622,9 @@ packages: loupe@2.3.7: resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==} + loupe@3.1.2: + resolution: {integrity: sha512-23I4pFZHmAemUnz8WZXbYRSKYj801VDaNv9ETuMh7IrMc7VuVVSo+Z9iLE3ni30+U48iDWfi30d3twAXBYmnCg==} + lower-case@2.0.2: resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} @@ -5896,6 +6006,10 @@ packages: pathval@1.1.1: resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} + pathval@2.0.0: + resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==} + engines: {node: '>= 14.16'} + pbkdf2@3.1.2: resolution: {integrity: sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==} engines: {node: '>=0.12'} @@ -6035,6 +6149,10 @@ packages: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} engines: {node: '>=8.10.0'} + readdirp@4.0.2: + resolution: {integrity: sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==} + engines: {node: '>= 14.16.0'} + rechoir@0.6.2: resolution: {integrity: sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==} engines: {node: '>= 0.10'} @@ -7884,18 +8002,32 @@ snapshots: '@nomicfoundation/edr-darwin-arm64@0.5.2': {} + '@nomicfoundation/edr-darwin-arm64@0.6.4': {} + '@nomicfoundation/edr-darwin-x64@0.5.2': {} + '@nomicfoundation/edr-darwin-x64@0.6.4': {} + '@nomicfoundation/edr-linux-arm64-gnu@0.5.2': {} + '@nomicfoundation/edr-linux-arm64-gnu@0.6.4': {} + '@nomicfoundation/edr-linux-arm64-musl@0.5.2': {} + '@nomicfoundation/edr-linux-arm64-musl@0.6.4': {} + '@nomicfoundation/edr-linux-x64-gnu@0.5.2': {} + '@nomicfoundation/edr-linux-x64-gnu@0.6.4': {} + '@nomicfoundation/edr-linux-x64-musl@0.5.2': {} + '@nomicfoundation/edr-linux-x64-musl@0.6.4': {} + '@nomicfoundation/edr-win32-x64-msvc@0.5.2': {} + '@nomicfoundation/edr-win32-x64-msvc@0.6.4': {} + '@nomicfoundation/edr@0.5.2': dependencies: '@nomicfoundation/edr-darwin-arm64': 0.5.2 @@ -7906,6 +8038,16 @@ snapshots: '@nomicfoundation/edr-linux-x64-musl': 0.5.2 '@nomicfoundation/edr-win32-x64-msvc': 0.5.2 + '@nomicfoundation/edr@0.6.4': + dependencies: + '@nomicfoundation/edr-darwin-arm64': 0.6.4 + '@nomicfoundation/edr-darwin-x64': 0.6.4 + '@nomicfoundation/edr-linux-arm64-gnu': 0.6.4 + '@nomicfoundation/edr-linux-arm64-musl': 0.6.4 + '@nomicfoundation/edr-linux-x64-gnu': 0.6.4 + '@nomicfoundation/edr-linux-x64-musl': 0.6.4 + '@nomicfoundation/edr-win32-x64-msvc': 0.6.4 + '@nomicfoundation/ethereumjs-block@5.0.4': dependencies: '@nomicfoundation/ethereumjs-common': 4.0.4 @@ -7948,6 +8090,15 @@ snapshots: '@nomicfoundation/ethereumjs-rlp': 5.0.4 ethereum-cryptography: 0.1.3 + '@nomicfoundation/hardhat-ethers@3.0.8(ethers@6.13.4)(hardhat@2.22.15(ts-node@10.9.2(@types/node@20.17.1)(typescript@5.5.4))(typescript@5.5.4))': + dependencies: + debug: 4.3.7(supports-color@8.1.1) + ethers: 6.13.4 + hardhat: 2.22.15(ts-node@10.9.2(@types/node@20.17.1)(typescript@5.5.4))(typescript@5.5.4) + lodash.isequal: 4.5.0 + transitivePeerDependencies: + - supports-color + '@nomicfoundation/hardhat-ignition-ethers@0.15.7(@nomicfoundation/hardhat-ethers@packages+hardhat-ethers)(@nomicfoundation/hardhat-ignition@0.15.7(@nomicfoundation/hardhat-verify@packages+hardhat-verify)(hardhat@packages+hardhat-core))(@nomicfoundation/ignition-core@0.15.7)(ethers@6.13.4)(hardhat@packages+hardhat-core)': dependencies: '@nomicfoundation/hardhat-ethers': link:packages/hardhat-ethers @@ -8202,6 +8353,8 @@ snapshots: dependencies: '@types/ms': 0.7.34 + '@types/deep-eql@4.0.2': {} + '@types/events@3.0.3': {} '@types/find-up@2.1.1': {} @@ -8793,6 +8946,8 @@ snapshots: assertion-error@1.1.0: {} + assertion-error@2.0.1: {} + astral-regex@2.0.0: {} async@1.5.2: {} @@ -8979,6 +9134,11 @@ snapshots: chai: 4.5.0 check-error: 2.1.1 + chai-as-promised@8.0.0(chai@5.1.2): + dependencies: + chai: 5.1.2 + check-error: 2.1.1 + chai@4.5.0: dependencies: assertion-error: 1.1.0 @@ -8989,6 +9149,14 @@ snapshots: pathval: 1.1.1 type-detect: 4.1.0 + chai@5.1.2: + dependencies: + assertion-error: 2.0.1 + check-error: 2.1.1 + deep-eql: 5.0.2 + loupe: 3.1.2 + pathval: 2.0.0 + chalk@0.4.0: dependencies: ansi-styles: 1.0.0 @@ -9030,6 +9198,10 @@ snapshots: optionalDependencies: fsevents: 2.3.3 + chokidar@4.0.1: + dependencies: + readdirp: 4.0.2 + chownr@1.1.4: {} ci-info@2.0.0: {} @@ -9231,6 +9403,8 @@ snapshots: dependencies: type-detect: 4.1.0 + deep-eql@5.0.2: {} + deep-extend@0.6.0: {} deep-is@0.1.4: {} @@ -10201,6 +10375,61 @@ snapshots: - debug - utf-8-validate + hardhat@2.22.15(ts-node@10.9.2(@types/node@20.17.1)(typescript@5.5.4))(typescript@5.5.4): + dependencies: + '@ethersproject/abi': 5.7.0 + '@metamask/eth-sig-util': 4.0.1 + '@nomicfoundation/edr': 0.6.4 + '@nomicfoundation/ethereumjs-common': 4.0.4 + '@nomicfoundation/ethereumjs-tx': 5.0.4 + '@nomicfoundation/ethereumjs-util': 9.0.4 + '@nomicfoundation/solidity-analyzer': 0.1.2 + '@sentry/node': 5.30.0 + '@types/bn.js': 5.1.6 + '@types/lru-cache': 5.1.1 + adm-zip: 0.4.16 + aggregate-error: 3.1.0 + ansi-escapes: 4.3.2 + boxen: 5.1.2 + chalk: 2.4.2 + chokidar: 4.0.1 + ci-info: 2.0.0 + debug: 4.3.7(supports-color@8.1.1) + enquirer: 2.4.1 + env-paths: 2.2.1 + ethereum-cryptography: 1.2.0 + ethereumjs-abi: 0.6.8 + find-up: 2.1.0 + fp-ts: 1.19.3 + fs-extra: 7.0.1 + glob: 7.2.0 + immutable: 4.3.7 + io-ts: 1.10.4 + json-stream-stringify: 3.1.6 + keccak: 3.0.4 + lodash: 4.17.21 + mnemonist: 0.38.5 + mocha: 10.7.3 + p-map: 4.0.0 + raw-body: 2.5.2 + resolve: 1.17.0 + semver: 6.3.1 + solc: 0.8.26(debug@4.3.7) + source-map-support: 0.5.21 + stacktrace-parser: 0.1.10 + tsort: 0.0.1 + undici: 5.28.4 + uuid: 8.3.2 + ws: 7.5.10 + optionalDependencies: + ts-node: 10.9.2(@types/node@20.17.1)(typescript@5.5.4) + typescript: 5.5.4 + transitivePeerDependencies: + - bufferutil + - c-kzg + - supports-color + - utf-8-validate + has-bigints@1.0.2: {} has-color@0.1.7: {} @@ -10544,6 +10773,8 @@ snapshots: json-stable-stringify-without-jsonify@1.0.1: {} + json-stream-stringify@3.1.6: {} + json-stringify-safe@5.0.1: {} json5@1.0.2: @@ -10638,6 +10869,8 @@ snapshots: dependencies: get-func-name: 2.0.2 + loupe@3.1.2: {} + lower-case@2.0.2: dependencies: tslib: 2.8.0 @@ -11044,6 +11277,8 @@ snapshots: pathval@1.1.1: {} + pathval@2.0.0: {} + pbkdf2@3.1.2: dependencies: create-hash: 1.2.0 @@ -11194,6 +11429,8 @@ snapshots: dependencies: picomatch: 2.3.1 + readdirp@4.0.2: {} + rechoir@0.6.2: dependencies: resolve: 1.17.0 @@ -11735,6 +11972,25 @@ snapshots: v8-compile-cache-lib: 3.0.1 yn: 3.1.1 + ts-node@10.9.2(@types/node@20.17.1)(typescript@5.5.4): + dependencies: + '@cspotcode/source-map-support': 0.8.1 + '@tsconfig/node10': 1.0.11 + '@tsconfig/node12': 1.0.11 + '@tsconfig/node14': 1.0.3 + '@tsconfig/node16': 1.0.4 + '@types/node': 20.17.1 + acorn: 8.14.0 + acorn-walk: 8.3.4 + arg: 4.1.3 + create-require: 1.1.1 + diff: 4.0.2 + make-error: 1.3.6 + typescript: 5.5.4 + v8-compile-cache-lib: 3.0.1 + yn: 3.1.1 + optional: true + tsconfig-paths@3.15.0: dependencies: '@types/json5': 0.0.29 diff --git a/v-next/hardhat-chai-matchers/package.json b/v-next/hardhat-chai-matchers/package.json index 3affbd0893..d23e0299c6 100644 --- a/v-next/hardhat-chai-matchers/package.json +++ b/v-next/hardhat-chai-matchers/package.json @@ -49,6 +49,7 @@ "@nomicfoundation/hardhat-test-utils": "workspace:^", "@types/chai": "^4.2.0", "@types/debug": "^4.1.4", + "@types/deep-eql": "^4.0.2", "@types/node": "^20.14.9", "@typescript-eslint/eslint-plugin": "^7.7.1", "@typescript-eslint/parser": "^7.7.1", @@ -68,11 +69,16 @@ "dependencies": { "@ignored/hardhat-vnext-errors": "workspace:^3.0.0-next.15", "@ignored/hardhat-vnext-utils": "workspace:^3.0.0-next.15", + "@nomicfoundation/hardhat-ethers": "^3.0.8", "@types/chai-as-promised": "^8.0.1", - "chai-as-promised": "^8.0.0" + "chai-as-promised": "^8.0.0", + "deep-eql": "^4.0.1", + "hardhat": "^2.22.15", + "ordinal": "^1.0.3" }, "peerDependencies": { "@ignored/hardhat-vnext": "workspace:^3.0.0-next.16", + "@ignored/hardhat-vnext-ethers": "workspace:^3.0.0-next.12", "chai": "^5.1.2", "ethers": "^6.13.4" } diff --git a/v-next/hardhat-chai-matchers/src/internal/big-number.ts b/v-next/hardhat-chai-matchers/src/internal/big-number.ts new file mode 100644 index 0000000000..41d83f99e5 --- /dev/null +++ b/v-next/hardhat-chai-matchers/src/internal/big-number.ts @@ -0,0 +1,285 @@ +import util from "node:util"; + +import { AssertionError } from "chai"; +import deepEqual from "deep-eql"; + +import { isBigNumber, normalizeToBigInt } from "./utils.js"; + +export function supportBigNumber( + Assertion: Chai.AssertionStatic, + chaiUtils: Chai.ChaiUtils, +): void { + const equalsFunction = override("eq", "equal", "not equal", chaiUtils); + Assertion.overwriteMethod("equals", equalsFunction); + Assertion.overwriteMethod("equal", equalsFunction); + Assertion.overwriteMethod("eq", equalsFunction); + + const gtFunction = override("gt", "be above", "be at most", chaiUtils); + Assertion.overwriteMethod("above", gtFunction); + Assertion.overwriteMethod("gt", gtFunction); + Assertion.overwriteMethod("greaterThan", gtFunction); + + const ltFunction = override("lt", "be below", "be at least", chaiUtils); + Assertion.overwriteMethod("below", ltFunction); + Assertion.overwriteMethod("lt", ltFunction); + Assertion.overwriteMethod("lessThan", ltFunction); + + const gteFunction = override("gte", "be at least", "be below", chaiUtils); + Assertion.overwriteMethod("least", gteFunction); + Assertion.overwriteMethod("gte", gteFunction); + Assertion.overwriteMethod("greaterThanOrEqual", gteFunction); + + const lteFunction = override("lte", "be at most", "be above", chaiUtils); + Assertion.overwriteMethod("most", lteFunction); + Assertion.overwriteMethod("lte", lteFunction); + Assertion.overwriteMethod("lessThanOrEqual", lteFunction); + + Assertion.overwriteChainableMethod(...createLengthOverride("length")); + Assertion.overwriteChainableMethod(...createLengthOverride("lengthOf")); + + Assertion.overwriteMethod("within", overrideWithin(chaiUtils)); + + Assertion.overwriteMethod("closeTo", overrideCloseTo(chaiUtils)); + Assertion.overwriteMethod("approximately", overrideCloseTo(chaiUtils)); +} + +function createLengthOverride( + method: string, +): [string, (...args: any[]) => any, (...args: any[]) => any] { + return [ + method, + function (_super: any) { + return function (this: Chai.AssertionPrototype, value: any) { + const actual = this._obj; + + if (isBigNumber(value)) { + const sizeOrLength = + actual instanceof Map || actual instanceof Set ? "size" : "length"; + + const actualLength = normalizeToBigInt(actual[sizeOrLength]); + const expectedLength = normalizeToBigInt(value); + + this.assert( + actualLength === expectedLength, + `expected #{this} to have a ${sizeOrLength} of ${expectedLength.toString()} but got ${actualLength.toString()}`, + `expected #{this} not to have a ${sizeOrLength} of ${expectedLength.toString()} but got ${actualLength.toString()}`, + actualLength.toString(), + expectedLength.toString(), + ); + } else { + _super.apply(this, arguments); + } + }; + }, + function (_super: any) { + return function (this: any) { + _super.apply(this, arguments); + }; + } as any, + ]; +} + +type Methods = "eq" | "gt" | "lt" | "gte" | "lte"; + +function override( + method: Methods, + name: string, + negativeName: string, + chaiUtils: Chai.ChaiUtils, +) { + return (_super: (...args: any[]) => any) => + overwriteBigNumberFunction(method, name, negativeName, _super, chaiUtils); +} + +function overwriteBigNumberFunction( + functionName: Methods, + readableName: string, + readableNegativeName: string, + _super: (...args: any[]) => any, + chaiUtils: Chai.ChaiUtils, +) { + return function (this: Chai.AssertionStatic, ...args: any[]) { + const [actualArg, message] = args; + const expectedFlag = chaiUtils.flag(this, "object"); + + if (message !== undefined) { + chaiUtils.flag(this, "message", message); + } + + function compare(method: Methods, lhs: bigint, rhs: bigint): boolean { + if (method === "eq") { + return lhs === rhs; + } else if (method === "gt") { + return lhs > rhs; + } else if (method === "lt") { + return lhs < rhs; + } else if (method === "gte") { + return lhs >= rhs; + } else if (method === "lte") { + return lhs <= rhs; + } else { + throw new Error(`Unknown comparison operation ${method as any}`); + // throw new HardhatError( + // HardhatError.ERRORS.CHAI_MATCHERS.UNKNOWN_COMPARISON_OPERATION, + // { + // method, + // }, + // ); + } + } + + if (Boolean(chaiUtils.flag(this, "doLength")) && isBigNumber(actualArg)) { + const sizeOrLength = + expectedFlag instanceof Map || expectedFlag instanceof Set + ? "size" + : "length"; + + if (expectedFlag[sizeOrLength] === undefined) { + _super.apply(this, args); + return; + } + + const expected = normalizeToBigInt(expectedFlag[sizeOrLength]); + const actual = normalizeToBigInt(actualArg); + + this.assert( + compare(functionName, expected, actual), + `expected #{this} to have a ${sizeOrLength} ${readableName.replace( + "be ", + "", + )} ${actual.toString()} but got ${expected}`, + `expected #{this} to have a ${sizeOrLength} ${readableNegativeName} ${actual.toString()}`, + expected, + actual, + ); + } else if (functionName === "eq" && Boolean(chaiUtils.flag(this, "deep"))) { + // this is close enough to what chai itself does, except we compare + // numbers after normalizing them + const comparator = (a: any, b: any): boolean | null => { + try { + const normalizedA = normalizeToBigInt(a); + const normalizedB = normalizeToBigInt(b); + return normalizedA === normalizedB; + } catch (e) { + // use default comparator + return null; + } + }; + + // "ssfi" stands for "start stack function indicator", it's a chai concept + // used to control which frames are included in the stack trace + // this pattern here was taken from chai's implementation of .deep.equal + const prevLockSsfi = chaiUtils.flag(this, "lockSsfi"); + + chaiUtils.flag(this, "lockSsfi", true); + + this.assert( + deepEqual(actualArg, expectedFlag, { comparator }), + `expected ${util.inspect(expectedFlag)} to deeply equal ${util.inspect( + actualArg, + )}`, + `expected ${util.inspect( + expectedFlag, + )} to not deeply equal ${util.inspect(actualArg)}`, + null, + ); + + chaiUtils.flag(this, "lockSsfi", prevLockSsfi); + } else if (isBigNumber(expectedFlag) || isBigNumber(actualArg)) { + const expected = normalizeToBigInt(expectedFlag); + const actual = normalizeToBigInt(actualArg); + + this.assert( + compare(functionName, expected, actual), + `expected ${expected} to ${readableName} ${actual}.`, + `expected ${expected} to ${readableNegativeName} ${actual}.`, + actual.toString(), + expected.toString(), + ); + } else { + _super.apply(this, args); + } + }; +} + +function overrideWithin(chaiUtils: Chai.ChaiUtils) { + return (_super: (...args: any[]) => any) => + overwriteBigNumberWithin(_super, chaiUtils); +} + +function overwriteBigNumberWithin( + _super: (...args: any[]) => any, + chaiUtils: Chai.ChaiUtils, +) { + return function (this: Chai.AssertionStatic, ...args: any[]) { + const [startArg, finishArg] = args; + const expectedFlag = chaiUtils.flag(this, "object"); + + if ( + isBigNumber(expectedFlag) || + isBigNumber(startArg) || + isBigNumber(finishArg) + ) { + const expected = normalizeToBigInt(expectedFlag); + const start = normalizeToBigInt(startArg); + const finish = normalizeToBigInt(finishArg); + this.assert( + start <= expected && expected <= finish, + `expected ${expected} to be within ${start}..${finish}`, + `expected ${expected} to not be within ${start}..${finish}`, + expected, + [start, finish], + ); + } else { + _super.apply(this, args); + } + }; +} + +function overrideCloseTo(chaiUtils: Chai.ChaiUtils) { + return (_super: (...args: any[]) => any) => + overwriteBigNumberCloseTo(_super, chaiUtils); +} + +function overwriteBigNumberCloseTo( + _super: (...args: any[]) => any, + chaiUtils: Chai.ChaiUtils, +) { + return function (this: Chai.AssertionStatic, ...args: any[]) { + const [actualArg, deltaArg] = args; + const expectedFlag = chaiUtils.flag(this, "object"); + + if ( + isBigNumber(expectedFlag) || + typeof expectedFlag === "number" || // TODO + isBigNumber(actualArg) || + typeof actualArg === "number" || + isBigNumber(deltaArg) + ) { + if (deltaArg === undefined) { + // eslint-disable-next-line no-restricted-syntax -- keep the original chai error structure + throw new AssertionError( + "the arguments to closeTo or approximately must be numbers, and a delta is required", + ); + } + + const expected = normalizeToBigInt(expectedFlag); + const actual = normalizeToBigInt(actualArg); + const delta = normalizeToBigInt(deltaArg); + + function abs(i: bigint): bigint { + return i < 0 ? BigInt(-1) * i : i; + } + + this.assert( + abs(expected - actual) <= delta, + `expected ${expected} to be close to ${actual} +/- ${delta}`, + `expected ${expected} not to be close to ${actual} +/- ${delta}`, + expected, + `A number between ${actual - delta} and ${actual + delta}`, + ); + } else { + _super.apply(this, args); + } + }; +} diff --git a/v-next/hardhat-chai-matchers/src/internal/changeEtherBalance.ts b/v-next/hardhat-chai-matchers/src/internal/changeEtherBalance.ts new file mode 100644 index 0000000000..b4d3322412 --- /dev/null +++ b/v-next/hardhat-chai-matchers/src/internal/changeEtherBalance.ts @@ -0,0 +1,138 @@ +import type { BalanceChangeOptions } from "./misc/balance.js"; +import type { EthereumProvider } from "@ignored/hardhat-vnext/types/providers"; +import type { Addressable } from "ethers/address"; +import type { TransactionResponse } from "ethers/providers"; +import type { BigNumberish } from "ethers/utils"; + +import { assertHardhatInvariant } from "@ignored/hardhat-vnext-errors"; +import { isObject } from "@ignored/hardhat-vnext-utils/lang"; +import { toBigInt } from "ethers/utils"; + +import { buildAssert } from "../utils.js"; + +import { CHANGE_ETHER_BALANCE_MATCHER } from "./constants.js"; +import { getAddressOf } from "./misc/account.js"; +import { + assertCanBeConvertedToBigint, + assertIsNotNull, + preventAsyncMatcherChaining, +} from "./utils.js"; + +export function supportChangeEtherBalance( + Assertion: Chai.AssertionStatic, + chaiUtils: Chai.ChaiUtils, +): void { + Assertion.addMethod( + CHANGE_ETHER_BALANCE_MATCHER, + function ( + this: any, + provider: EthereumProvider, + account: Addressable | string, + balanceChange: BigNumberish | ((change: bigint) => boolean), + options?: BalanceChangeOptions, + ) { + // capture negated flag before async code executes; see buildAssert's jsdoc + const negated = this.__flags.negate; + const subject = this._obj; + + preventAsyncMatcherChaining( + this, + CHANGE_ETHER_BALANCE_MATCHER, + chaiUtils, + ); + + const checkBalanceChange = ([actualChange, address]: [ + bigint, + string, + ]) => { + const assert = buildAssert(negated, checkBalanceChange); + + if (typeof balanceChange === "function") { + assert( + balanceChange(actualChange), + `Expected the ether balance change of "${address}" to satisfy the predicate, but it didn't (balance change: ${actualChange.toString()} wei)`, + `Expected the ether balance change of "${address}" to NOT satisfy the predicate, but it did (balance change: ${actualChange.toString()} wei)`, + ); + } else { + const expectedChange = toBigInt(balanceChange); + assert( + actualChange === expectedChange, + `Expected the ether balance of "${address}" to change by ${balanceChange.toString()} wei, but it changed by ${actualChange.toString()} wei`, + `Expected the ether balance of "${address}" NOT to change by ${balanceChange.toString()} wei, but it did`, + ); + } + }; + + const derivedPromise = Promise.all([ + getBalanceChange(provider, subject, account, options), + getAddressOf(account), + ]).then(checkBalanceChange); + this.then = derivedPromise.then.bind(derivedPromise); + this.catch = derivedPromise.catch.bind(derivedPromise); + this.promise = derivedPromise; + return this; + }, + ); +} + +export async function getBalanceChange( + provider: EthereumProvider, + transaction: + | TransactionResponse + | Promise + | (() => Promise | TransactionResponse), + account: Addressable | string, + options?: BalanceChangeOptions, +): Promise { + let txResponse: TransactionResponse; + + if (typeof transaction === "function") { + txResponse = await transaction(); + } else { + txResponse = await transaction; + } + + const txReceipt = await txResponse.wait(); + assertIsNotNull(txReceipt, "txReceipt"); + const txBlockNumber = txReceipt.blockNumber; + + const block = await provider.request({ + method: "eth_getBlockByHash", + params: [txReceipt.blockHash, false], + }); + + assertHardhatInvariant( + isObject(block) && + Array.isArray(block.transactions) && + block.transactions.length === 1, + "There should be only 1 transaction in the block", + ); + + const address = await getAddressOf(account); + + const balanceAfterHex = await provider.request({ + method: "eth_getBalance", + params: [address, `0x${txBlockNumber.toString(16)}`], + }); + + const balanceBeforeHex = await provider.request({ + method: "eth_getBalance", + params: [address, `0x${(txBlockNumber - 1).toString(16)}`], + }); + + assertCanBeConvertedToBigint(balanceAfterHex); + assertCanBeConvertedToBigint(balanceBeforeHex); + + const balanceAfter = BigInt(balanceAfterHex); + const balanceBefore = BigInt(balanceBeforeHex); + + if (options?.includeFee !== true && address === txResponse.from) { + const gasPrice = txReceipt.gasPrice; + const gasUsed = txReceipt.gasUsed; + const txFee = gasPrice * gasUsed; + + return balanceAfter + txFee - balanceBefore; + } else { + return balanceAfter - balanceBefore; + } +} diff --git a/v-next/hardhat-chai-matchers/src/internal/changeEtherBalances.ts b/v-next/hardhat-chai-matchers/src/internal/changeEtherBalances.ts new file mode 100644 index 0000000000..879e810c14 --- /dev/null +++ b/v-next/hardhat-chai-matchers/src/internal/changeEtherBalances.ts @@ -0,0 +1,187 @@ +import type { BalanceChangeOptions } from "./misc/balance.js"; +import type { EthereumProvider } from "@ignored/hardhat-vnext/types/providers"; +import type { Addressable, BigNumberish, TransactionResponse } from "ethers"; + +import { HardhatError } from "@ignored/hardhat-vnext-errors"; +import { toBigInt } from "ethers/utils"; +import ordinal from "ordinal"; + +import { buildAssert } from "../utils.js"; + +import { CHANGE_ETHER_BALANCES_MATCHER } from "./constants.js"; +import { getAddressOf } from "./misc/account.js"; +import { getAddresses, getBalances } from "./misc/balance.js"; +import { assertIsNotNull, preventAsyncMatcherChaining } from "./utils.js"; + +export function supportChangeEtherBalances( + Assertion: Chai.AssertionStatic, + chaiUtils: Chai.ChaiUtils, +): void { + Assertion.addMethod( + CHANGE_ETHER_BALANCES_MATCHER, + function ( + this: any, + provider: EthereumProvider, + accounts: Array, + balanceChanges: BigNumberish[] | ((changes: bigint[]) => boolean), + options?: BalanceChangeOptions, + ) { + // capture negated flag before async code executes; see buildAssert's jsdoc + const negated = this.__flags.negate; + + let subject = this._obj; + if (typeof subject === "function") { + subject = subject(); + } + + preventAsyncMatcherChaining( + this, + CHANGE_ETHER_BALANCES_MATCHER, + chaiUtils, + ); + + validateInput(this._obj, accounts, balanceChanges); + + const checkBalanceChanges = ([actualChanges, accountAddresses]: [ + bigint[], + string[], + ]) => { + const assert = buildAssert(negated, checkBalanceChanges); + + if (typeof balanceChanges === "function") { + assert( + balanceChanges(actualChanges), + "Expected the balance changes of the accounts to satisfy the predicate, but they didn't", + "Expected the balance changes of the accounts to NOT satisfy the predicate, but they did", + ); + } else { + assert( + actualChanges.every( + (change, ind) => change === toBigInt(balanceChanges[ind]), + ), + () => { + const lines: string[] = []; + actualChanges.forEach((change: bigint, i) => { + if (change !== toBigInt(balanceChanges[i])) { + lines.push( + `Expected the ether balance of ${ + accountAddresses[i] + } (the ${ordinal( + i + 1, + )} address in the list) to change by ${balanceChanges[ + i + ].toString()} wei, but it changed by ${change.toString()} wei`, + ); + } + }); + return lines.join("\n"); + }, + () => { + const lines: string[] = []; + actualChanges.forEach((change: bigint, i) => { + if (change === toBigInt(balanceChanges[i])) { + lines.push( + `Expected the ether balance of ${ + accountAddresses[i] + } (the ${ordinal( + i + 1, + )} address in the list) NOT to change by ${balanceChanges[ + i + ].toString()} wei, but it did`, + ); + } + }); + return lines.join("\n"); + }, + ); + } + }; + + const derivedPromise = Promise.all([ + getBalanceChanges(provider, subject, accounts, options), + getAddresses(accounts), + ]).then(checkBalanceChanges); + this.then = derivedPromise.then.bind(derivedPromise); + this.catch = derivedPromise.catch.bind(derivedPromise); + this.promise = derivedPromise; + return this; + }, + ); +} + +function validateInput( + obj: any, + accounts: Array, + balanceChanges: bigint[] | ((changes: bigint[]) => boolean), +) { + try { + if ( + Array.isArray(balanceChanges) && + accounts.length !== balanceChanges.length + ) { + throw new HardhatError( + HardhatError.ERRORS.CHAI_MATCHERS.ACCOUNTS_NUMBER_DIFFERENT_FROM_BALANCE_CHANGES, + { + accounts: accounts.length, + balanceChanges: balanceChanges.length, + }, + ); + } + } catch (e) { + // if the input validation fails, we discard the subject since it could + // potentially be a rejected promise + Promise.resolve(obj).catch(() => {}); + throw e; + } +} + +export async function getBalanceChanges( + provider: EthereumProvider, + transaction: TransactionResponse | Promise, + accounts: Array, + options?: BalanceChangeOptions, +): Promise { + const txResponse = await transaction; + + const txReceipt = await txResponse.wait(); + assertIsNotNull(txReceipt, "txReceipt"); + const txBlockNumber = txReceipt.blockNumber; + + const balancesAfter = await getBalances(provider, accounts, txBlockNumber); + const balancesBefore = await getBalances( + provider, + accounts, + txBlockNumber - 1, + ); + + const txFees = await getTxFees(accounts, txResponse, options); + + return balancesAfter.map( + (balance, ind) => balance + txFees[ind] - balancesBefore[ind], + ); +} + +async function getTxFees( + accounts: Array, + txResponse: TransactionResponse, + options?: BalanceChangeOptions, +): Promise { + return Promise.all( + accounts.map(async (account) => { + if ( + options?.includeFee !== true && + (await getAddressOf(account)) === txResponse.from + ) { + const txReceipt = await txResponse.wait(); + assertIsNotNull(txReceipt, "txReceipt"); + const gasPrice = txReceipt.gasPrice ?? txResponse.gasPrice; + const gasUsed = txReceipt.gasUsed; + const txFee = gasPrice * gasUsed; + + return txFee; + } + + return 0n; + }), + ); +} diff --git a/v-next/hardhat-chai-matchers/src/internal/changeTokenBalance.ts b/v-next/hardhat-chai-matchers/src/internal/changeTokenBalance.ts new file mode 100644 index 0000000000..926ddd1161 --- /dev/null +++ b/v-next/hardhat-chai-matchers/src/internal/changeTokenBalance.ts @@ -0,0 +1,288 @@ +import type { EthereumProvider } from "@ignored/hardhat-vnext/types/providers"; +import type { + Addressable, + BaseContract, + BaseContractMethod, + BigNumberish, + ContractTransactionResponse, +} from "ethers"; +import type { TransactionResponse } from "ethers/providers"; + +import { + assertHardhatInvariant, + HardhatError, +} from "@ignored/hardhat-vnext-errors"; +import { isObject } from "@ignored/hardhat-vnext-utils/lang"; +import { toBigInt } from "ethers/utils"; + +import { buildAssert } from "../utils.js"; + +import { + CHANGE_TOKEN_BALANCES_MATCHER, + CHANGE_TOKEN_BALANCE_MATCHER, +} from "./constants.js"; +import { getAddressOf } from "./misc/account.js"; +import { assertIsNotNull, preventAsyncMatcherChaining } from "./utils.js"; + +export type Token = BaseContract & { + balanceOf: BaseContractMethod<[string], bigint, bigint>; + name: BaseContractMethod<[], string, string>; + transfer: BaseContractMethod< + [string, BigNumberish], + boolean, + ContractTransactionResponse + >; + symbol: BaseContractMethod<[], string, string>; +}; + +export function supportChangeTokenBalance( + Assertion: Chai.AssertionStatic, + chaiUtils: Chai.ChaiUtils, +): void { + Assertion.addMethod( + CHANGE_TOKEN_BALANCE_MATCHER, + function ( + this: any, + provider: EthereumProvider, + token: Token, + account: Addressable | string, + balanceChange: bigint | ((change: bigint) => boolean), + ) { + // capture negated flag before async code executes; see buildAssert's jsdoc + const negated = this.__flags.negate; + + let subject = this._obj; + if (typeof subject === "function") { + subject = subject(); + } + + preventAsyncMatcherChaining( + this, + CHANGE_TOKEN_BALANCE_MATCHER, + chaiUtils, + ); + + checkToken(token, CHANGE_TOKEN_BALANCE_MATCHER); + + const checkBalanceChange = ([actualChange, address, tokenDescription]: [ + bigint, + string, + string, + ]) => { + const assert = buildAssert(negated, checkBalanceChange); + + if (typeof balanceChange === "function") { + assert( + balanceChange(actualChange), + `Expected the balance of ${tokenDescription} tokens for "${address}" to satisfy the predicate, but it didn't (token balance change: ${actualChange.toString()} wei)`, + `Expected the balance of ${tokenDescription} tokens for "${address}" to NOT satisfy the predicate, but it did (token balance change: ${actualChange.toString()} wei)`, + ); + } else { + assert( + actualChange === toBigInt(balanceChange), + `Expected the balance of ${tokenDescription} tokens for "${address}" to change by ${balanceChange.toString()}, but it changed by ${actualChange.toString()}`, + `Expected the balance of ${tokenDescription} tokens for "${address}" NOT to change by ${balanceChange.toString()}, but it did`, + ); + } + }; + + const derivedPromise = Promise.all([ + getBalanceChange(provider, subject, token, account), + getAddressOf(account), + getTokenDescription(token), + ]).then(checkBalanceChange); + + this.then = derivedPromise.then.bind(derivedPromise); + this.catch = derivedPromise.catch.bind(derivedPromise); + + return this; + }, + ); + + Assertion.addMethod( + CHANGE_TOKEN_BALANCES_MATCHER, + function ( + this: any, + provider: EthereumProvider, + token: Token, + accounts: Array, + balanceChanges: bigint[] | ((changes: bigint[]) => boolean), + ) { + // capture negated flag before async code executes; see buildAssert's jsdoc + const negated = this.__flags.negate; + + let subject = this._obj; + if (typeof subject === "function") { + subject = subject(); + } + + preventAsyncMatcherChaining( + this, + CHANGE_TOKEN_BALANCES_MATCHER, + chaiUtils, + ); + + validateInput(this._obj, token, accounts, balanceChanges); + + const balanceChangesPromise = Promise.all( + accounts.map((account) => + getBalanceChange(provider, subject, token, account), + ), + ); + const addressesPromise = Promise.all(accounts.map(getAddressOf)); + + const checkBalanceChanges = ([ + actualChanges, + addresses, + tokenDescription, + ]: [bigint[], string[], string]) => { + const assert = buildAssert(negated, checkBalanceChanges); + + if (typeof balanceChanges === "function") { + assert( + balanceChanges(actualChanges), + `Expected the balance changes of ${tokenDescription} to satisfy the predicate, but they didn't`, + `Expected the balance changes of ${tokenDescription} to NOT satisfy the predicate, but they did`, + ); + } else { + assert( + actualChanges.every( + (change, ind) => change === toBigInt(balanceChanges[ind]), + ), + `Expected the balances of ${tokenDescription} tokens for ${addresses.join( + ", ", + )} to change by ${balanceChanges.join( + ", ", + )}, respectively, but they changed by ${actualChanges.join(", ")}`, + `Expected the balances of ${tokenDescription} tokens for ${addresses.join( + ", ", + )} NOT to change by ${balanceChanges.join( + ", ", + )}, respectively, but they did`, + ); + } + }; + + const derivedPromise = Promise.all([ + balanceChangesPromise, + addressesPromise, + getTokenDescription(token), + ]).then(checkBalanceChanges); + + this.then = derivedPromise.then.bind(derivedPromise); + this.catch = derivedPromise.catch.bind(derivedPromise); + + return this; + }, + ); +} + +function validateInput( + obj: any, + token: Token, + accounts: Array, + balanceChanges: bigint[] | ((changes: bigint[]) => boolean), +) { + try { + checkToken(token, CHANGE_TOKEN_BALANCES_MATCHER); + + if ( + Array.isArray(balanceChanges) && + accounts.length !== balanceChanges.length + ) { + throw new HardhatError( + HardhatError.ERRORS.CHAI_MATCHERS.ACCOUNTS_NUMBER_DIFFERENT_FROM_BALANCE_CHANGES, + { + accounts: accounts.length, + balanceChanges: balanceChanges.length, + }, + ); + } + } catch (e) { + // if the input validation fails, we discard the subject since it could + // potentially be a rejected promise + Promise.resolve(obj).catch(() => {}); + throw e; + } +} + +function checkToken(token: unknown, method: string) { + if (!isObject(token) || token === null || !("interface" in token)) { + throw new HardhatError( + HardhatError.ERRORS.CHAI_MATCHERS.FIRST_ARGUMENT_MUST_BE_A_CONTRACT_INSTANCE, + { + method, + }, + ); + } else if ((token as any).interface.getFunction("balanceOf") === null) { + throw new HardhatError( + HardhatError.ERRORS.CHAI_MATCHERS.CONTRACT_IS_NOT_AN_ERC20_TOKEN, + ); + } +} + +export async function getBalanceChange( + provider: EthereumProvider, + transaction: TransactionResponse | Promise, + token: Token, + account: Addressable | string, +): Promise { + const txResponse = await transaction; + + const txReceipt = await txResponse.wait(); + assertIsNotNull(txReceipt, "txReceipt"); + const txBlockNumber = txReceipt.blockNumber; + + const block = await provider.request({ + method: "eth_getBlockByHash", + params: [txReceipt.blockHash, false], + }); + + assertHardhatInvariant( + isObject(block) && + Array.isArray(block.transactions) && + block.transactions.length === 1, + "There should be only 1 transaction in the block", + ); + + const address = await getAddressOf(account); + + const balanceAfter = await token.balanceOf(address, { + blockTag: txBlockNumber, + }); + + const balanceBefore = await token.balanceOf(address, { + blockTag: txBlockNumber - 1, + }); + + return toBigInt(balanceAfter) - balanceBefore; +} + +let tokenDescriptionsCache: Record = {}; +/** + * Get a description for the given token. Use the symbol of the token if + * possible; if it doesn't exist, the name is used; if the name doesn't + * exist, the address of the token is used. + */ +async function getTokenDescription(token: Token): Promise { + const tokenAddress = await token.getAddress(); + if (tokenDescriptionsCache[tokenAddress] === undefined) { + let tokenDescription = ``; + try { + tokenDescription = await token.symbol(); + } catch (e) { + try { + tokenDescription = await token.name(); + } catch (e2) {} + } + + tokenDescriptionsCache[tokenAddress] = tokenDescription; + } + + return tokenDescriptionsCache[tokenAddress]; +} + +// only used by tests +export function clearTokenDescriptionsCache(): void { + tokenDescriptionsCache = {}; +} diff --git a/v-next/hardhat-chai-matchers/src/internal/emit.ts b/v-next/hardhat-chai-matchers/src/internal/emit.ts new file mode 100644 index 0000000000..5e43bca647 --- /dev/null +++ b/v-next/hardhat-chai-matchers/src/internal/emit.ts @@ -0,0 +1,236 @@ +import type { AssertWithSsfi, Ssfi } from "../utils.js"; +import type { EventFragment } from "ethers/abi"; +import type { Contract } from "ethers/contract"; +import type { Provider, TransactionReceipt } from "ethers/providers"; +import type { Transaction } from "ethers/transaction"; + +import util from "node:util"; + +import { HardhatError } from "@ignored/hardhat-vnext-errors"; +import { AssertionError } from "chai"; + +import { buildAssert } from "../utils.js"; + +import { ASSERTION_ABORTED, EMIT_MATCHER } from "./constants.js"; +import { + assertArgsArraysEqual, + assertIsNotNull, + preventAsyncMatcherChaining, +} from "./utils.js"; + +export const EMIT_CALLED = "emitAssertionCalled"; + +async function waitForPendingTransaction( + tx: Promise | Transaction | string, + provider: Provider, +) { + let hash: string | null; + if (tx instanceof Promise) { + ({ hash } = await tx); + } else if (typeof tx === "string") { + hash = tx; + } else { + ({ hash } = tx); + } + + if (hash === null) { + throw new HardhatError( + HardhatError.ERRORS.CHAI_MATCHERS.INVALID_TRANSACTION, + { transaction: JSON.stringify(tx) }, + ); + } + + return provider.getTransactionReceipt(hash); +} + +export function supportEmit( + Assertion: Chai.AssertionStatic, + chaiUtils: Chai.ChaiUtils, +): void { + Assertion.addMethod( + EMIT_MATCHER, + function ( + this: any, + contract: Contract, + eventName: string, + ...args: any[] + ) { + // capture negated flag before async code executes; see buildAssert's jsdoc + const negated = this.__flags.negate; + const tx = this._obj; + + preventAsyncMatcherChaining(this, EMIT_MATCHER, chaiUtils, true); + + const promise = this.then === undefined ? Promise.resolve() : this; + + const onSuccess = (receipt: TransactionReceipt) => { + // abort if the assertion chain was aborted, for example because + // a `.not` was combined with a `.withArgs` + if (chaiUtils.flag(this, ASSERTION_ABORTED) === true) { + return; + } + + const assert = buildAssert(negated, onSuccess); + + let eventFragment: EventFragment | null = null; + try { + eventFragment = contract.interface.getEvent(eventName, []); + } catch (e) { + if (e instanceof TypeError) { + const errorMessage = e.message.split(" (argument=")[0]; + // eslint-disable-next-line no-restricted-syntax -- keep the original chai error structure + throw new AssertionError(errorMessage); + } + } + + if (eventFragment === null) { + // eslint-disable-next-line no-restricted-syntax -- keep the original chai error structure + throw new AssertionError( + `Event "${eventName}" doesn't exist in the contract`, + ); + } + + const topic = eventFragment.topicHash; + const contractAddress = contract.target; + if (typeof contractAddress !== "string") { + throw new HardhatError( + HardhatError.ERRORS.CHAI_MATCHERS.CONTRACT_TARGET_MUST_BE_A_STRING, + ); + } + + if (args.length > 0) { + throw new HardhatError( + HardhatError.ERRORS.CHAI_MATCHERS.EMIT_EXPECTS_TWO_ARGUMENTS, + ); + } + + this.logs = receipt.logs + .filter((log) => log.topics.includes(topic)) + .filter( + (log) => + log.address.toLowerCase() === contractAddress.toLowerCase(), + ); + + assert( + this.logs.length > 0, + `Expected event "${eventName}" to be emitted, but it wasn't`, + `Expected event "${eventName}" NOT to be emitted, but it was`, + ); + chaiUtils.flag(this, "eventName", eventName); + chaiUtils.flag(this, "contract", contract); + }; + + const derivedPromise = promise.then(() => { + // abort if the assertion chain was aborted, for example because + // a `.not` was combined with a `.withArgs` + if (chaiUtils.flag(this, ASSERTION_ABORTED) === true) { + return; + } + + if (contract.runner === null || contract.runner.provider === null) { + throw new HardhatError( + HardhatError.ERRORS.CHAI_MATCHERS.CONTRACT_RUNNER_PROVIDER_NOT_NULL, + ); + } + + return waitForPendingTransaction(tx, contract.runner.provider).then( + (receipt) => { + assertIsNotNull(receipt, "receipt"); + return onSuccess(receipt); + }, + ); + }); + + chaiUtils.flag(this, EMIT_CALLED, true); + + this.then = derivedPromise.then.bind(derivedPromise); + this.catch = derivedPromise.catch.bind(derivedPromise); + this.promise = derivedPromise; + return this; + }, + ); +} + +export async function emitWithArgs( + context: any, + Assertion: Chai.AssertionStatic, + chaiUtils: Chai.ChaiUtils, + expectedArgs: any[], + ssfi: Ssfi, +): Promise { + const negated = false; // .withArgs cannot be negated + const assert = buildAssert(negated, ssfi); + + tryAssertArgsArraysEqual( + context, + Assertion, + chaiUtils, + expectedArgs, + context.logs, + assert, + ssfi, + ); +} + +const tryAssertArgsArraysEqual = ( + context: any, + Assertion: Chai.AssertionStatic, + chaiUtils: Chai.ChaiUtils, + expectedArgs: any[], + logs: any[], + assert: AssertWithSsfi, + ssfi: Ssfi, +) => { + const eventName = chaiUtils.flag(context, "eventName"); + + if (logs.length === 1) { + const parsedLog = chaiUtils + .flag(context, "contract") + .interface.parseLog(logs[0]); + assertIsNotNull(parsedLog, "parsedLog"); + + return assertArgsArraysEqual( + Assertion, + expectedArgs, + parsedLog.args, + `"${eventName}" event`, + "event", + assert, + ssfi, + ); + } + + for (const index in logs) { + if (index === undefined) { + break; + } else { + try { + const parsedLog = chaiUtils + .flag(context, "contract") + .interface.parseLog(logs[index]); + assertIsNotNull(parsedLog, "parsedLog"); + + assertArgsArraysEqual( + Assertion, + expectedArgs, + parsedLog.args, + `"${eventName}" event`, + "event", + assert, + ssfi, + ); + + return; + } catch {} + } + } + + assert( + false, + `The specified arguments (${util.inspect( + expectedArgs, + )}) were not included in any of the ${ + context.logs.length + } emitted "${eventName}" events`, + ); +}; diff --git a/v-next/hardhat-chai-matchers/src/internal/hardhatChaiMatchers.ts b/v-next/hardhat-chai-matchers/src/internal/hardhatChaiMatchers.ts index f8f82b7d00..29a4155731 100644 --- a/v-next/hardhat-chai-matchers/src/internal/hardhatChaiMatchers.ts +++ b/v-next/hardhat-chai-matchers/src/internal/hardhatChaiMatchers.ts @@ -1,38 +1,38 @@ import { supportAddressable } from "./addressable.js"; -// import { supportBigNumber } from "./big-number.js"; -// import { supportEmit } from "./emit"; +import { supportBigNumber } from "./big-number.js"; +import { supportChangeEtherBalance } from "./changeEtherBalance.js"; +import { supportChangeEtherBalances } from "./changeEtherBalances.js"; +import { supportChangeTokenBalance } from "./changeTokenBalance.js"; +import { supportEmit } from "./emit.js"; import { supportHexEqual } from "./hexEqual.js"; import { supportProperAddress } from "./properAddress.js"; import { supportProperHex } from "./properHex.js"; -// import { supportProperPrivateKey } from "./properPrivateKey"; -// import { supportChangeEtherBalance } from "./changeEtherBalance"; -// import { supportChangeEtherBalances } from "./changeEtherBalances"; -// import { supportChangeTokenBalance } from "./changeTokenBalance"; -// import { supportReverted } from "./reverted/reverted"; -// import { supportRevertedWith } from "./reverted/revertedWith"; -// import { supportRevertedWithCustomError } from "./reverted/revertedWithCustomError"; -// import { supportRevertedWithPanic } from "./reverted/revertedWithPanic"; -// import { supportRevertedWithoutReason } from "./reverted/revertedWithoutReason"; -// import { supportWithArgs } from "./withArgs"; +import { supportProperPrivateKey } from "./properPrivateKey.js"; +import { supportReverted } from "./reverted/reverted.js"; +import { supportRevertedWith } from "./reverted/revertedWith.js"; +import { supportRevertedWithCustomError } from "./reverted/revertedWithCustomError.js"; +import { supportRevertedWithPanic } from "./reverted/revertedWithPanic.js"; +import { supportRevertedWithoutReason } from "./reverted/revertedWithoutReason.js"; +import { supportWithArgs } from "./withArgs.js"; export function hardhatChaiMatchers( chai: Chai.ChaiStatic, chaiUtils: Chai.ChaiUtils, ): void { supportAddressable(chai.Assertion, chaiUtils); - // supportBigNumber(chai.Assertion, chaiUtils); - // supportEmit(chai.Assertion, chaiUtils); + supportBigNumber(chai.Assertion, chaiUtils); + supportEmit(chai.Assertion, chaiUtils); supportHexEqual(chai.Assertion); supportProperAddress(chai.Assertion); supportProperHex(chai.Assertion); - // supportProperPrivateKey(chai.Assertion); - // supportChangeEtherBalance(chai.Assertion, chaiUtils); - // supportChangeEtherBalances(chai.Assertion, chaiUtils); - // supportChangeTokenBalance(chai.Assertion, chaiUtils); - // supportReverted(chai.Assertion, chaiUtils); - // supportRevertedWith(chai.Assertion, chaiUtils); - // supportRevertedWithCustomError(chai.Assertion, chaiUtils); - // supportRevertedWithPanic(chai.Assertion, chaiUtils); - // supportRevertedWithoutReason(chai.Assertion, chaiUtils); - // supportWithArgs(chai.Assertion, chaiUtils); + supportProperPrivateKey(chai.Assertion); + supportChangeEtherBalance(chai.Assertion, chaiUtils); + supportChangeEtherBalances(chai.Assertion, chaiUtils); + supportChangeTokenBalance(chai.Assertion, chaiUtils); + supportReverted(chai.Assertion, chaiUtils); + supportRevertedWith(chai.Assertion, chaiUtils); + supportRevertedWithCustomError(chai.Assertion, chaiUtils); + supportRevertedWithPanic(chai.Assertion, chaiUtils); + supportRevertedWithoutReason(chai.Assertion, chaiUtils); + supportWithArgs(chai.Assertion, chaiUtils); } diff --git a/v-next/hardhat-chai-matchers/src/internal/misc/account.ts b/v-next/hardhat-chai-matchers/src/internal/misc/account.ts new file mode 100644 index 0000000000..93b1d83a5a --- /dev/null +++ b/v-next/hardhat-chai-matchers/src/internal/misc/account.ts @@ -0,0 +1,24 @@ +import type { Addressable } from "ethers/address"; + +import { HardhatError } from "@ignored/hardhat-vnext-errors"; +import { isAddress } from "@ignored/hardhat-vnext-utils/eth"; +import { isAddressable } from "ethers/address"; + +export async function getAddressOf( + account: Addressable | string, +): Promise { + if (isAddress(account)) { + return account; + } + + if (isAddressable(account)) { + return account.getAddress(); + } + + throw new HardhatError( + HardhatError.ERRORS.CHAI_MATCHERS.EXPECTED_STRING_OR_ADDRESSABLE, + { + account, + }, + ); +} diff --git a/v-next/hardhat-chai-matchers/src/internal/misc/balance.ts b/v-next/hardhat-chai-matchers/src/internal/misc/balance.ts new file mode 100644 index 0000000000..1616dec936 --- /dev/null +++ b/v-next/hardhat-chai-matchers/src/internal/misc/balance.ts @@ -0,0 +1,40 @@ +import type { EthereumProvider } from "@ignored/hardhat-vnext/types/providers"; +import type { Addressable } from "ethers"; + +import { toBigInt } from "@ignored/hardhat-vnext-utils/bigint"; +import { numberToHexString } from "@ignored/hardhat-vnext-utils/hex"; + +import { assertCanBeConvertedToBigint } from "../utils.js"; + +import { getAddressOf } from "./account.js"; + +export interface BalanceChangeOptions { + includeFee?: boolean; +} + +export function getAddresses( + accounts: Array, +): Promise { + return Promise.all(accounts.map((account) => getAddressOf(account))); +} + +export async function getBalances( + provider: EthereumProvider, + accounts: Array, + blockNumber?: number, +): Promise { + return Promise.all( + accounts.map(async (account) => { + const address = await getAddressOf(account); + + const result = await provider.request({ + method: "eth_getBalance", + params: [address, numberToHexString(blockNumber ?? 0)], + }); + + assertCanBeConvertedToBigint(result); + + return toBigInt(result); + }), + ); +} diff --git a/v-next/hardhat-chai-matchers/src/internal/properPrivateKey.ts b/v-next/hardhat-chai-matchers/src/internal/properPrivateKey.ts new file mode 100644 index 0000000000..777db3a9b8 --- /dev/null +++ b/v-next/hardhat-chai-matchers/src/internal/properPrivateKey.ts @@ -0,0 +1,12 @@ +export function supportProperPrivateKey(Assertion: Chai.AssertionStatic): void { + Assertion.addProperty("properPrivateKey", function (this: any) { + const subject = this._obj; + this.assert( + /^0x[0-9a-fA-F]{64}$/.test(subject), + `Expected "${subject}" to be a proper private key`, + `Expected "${subject}" NOT to be a proper private key`, + "proper private key (eg.: 0x1010101010101010101010101010101010101010101010101010101010101010)", + subject, + ); + }); +} diff --git a/v-next/hardhat-chai-matchers/src/internal/reverted/panic.ts b/v-next/hardhat-chai-matchers/src/internal/reverted/panic.ts new file mode 100644 index 0000000000..0c9b2038c8 --- /dev/null +++ b/v-next/hardhat-chai-matchers/src/internal/reverted/panic.ts @@ -0,0 +1,36 @@ +export const PANIC_CODES = { + ASSERTION_ERROR: 0x1, + ARITHMETIC_OVERFLOW: 0x11, + DIVISION_BY_ZERO: 0x12, + ENUM_CONVERSION_OUT_OF_BOUNDS: 0x21, + INCORRECTLY_ENCODED_STORAGE_BYTE_ARRAY: 0x22, + POP_ON_EMPTY_ARRAY: 0x31, + ARRAY_ACCESS_OUT_OF_BOUNDS: 0x32, + TOO_MUCH_MEMORY_ALLOCATED: 0x41, + ZERO_INITIALIZED_VARIABLE: 0x51, +}; + +export function panicErrorCodeToReason(errorCode: bigint): string | undefined { + switch (errorCode) { + case 0x1n: + return "Assertion error"; + case 0x11n: + return "Arithmetic operation overflowed outside of an unchecked block"; + case 0x12n: + return "Division or modulo division by zero"; + case 0x21n: + return "Tried to convert a value into an enum, but the value was too big or negative"; + case 0x22n: + return "Incorrectly encoded storage byte array"; + case 0x31n: + return ".pop() was called on an empty array"; + case 0x32n: + return "Array accessed at an out-of-bounds or negative index"; + case 0x41n: + return "Too much memory was allocated, or an array was created that is too large"; + case 0x51n: + return "Called a zero-initialized variable of internal function type"; + default: + return undefined; + } +} diff --git a/v-next/hardhat-chai-matchers/src/internal/reverted/reverted.ts b/v-next/hardhat-chai-matchers/src/internal/reverted/reverted.ts new file mode 100644 index 0000000000..ff003cc9bb --- /dev/null +++ b/v-next/hardhat-chai-matchers/src/internal/reverted/reverted.ts @@ -0,0 +1,164 @@ +import type { HardhatEthers } from "@ignored/hardhat-vnext-ethers/types"; + +import { HardhatError } from "@ignored/hardhat-vnext-errors"; +import { toBeHex } from "ethers/utils"; + +import { buildAssert } from "../../utils.js"; +import { REVERTED_MATCHER } from "../constants.js"; +import { assertIsNotNull, preventAsyncMatcherChaining } from "../utils.js"; + +import { + decodeReturnData, + getReturnDataFromError, + parseBytes32String, +} from "./utils.js"; + +export function supportReverted( + Assertion: Chai.AssertionStatic, + chaiUtils: Chai.ChaiUtils, +): void { + Assertion.addMethod( + REVERTED_MATCHER, + function (this: any, ethers: HardhatEthers) { + // capture negated flag before async code executes; see buildAssert's jsdoc + const negated = this.__flags.negate; + + const subject: unknown = this._obj; + + preventAsyncMatcherChaining(this, REVERTED_MATCHER, chaiUtils); + + // Check if the received value can be linked to a transaction, and then + // get the receipt of that transaction and check its status. + // + // If the value doesn't correspond to a transaction, then the `reverted` + // assertion is false. + const onSuccess = async (value: unknown) => { + const assert = buildAssert(negated, onSuccess); + + if (isTransactionResponse(value) || typeof value === "string") { + const hash = typeof value === "string" ? value : value.hash; + + if (!isValidTransactionHash(hash)) { + throw new HardhatError( + HardhatError.ERRORS.CHAI_MATCHERS.EXPECTED_VALID_TRANSACTION_HASH, + { + hash, + }, + ); + } + + const receipt = await getTransactionReceipt(ethers, hash); + + if (receipt === null) { + // If the receipt is null, maybe the string is a bytes32 string + if (isBytes32String(hash)) { + assert(false, "Expected transaction to be reverted"); + return; + } + } + + assertIsNotNull(receipt, "receipt"); + assert( + receipt.status === 0, + "Expected transaction to be reverted", + "Expected transaction NOT to be reverted", + ); + } else if (isTransactionReceipt(value)) { + const receipt = value; + + assert( + receipt.status === 0, + "Expected transaction to be reverted", + "Expected transaction NOT to be reverted", + ); + } else { + // If the subject of the assertion is not connected to a transaction + // (hash, receipt, etc.), then the assertion fails. + // Since we use `false` here, this means that `.not.to.be.reverted` + // assertions will pass instead of always throwing a validation error. + // This allows users to do things like: + // `expect(c.callStatic.f()).to.not.be.reverted` + assert(false, "Expected transaction to be reverted"); + } + }; + + const onError = (error: any) => { + const assert = buildAssert(negated, onError); + const returnData = getReturnDataFromError(error); + const decodedReturnData = decodeReturnData(returnData); + + if ( + decodedReturnData.kind === "Empty" || + decodedReturnData.kind === "Custom" + ) { + // in the negated case, if we can't decode the reason, we just indicate + // that the transaction didn't revert + assert(true, undefined, `Expected transaction NOT to be reverted`); + } else if (decodedReturnData.kind === "Error") { + assert( + true, + undefined, + `Expected transaction NOT to be reverted, but it reverted with reason '${decodedReturnData.reason}'`, + ); + } else if (decodedReturnData.kind === "Panic") { + assert( + true, + undefined, + `Expected transaction NOT to be reverted, but it reverted with panic code ${toBeHex( + decodedReturnData.code, + )} (${decodedReturnData.description})`, + ); + } else { + const _exhaustiveCheck: never = decodedReturnData; + } + }; + + // we use `Promise.resolve(subject)` so we can process both values and + // promises of values in the same way + const derivedPromise = Promise.resolve(subject).then(onSuccess, onError); + + this.then = derivedPromise.then.bind(derivedPromise); + this.catch = derivedPromise.catch.bind(derivedPromise); + + return this; + }, + ); +} + +async function getTransactionReceipt(ethers: HardhatEthers, hash: string) { + return ethers.provider.getTransactionReceipt(hash); +} + +function isTransactionResponse(x: unknown): x is { hash: string } { + if (typeof x === "object" && x !== null) { + return "hash" in x; + } + + return false; +} + +function isTransactionReceipt(x: unknown): x is { status: number } { + if (typeof x === "object" && x !== null && "status" in x) { + const status = x.status; + + // this means we only support ethers's receipts for now; adding support for + // raw receipts, where the status is an hexadecimal string, should be easy + // and we can do it if there's demand for that + return typeof status === "number"; + } + + return false; +} + +function isValidTransactionHash(x: string): boolean { + return /0x[0-9a-fA-F]{64}/.test(x); +} + +function isBytes32String(v: string): boolean { + try { + parseBytes32String(v); + return true; + } catch { + return false; + } +} diff --git a/v-next/hardhat-chai-matchers/src/internal/reverted/revertedWith.ts b/v-next/hardhat-chai-matchers/src/internal/reverted/revertedWith.ts new file mode 100644 index 0000000000..9a8b9c862d --- /dev/null +++ b/v-next/hardhat-chai-matchers/src/internal/reverted/revertedWith.ts @@ -0,0 +1,100 @@ +import { HardhatError } from "@ignored/hardhat-vnext-errors"; +import { toBeHex } from "ethers/utils"; + +import { buildAssert } from "../../utils.js"; +import { REVERTED_WITH_MATCHER } from "../constants.js"; +import { preventAsyncMatcherChaining } from "../utils.js"; + +import { decodeReturnData, getReturnDataFromError } from "./utils.js"; + +export function supportRevertedWith( + Assertion: Chai.AssertionStatic, + chaiUtils: Chai.ChaiUtils, +): void { + Assertion.addMethod( + REVERTED_WITH_MATCHER, + function (this: any, expectedReason: string | RegExp) { + // capture negated flag before async code executes; see buildAssert's jsdoc + const negated = this.__flags.negate; + + // validate expected reason + if ( + !(expectedReason instanceof RegExp) && + typeof expectedReason !== "string" + ) { + // if the input validation fails, we discard the subject since it could + // potentially be a rejected promise + Promise.resolve(this._obj).catch(() => {}); + + throw new HardhatError( + HardhatError.ERRORS.CHAI_MATCHERS.EXPECT_STRING_OR_REGEX_AS_REVERT_REASON, + ); + } + + const expectedReasonString = + expectedReason instanceof RegExp + ? expectedReason.source + : expectedReason; + + preventAsyncMatcherChaining(this, REVERTED_WITH_MATCHER, chaiUtils); + + const onSuccess = () => { + const assert = buildAssert(negated, onSuccess); + + assert( + false, + `Expected transaction to be reverted with reason '${expectedReasonString}', but it didn't revert`, + ); + }; + + const onError = (error: any) => { + const assert = buildAssert(negated, onError); + + const returnData = getReturnDataFromError(error); + const decodedReturnData = decodeReturnData(returnData); + + if (decodedReturnData.kind === "Empty") { + assert( + false, + `Expected transaction to be reverted with reason '${expectedReasonString}', but it reverted without a reason`, + ); + } else if (decodedReturnData.kind === "Error") { + const matchesExpectedReason = + expectedReason instanceof RegExp + ? expectedReason.test(decodedReturnData.reason) + : decodedReturnData.reason === expectedReasonString; + + assert( + matchesExpectedReason, + `Expected transaction to be reverted with reason '${expectedReasonString}', but it reverted with reason '${decodedReturnData.reason}'`, + `Expected transaction NOT to be reverted with reason '${expectedReasonString}', but it was`, + ); + } else if (decodedReturnData.kind === "Panic") { + assert( + false, + `Expected transaction to be reverted with reason '${expectedReasonString}', but it reverted with panic code ${toBeHex( + decodedReturnData.code, + )} (${decodedReturnData.description})`, + ); + } else if (decodedReturnData.kind === "Custom") { + assert( + false, + `Expected transaction to be reverted with reason '${expectedReasonString}', but it reverted with a custom error`, + ); + } else { + const _exhaustiveCheck: never = decodedReturnData; + } + }; + + const derivedPromise = Promise.resolve(this._obj).then( + onSuccess, + onError, + ); + + this.then = derivedPromise.then.bind(derivedPromise); + this.catch = derivedPromise.catch.bind(derivedPromise); + + return this; + }, + ); +} diff --git a/v-next/hardhat-chai-matchers/src/internal/reverted/revertedWithCustomError.ts b/v-next/hardhat-chai-matchers/src/internal/reverted/revertedWithCustomError.ts new file mode 100644 index 0000000000..3e9b4624de --- /dev/null +++ b/v-next/hardhat-chai-matchers/src/internal/reverted/revertedWithCustomError.ts @@ -0,0 +1,246 @@ +import type { Ssfi } from "../../utils.js"; +import type { ErrorFragment, Interface } from "ethers/abi"; +import type { BaseContract } from "ethers/contract"; + +import { HardhatError } from "@ignored/hardhat-vnext-errors"; +import { toBeHex } from "ethers/utils"; + +import { buildAssert } from "../../utils.js"; +import { + ASSERTION_ABORTED, + REVERTED_WITH_CUSTOM_ERROR_MATCHER, +} from "../constants.js"; +import { + assertArgsArraysEqual, + assertIsNotNull, + preventAsyncMatcherChaining, +} from "../utils.js"; + +import { + decodeReturnData, + getReturnDataFromError, + resultToArray, +} from "./utils.js"; + +export const REVERTED_WITH_CUSTOM_ERROR_CALLED = "customErrorAssertionCalled"; + +interface CustomErrorAssertionData { + contractInterface: Interface; + returnData: string; + customError: ErrorFragment; +} + +export function supportRevertedWithCustomError( + Assertion: Chai.AssertionStatic, + chaiUtils: Chai.ChaiUtils, +): void { + Assertion.addMethod( + REVERTED_WITH_CUSTOM_ERROR_MATCHER, + function ( + this: any, + contract: BaseContract, + expectedCustomErrorName: string, + ...args: any[] + ) { + // capture negated flag before async code executes; see buildAssert's jsdoc + const negated = this.__flags.negate; + + const { iface, expectedCustomError } = validateInput( + this._obj, + contract, + expectedCustomErrorName, + args, + ); + + preventAsyncMatcherChaining( + this, + REVERTED_WITH_CUSTOM_ERROR_MATCHER, + chaiUtils, + ); + + const onSuccess = () => { + if (chaiUtils.flag(this, ASSERTION_ABORTED) === true) { + return; + } + + const assert = buildAssert(negated, onSuccess); + + assert( + false, + `Expected transaction to be reverted with custom error '${expectedCustomErrorName}', but it didn't revert`, + ); + }; + + const onError = (error: any) => { + if (chaiUtils.flag(this, ASSERTION_ABORTED) === true) { + return; + } + + const assert = buildAssert(negated, onError); + + const returnData = getReturnDataFromError(error); + const decodedReturnData = decodeReturnData(returnData); + + if (decodedReturnData.kind === "Empty") { + assert( + false, + `Expected transaction to be reverted with custom error '${expectedCustomErrorName}', but it reverted without a reason`, + ); + } else if (decodedReturnData.kind === "Error") { + assert( + false, + `Expected transaction to be reverted with custom error '${expectedCustomErrorName}', but it reverted with reason '${decodedReturnData.reason}'`, + ); + } else if (decodedReturnData.kind === "Panic") { + assert( + false, + `Expected transaction to be reverted with custom error '${expectedCustomErrorName}', but it reverted with panic code ${toBeHex( + decodedReturnData.code, + )} (${decodedReturnData.description})`, + ); + } else if (decodedReturnData.kind === "Custom") { + if (decodedReturnData.id === expectedCustomError.selector) { + // add flag with the data needed for .withArgs + const customErrorAssertionData: CustomErrorAssertionData = { + contractInterface: iface, + customError: expectedCustomError, + returnData, + }; + this.customErrorData = customErrorAssertionData; + + assert( + true, + undefined, + `Expected transaction NOT to be reverted with custom error '${expectedCustomErrorName}', but it was`, + ); + } else { + // try to decode the actual custom error + // this will only work when the error comes from the given contract + const actualCustomError = iface.getError(decodedReturnData.id); + + if (actualCustomError === null) { + assert( + false, + `Expected transaction to be reverted with custom error '${expectedCustomErrorName}', but it reverted with a different custom error`, + ); + } else { + assert( + false, + `Expected transaction to be reverted with custom error '${expectedCustomErrorName}', but it reverted with custom error '${actualCustomError.name}'`, + ); + } + } + } else { + const _exhaustiveCheck: never = decodedReturnData; + } + }; + + const derivedPromise = Promise.resolve(this._obj).then( + onSuccess, + onError, + ); + + // needed for .withArgs + chaiUtils.flag(this, REVERTED_WITH_CUSTOM_ERROR_CALLED, true); + this.promise = derivedPromise; + + this.then = derivedPromise.then.bind(derivedPromise); + this.catch = derivedPromise.catch.bind(derivedPromise); + + return this; + }, + ); +} + +function validateInput( + obj: any, + contract: BaseContract, + expectedCustomErrorName: string, + args: any[], +): { iface: Interface; expectedCustomError: ErrorFragment } { + try { + // check the case where users forget to pass the contract as the first + // argument + if (typeof contract === "string" || contract?.interface === undefined) { + // discard subject since it could potentially be a rejected promise + throw new HardhatError( + HardhatError.ERRORS.CHAI_MATCHERS.FIRST_ARGUMENT_MUST_BE_A_CONTRACT, + ); + } + + // validate custom error name + if (typeof expectedCustomErrorName !== "string") { + throw new HardhatError( + HardhatError.ERRORS.CHAI_MATCHERS.STRING_EXPECTED_AS_CUSTOM_ERROR_NAME, + ); + } + + const iface = contract.interface; + const expectedCustomError = iface.getError(expectedCustomErrorName); + + // check that interface contains the given custom error + if (expectedCustomError === null) { + throw new HardhatError( + HardhatError.ERRORS.CHAI_MATCHERS.CONTRACT_DOES_NOT_HAVE_CUSTOM_ERROR, + { + customErrorName: expectedCustomErrorName, + }, + ); + } + + if (args.length > 0) { + throw new HardhatError( + HardhatError.ERRORS.CHAI_MATCHERS.REVERT_INVALID_ARGUMENTS_LENGTH, + ); + } + + return { iface, expectedCustomError }; + } catch (e) { + // if the input validation fails, we discard the subject since it could + // potentially be a rejected promise + Promise.resolve(obj).catch(() => {}); + throw e; + } +} + +export async function revertedWithCustomErrorWithArgs( + context: any, + Assertion: Chai.AssertionStatic, + _chaiUtils: Chai.ChaiUtils, + expectedArgs: any[], + ssfi: Ssfi, +): Promise { + const negated = false; // .withArgs cannot be negated + const assert = buildAssert(negated, ssfi); + + const customErrorAssertionData: CustomErrorAssertionData = + context.customErrorData; + + if (customErrorAssertionData === undefined) { + throw new HardhatError( + HardhatError.ERRORS.CHAI_MATCHERS.WITH_ARGS_FORBIDDEN, + ); + } + + const { contractInterface, customError, returnData } = + customErrorAssertionData; + + const errorFragment = contractInterface.getError(customError.name); + + assertIsNotNull(errorFragment, "errorFragment"); + + // We transform ether's Array-like object into an actual array as it's safer + const actualArgs = resultToArray( + contractInterface.decodeErrorResult(errorFragment, returnData), + ); + + assertArgsArraysEqual( + Assertion, + expectedArgs, + actualArgs, + `"${customError.name}" custom error`, + "error", + assert, + ssfi, + ); +} diff --git a/v-next/hardhat-chai-matchers/src/internal/reverted/revertedWithPanic.ts b/v-next/hardhat-chai-matchers/src/internal/reverted/revertedWithPanic.ts new file mode 100644 index 0000000000..3067568eec --- /dev/null +++ b/v-next/hardhat-chai-matchers/src/internal/reverted/revertedWithPanic.ts @@ -0,0 +1,118 @@ +import { HardhatError } from "@ignored/hardhat-vnext-errors"; +import { toBigInt } from "@ignored/hardhat-vnext-utils/bigint"; +import { toBeHex } from "ethers/utils"; + +import { buildAssert } from "../../utils.js"; +import { REVERTED_WITH_PANIC_MATCHER } from "../constants.js"; +import { preventAsyncMatcherChaining } from "../utils.js"; + +import { panicErrorCodeToReason } from "./panic.js"; +import { decodeReturnData, getReturnDataFromError } from "./utils.js"; + +export function supportRevertedWithPanic( + Assertion: Chai.AssertionStatic, + chaiUtils: Chai.ChaiUtils, +): void { + Assertion.addMethod( + REVERTED_WITH_PANIC_MATCHER, + function (this: any, expectedCodeArg: any) { + // capture negated flag before async code executes; see buildAssert's jsdoc + const negated = this.__flags.negate; + + let expectedCode: bigint | undefined; + try { + if (expectedCodeArg !== undefined) { + expectedCode = toBigInt(expectedCodeArg); + } + } catch { + // if the input validation fails, we discard the subject since it could + // potentially be a rejected promise + Promise.resolve(this._obj).catch(() => {}); + + throw new HardhatError( + HardhatError.ERRORS.CHAI_MATCHERS.PANIC_CODE_EXPECTED, + { + panicCode: expectedCodeArg, + }, + ); + } + + const code: bigint | undefined = expectedCode; + + let description: string | undefined; + let formattedPanicCode: string; + if (code === undefined) { + formattedPanicCode = "some panic code"; + } else { + const codeBN = toBigInt(code); + description = panicErrorCodeToReason(codeBN) ?? "unknown panic code"; + formattedPanicCode = `panic code ${toBeHex(codeBN)} (${description})`; + } + + preventAsyncMatcherChaining(this, REVERTED_WITH_PANIC_MATCHER, chaiUtils); + + const onSuccess = () => { + const assert = buildAssert(negated, onSuccess); + + assert( + false, + `Expected transaction to be reverted with ${formattedPanicCode}, but it didn't revert`, + ); + }; + + const onError = (error: any) => { + const assert = buildAssert(negated, onError); + + const returnData = getReturnDataFromError(error); + const decodedReturnData = decodeReturnData(returnData); + + if (decodedReturnData.kind === "Empty") { + assert( + false, + `Expected transaction to be reverted with ${formattedPanicCode}, but it reverted without a reason`, + ); + } else if (decodedReturnData.kind === "Error") { + assert( + false, + `Expected transaction to be reverted with ${formattedPanicCode}, but it reverted with reason '${decodedReturnData.reason}'`, + ); + } else if (decodedReturnData.kind === "Panic") { + if (code !== undefined) { + assert( + decodedReturnData.code === code, + `Expected transaction to be reverted with ${formattedPanicCode}, but it reverted with panic code ${toBeHex( + decodedReturnData.code, + )} (${decodedReturnData.description})`, + `Expected transaction NOT to be reverted with ${formattedPanicCode}, but it was`, + ); + } else { + assert( + true, + undefined, + `Expected transaction NOT to be reverted with ${formattedPanicCode}, but it reverted with panic code ${toBeHex( + decodedReturnData.code, + )} (${decodedReturnData.description})`, + ); + } + } else if (decodedReturnData.kind === "Custom") { + assert( + false, + `Expected transaction to be reverted with ${formattedPanicCode}, but it reverted with a custom error`, + ); + } else { + const _exhaustiveCheck: never = decodedReturnData; + } + }; + + const derivedPromise = Promise.resolve(this._obj).then( + onSuccess, + onError, + ); + + this.then = derivedPromise.then.bind(derivedPromise); + this.catch = derivedPromise.catch.bind(derivedPromise); + + return this; + }, + ); +} diff --git a/v-next/hardhat-chai-matchers/src/internal/reverted/revertedWithoutReason.ts b/v-next/hardhat-chai-matchers/src/internal/reverted/revertedWithoutReason.ts new file mode 100644 index 0000000000..810967f777 --- /dev/null +++ b/v-next/hardhat-chai-matchers/src/internal/reverted/revertedWithoutReason.ts @@ -0,0 +1,73 @@ +import { toBeHex } from "ethers/utils"; + +import { buildAssert } from "../../utils.js"; +import { REVERTED_WITHOUT_REASON_MATCHER } from "../constants.js"; +import { preventAsyncMatcherChaining } from "../utils.js"; + +import { decodeReturnData, getReturnDataFromError } from "./utils.js"; + +export function supportRevertedWithoutReason( + Assertion: Chai.AssertionStatic, + chaiUtils: Chai.ChaiUtils, +): void { + Assertion.addMethod(REVERTED_WITHOUT_REASON_MATCHER, function (this: any) { + // capture negated flag before async code executes; see buildAssert's jsdoc + const negated = this.__flags.negate; + + preventAsyncMatcherChaining( + this, + REVERTED_WITHOUT_REASON_MATCHER, + chaiUtils, + ); + + const onSuccess = () => { + const assert = buildAssert(negated, onSuccess); + + assert( + false, + `Expected transaction to be reverted without a reason, but it didn't revert`, + ); + }; + + const onError = (error: any) => { + const assert = buildAssert(negated, onError); + + const returnData = getReturnDataFromError(error); + const decodedReturnData = decodeReturnData(returnData); + + if (decodedReturnData.kind === "Error") { + assert( + false, + `Expected transaction to be reverted without a reason, but it reverted with reason '${decodedReturnData.reason}'`, + ); + } else if (decodedReturnData.kind === "Empty") { + assert( + true, + undefined, + "Expected transaction NOT to be reverted without a reason, but it was", + ); + } else if (decodedReturnData.kind === "Panic") { + assert( + false, + `Expected transaction to be reverted without a reason, but it reverted with panic code ${toBeHex( + decodedReturnData.code, + )} (${decodedReturnData.description})`, + ); + } else if (decodedReturnData.kind === "Custom") { + assert( + false, + `Expected transaction to be reverted without a reason, but it reverted with a custom error`, + ); + } else { + const _exhaustiveCheck: never = decodedReturnData; + } + }; + + const derivedPromise = Promise.resolve(this._obj).then(onSuccess, onError); + + this.then = derivedPromise.then.bind(derivedPromise); + this.catch = derivedPromise.catch.bind(derivedPromise); + + return this; + }); +} diff --git a/v-next/hardhat-chai-matchers/src/internal/reverted/utils.ts b/v-next/hardhat-chai-matchers/src/internal/reverted/utils.ts new file mode 100644 index 0000000000..b378c91b23 --- /dev/null +++ b/v-next/hardhat-chai-matchers/src/internal/reverted/utils.ts @@ -0,0 +1,146 @@ +import type { Result } from "ethers/abi"; + +import { HardhatError } from "@ignored/hardhat-vnext-errors"; +import { ensureError } from "@ignored/hardhat-vnext-utils/error"; +import { AssertionError } from "chai"; +import { AbiCoder, decodeBytes32String } from "ethers/abi"; + +import { panicErrorCodeToReason } from "./panic.js"; + +// method id of 'Error(string)' +const ERROR_STRING_PREFIX = "0x08c379a0"; + +// method id of 'Panic(uint256)' +const PANIC_CODE_PREFIX = "0x4e487b71"; + +/** + * Try to obtain the return data of a transaction from the given value. + * + * If the value is an error but it doesn't have data, we assume it's not related + * to a reverted transaction and we re-throw it. + */ +export function getReturnDataFromError(error: any): string { + if (!(error instanceof Error)) { + throw new AssertionError("Expected an Error object"); + } + + // eslint-disable-next-line @typescript-eslint/consistent-type-assertions -- some properties do not exist in the default Error instance + const typedError = error as any; + + const errorData = typedError.data ?? typedError.error?.data; + + if (errorData === undefined) { + // eslint-disable-next-line no-restricted-syntax -- re-throw because the error is not related to a reverted transaction + throw error; + } + + const returnData = typeof errorData === "string" ? errorData : errorData.data; + + if (returnData === undefined || typeof returnData !== "string") { + // eslint-disable-next-line no-restricted-syntax -- re-throw because the error is not related to a reverted transaction + throw error; + } + + return returnData; +} + +type DecodedReturnData = + | { + kind: "Error"; + reason: string; + } + | { + kind: "Empty"; + } + | { + kind: "Panic"; + code: bigint; + description: string; + } + | { + kind: "Custom"; + id: string; + data: string; + }; + +export function decodeReturnData(returnData: string): DecodedReturnData { + const abi = new AbiCoder(); + + if (returnData === "0x") { + return { kind: "Empty" }; + } else if (returnData.startsWith(ERROR_STRING_PREFIX)) { + const encodedReason = returnData.slice(ERROR_STRING_PREFIX.length); + let reason: string; + + try { + reason = abi.decode(["string"], `0x${encodedReason}`)[0]; + } catch (e) { + ensureError(e); + + throw new HardhatError(HardhatError.ERRORS.CHAI_MATCHERS.DECODING_ERROR, { + encodedData: encodedReason, + type: "string", + reason: e.message, + }); + } + + return { + kind: "Error", + reason, + }; + } else if (returnData.startsWith(PANIC_CODE_PREFIX)) { + const encodedReason = returnData.slice(PANIC_CODE_PREFIX.length); + let code: bigint; + try { + code = abi.decode(["uint256"], `0x${encodedReason}`)[0]; + } catch (e) { + ensureError(e); + + throw new HardhatError(HardhatError.ERRORS.CHAI_MATCHERS.DECODING_ERROR, { + encodedData: encodedReason, + type: "uint256", + reason: e.message, + }); + } + + const description = panicErrorCodeToReason(code) ?? "unknown panic code"; + + return { + kind: "Panic", + code, + description, + }; + } + + return { + kind: "Custom", + id: returnData.slice(0, 10), + data: `0x${returnData.slice(10)}`, + }; +} + +/** + * Takes an ethers result object and converts it into a (potentially nested) array. + * + * For example, given this error: + * + * struct Point(uint x, uint y) + * error MyError(string, Point) + * + * revert MyError("foo", Point(1, 2)) + * + * The resulting array will be: ["foo", [1n, 2n]] + */ +export function resultToArray(result: Result): any[] { + return result + .toArray() + .map((x) => + typeof x === "object" && x !== null && "toArray" in x + ? resultToArray(x) + : x, + ); +} + +export function parseBytes32String(v: string): string { + return decodeBytes32String(v); +} diff --git a/v-next/hardhat-chai-matchers/src/internal/utils.ts b/v-next/hardhat-chai-matchers/src/internal/utils.ts new file mode 100644 index 0000000000..436b51e3a9 --- /dev/null +++ b/v-next/hardhat-chai-matchers/src/internal/utils.ts @@ -0,0 +1,215 @@ +import type { AssertWithSsfi, Ssfi } from "../utils.js"; + +import { + assertHardhatInvariant, + HardhatError, +} from "@ignored/hardhat-vnext-errors"; +import { ensureError } from "@ignored/hardhat-vnext-utils/error"; +import { keccak256 } from "ethers/crypto"; +import { getBytes, hexlify, isHexString, toUtf8Bytes } from "ethers/utils"; +import ordinal from "ordinal"; + +import { PREVIOUS_MATCHER_NAME } from "./constants.js"; + +export function assertIsNotNull( + value: T, + valueName: string, +): asserts value is Exclude { + assertHardhatInvariant(value !== null, `${valueName} should not be null`); +} + +export function preventAsyncMatcherChaining( + context: object, + matcherName: string, + chaiUtils: Chai.ChaiUtils, + allowSelfChaining: boolean = false, +): void { + const previousMatcherName: string | undefined = chaiUtils.flag( + context, + PREVIOUS_MATCHER_NAME, + ); + + if (previousMatcherName === undefined) { + chaiUtils.flag(context, PREVIOUS_MATCHER_NAME, matcherName); + + return; + } + + if (previousMatcherName === matcherName && allowSelfChaining) { + return; + } + + throw new HardhatError( + HardhatError.ERRORS.CHAI_MATCHERS.MATCHER_CANNOT_BE_CHAINED_AFTER, + { + matcher: matcherName, + previousMatcher: previousMatcherName, + }, + ); +} + +export function assertArgsArraysEqual( + Assertion: Chai.AssertionStatic, + expectedArgs: any[], + actualArgs: any[], + tag: string, + assertionType: "event" | "error", + assert: AssertWithSsfi, + ssfi: Ssfi, +): void { + try { + innerAssertArgsArraysEqual( + Assertion, + expectedArgs, + actualArgs, + assertionType, + assert, + ssfi, + ); + } catch (err) { + ensureError(err); + err.message = `Error in ${tag}: ${err.message}`; + throw err; + } +} + +function innerAssertArgsArraysEqual( + Assertion: Chai.AssertionStatic, + expectedArgs: any[], + actualArgs: any[], + assertionType: "event" | "error", + assert: AssertWithSsfi, + ssfi: Ssfi, +) { + assert( + actualArgs.length === expectedArgs.length, + `Expected arguments array to have length ${expectedArgs.length}, but it has ${actualArgs.length}`, + ); + for (const [index, expectedArg] of expectedArgs.entries()) { + try { + innerAssertArgEqual( + Assertion, + expectedArg, + actualArgs[index], + assertionType, + assert, + ssfi, + ); + } catch (err) { + ensureError(err); + err.message = `Error in the ${ordinal(index + 1)} argument assertion: ${ + err.message + }`; + throw err; + } + } +} + +function innerAssertArgEqual( + Assertion: Chai.AssertionStatic, + expectedArg: any, + actualArg: any, + assertionType: "event" | "error", + assert: AssertWithSsfi, + ssfi: Ssfi, +) { + if (typeof expectedArg === "function") { + try { + if (expectedArg(actualArg) === true) return; + } catch (e) { + ensureError(e); + + assert( + false, + `The predicate threw when called: ${e.message}`, + // no need for a negated message, since we disallow mixing .not. with + // .withArgs + ); + } + assert( + false, + `The predicate did not return true`, + // no need for a negated message, since we disallow mixing .not. with + // .withArgs + ); + } else if (expectedArg instanceof Uint8Array) { + new Assertion(actualArg, undefined, ssfi, true).equal(hexlify(expectedArg)); + } else if ( + expectedArg?.length !== undefined && + typeof expectedArg !== "string" + ) { + innerAssertArgsArraysEqual( + Assertion, + expectedArg, + actualArg, + assertionType, + assert, + ssfi, + ); + } else { + if (actualArg.hash !== undefined && actualArg._isIndexed === true) { + if (assertionType !== "event") { + throw new HardhatError( + HardhatError.ERRORS.CHAI_MATCHERS.INDEXED_EVENT_FORBIDDEN, + ); + } + + new Assertion(actualArg.hash, undefined, ssfi, true).to.not.equal( + expectedArg, + "The actual value was an indexed and hashed value of the event argument. The expected value provided to the assertion should be the actual event argument (the pre-image of the hash). You provided the hash itself. Please supply the actual event argument (the pre-image of the hash) instead.", + ); + + const expectedArgBytes = isHexString(expectedArg) + ? getBytes(expectedArg) + : toUtf8Bytes(expectedArg); + + const expectedHash = keccak256(expectedArgBytes); + + new Assertion(actualArg.hash, undefined, ssfi, true).to.equal( + expectedHash, + `The actual value was an indexed and hashed value of the event argument. The expected value provided to the assertion was hashed to produce ${expectedHash}. The actual hash and the expected hash ${actualArg.hash} did not match`, + ); + } else { + new Assertion(actualArg, undefined, ssfi, true).equal(expectedArg); + } + } +} + +export function assertCanBeConvertedToBigint( + value: unknown, +): asserts value is string | number | bigint { + assertHardhatInvariant( + typeof value === "string" || + typeof value === "number" || + typeof value === "bigint", + "value should be of type string, number or bigint", + ); +} + +export function isBigNumber(source: any): boolean { + return typeof source === "bigint"; +} + +export function normalizeToBigInt(source: number | bigint | string): bigint { + switch (typeof source) { + case "number": + if (!Number.isInteger(source)) { + throw new HardhatError(HardhatError.ERRORS.GENERAL.INVALID_BIG_NUMBER, { + message: `${source} is not an integer`, + }); + } + if (!Number.isSafeInteger(source)) { + throw new HardhatError(HardhatError.ERRORS.GENERAL.INVALID_BIG_NUMBER, { + message: `Integer ${source} is unsafe. Consider using ${source}n instead. For more details, see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isSafeInteger`, + }); + } + // `break;` intentionally omitted. fallthrough desired. + case "string": + case "bigint": + return BigInt(source); + default: + throw new HardhatError(HardhatError.ERRORS.GENERAL.INVALID_BIG_NUMBER, { + message: `Unsupported type ${typeof source}`, + }); + } +} diff --git a/v-next/hardhat-chai-matchers/src/internal/withArgs.ts b/v-next/hardhat-chai-matchers/src/internal/withArgs.ts new file mode 100644 index 0000000000..4bc17642c5 --- /dev/null +++ b/v-next/hardhat-chai-matchers/src/internal/withArgs.ts @@ -0,0 +1,137 @@ +import { HardhatError } from "@ignored/hardhat-vnext-errors"; +import { AssertionError } from "chai"; +import { isAddressable } from "ethers/address"; + +import { ASSERTION_ABORTED } from "./constants.js"; +import { emitWithArgs, EMIT_CALLED } from "./emit.js"; +import { + revertedWithCustomErrorWithArgs, + REVERTED_WITH_CUSTOM_ERROR_CALLED, +} from "./reverted/revertedWithCustomError.js"; +import { isBigNumber, normalizeToBigInt } from "./utils.js"; + +/** + * A predicate for use with .withArgs(...), to induce chai to accept any value + * as a positive match with the argument. + * + * Example: expect(contract.emitInt()).to.emit(contract, "Int").withArgs(anyValue) + */ +export function anyValue(): boolean { + return true; +} + +/** + * A predicate for use with .withArgs(...), to induce chai to accept any + * unsigned integer as a positive match with the argument. + * + * Example: expect(contract.emitUint()).to.emit(contract, "Uint").withArgs(anyUint) + */ +export function anyUint(i: any): boolean { + if (typeof i === "number") { + if (i < 0) { + // eslint-disable-next-line no-restricted-syntax -- keep the original chai error structure + throw new AssertionError( + `anyUint expected its argument to be an unsigned integer, but it was negative, with value ${i}`, + ); + } + + return true; + } else if (isBigNumber(i)) { + const bigInt = normalizeToBigInt(i); + + if (bigInt < 0) { + // eslint-disable-next-line no-restricted-syntax -- keep the original chai error structure + throw new AssertionError( + `anyUint expected its argument to be an unsigned integer, but it was negative, with value ${bigInt}`, + ); + } + return true; + } + + // eslint-disable-next-line no-restricted-syntax -- keep the original chai error structure + throw new AssertionError( + `anyUint expected its argument to be an integer, but its type was '${typeof i}'`, + ); +} + +export function supportWithArgs( + Assertion: Chai.AssertionStatic, + chaiUtils: Chai.ChaiUtils, +): void { + Assertion.addMethod("withArgs", function (this: any, ...expectedArgs: any[]) { + const { emitCalled } = validateInput.call(this, chaiUtils); + + // Resolve arguments to their canonical form: + // - Addressable → address + const resolveArgument = (arg: any) => + isAddressable(arg) ? arg.getAddress() : arg; + + const onSuccess = (resolvedExpectedArgs: any[]) => { + if (emitCalled) { + return emitWithArgs( + this, + Assertion, + chaiUtils, + resolvedExpectedArgs, + onSuccess, + ); + } else { + return revertedWithCustomErrorWithArgs( + this, + Assertion, + chaiUtils, + resolvedExpectedArgs, + onSuccess, + ); + } + }; + + const promise = (this.then === undefined ? Promise.resolve() : this) + .then(() => Promise.all(expectedArgs.map(resolveArgument))) + .then(onSuccess); + + this.then = promise.then.bind(promise); + this.catch = promise.catch.bind(promise); + return this; + }); +} + +function validateInput( + this: any, + chaiUtils: Chai.ChaiUtils, +): { emitCalled: boolean } { + try { + if (Boolean(this.__flags.negate)) { + throw new HardhatError( + HardhatError.ERRORS.CHAI_MATCHERS.WITH_ARGS_CANNOT_BE_COMBINED_WITH_NOT, + ); + } + + const emitCalled = chaiUtils.flag(this, EMIT_CALLED) === true; + + const revertedWithCustomErrorCalled = + chaiUtils.flag(this, REVERTED_WITH_CUSTOM_ERROR_CALLED) === true; + + if (!emitCalled && !revertedWithCustomErrorCalled) { + throw new HardhatError( + HardhatError.ERRORS.CHAI_MATCHERS.WITH_ARGS_WRONG_COMBINATION, + ); + } + + if (emitCalled && revertedWithCustomErrorCalled) { + throw new HardhatError( + HardhatError.ERRORS.CHAI_MATCHERS.WITH_ARGS_COMBINED_WITH_INCOMPATIBLE_ASSERTIONS, + ); + } + + return { emitCalled }; + } catch (e) { + // signal that validation failed to allow the matchers to finish early + chaiUtils.flag(this, ASSERTION_ABORTED, true); + + // discard subject since it could potentially be a rejected promise + Promise.resolve(this._obj).catch(() => {}); + + throw e; + } +} diff --git a/v-next/hardhat-chai-matchers/src/panic.ts b/v-next/hardhat-chai-matchers/src/panic.ts new file mode 100644 index 0000000000..dc8fcbc3a4 --- /dev/null +++ b/v-next/hardhat-chai-matchers/src/panic.ts @@ -0,0 +1,2 @@ +// re-export here so users can import from "@nomicfoundation/hardhat-chai-matchers/panic" +export { PANIC_CODES } from "./internal/reverted/panic.js"; diff --git a/v-next/hardhat-chai-matchers/src/types.ts b/v-next/hardhat-chai-matchers/src/types.ts index e69de29bb2..81137e11b3 100644 --- a/v-next/hardhat-chai-matchers/src/types.ts +++ b/v-next/hardhat-chai-matchers/src/types.ts @@ -0,0 +1,66 @@ +// eslint-disable-next-line @typescript-eslint/no-namespace, @typescript-eslint/no-unused-vars -- the namespace must be re-declared but it is not used in this file +declare namespace Chai { + interface Assertion + extends LanguageChains, + NumericComparison, + TypeComparison { + emit(contract: any, eventName: string): EmitAssertion; + reverted: AsyncAssertion; + revertedWith(reason: string | RegExp): AsyncAssertion; + revertedWithoutReason(): AsyncAssertion; + revertedWithPanic(code?: any): AsyncAssertion; + revertedWithCustomError( + contract: { interface: any }, + customErrorName: string, + ): CustomErrorAssertion; + hexEqual(other: string): void; + properPrivateKey: void; + properAddress: void; + properHex(length: number): void; + changeEtherBalance( + account: any, + balance: any, + options?: any, + ): AsyncAssertion; + changeEtherBalances( + accounts: any[], + balances: any[] | ((changes: bigint[]) => boolean), + options?: any, + ): AsyncAssertion; + changeTokenBalance(token: any, account: any, balance: any): AsyncAssertion; + changeTokenBalances( + token: any, + account: any[], + balance: any[] | ((changes: bigint[]) => boolean), + ): AsyncAssertion; + } + + interface NumericComparison { + within(start: any, finish: any, message?: string): Assertion; + } + + interface NumberComparer { + // eslint-disable-next-line -- the interface must follow the original definition pattern + (value: any, message?: string): Assertion; + } + + interface CloseTo { + // eslint-disable-next-line -- the interface must follow the original definition pattern + (expected: any, delta: any, message?: string): Assertion; + } + + interface Length extends Assertion { + // eslint-disable-next-line -- the interface must follow the original definition pattern + (length: any, message?: string): Assertion; + } + + interface AsyncAssertion extends Assertion, Promise {} + + interface EmitAssertion extends AsyncAssertion { + withArgs(...args: any[]): AsyncAssertion; + } + + interface CustomErrorAssertion extends AsyncAssertion { + withArgs(...args: any[]): AsyncAssertion; + } +} diff --git a/v-next/hardhat-chai-matchers/src/utils.ts b/v-next/hardhat-chai-matchers/src/utils.ts new file mode 100644 index 0000000000..2b97c1ea9d --- /dev/null +++ b/v-next/hardhat-chai-matchers/src/utils.ts @@ -0,0 +1,57 @@ +import { HardhatError } from "@ignored/hardhat-vnext-errors"; +import { AssertionError } from "chai"; + +// just a generic function type to avoid errors from the ban-types eslint rule +export type Ssfi = (...args: any[]) => any; + +/** + * This function is used by the matchers to obtain an `assert` function, which + * should be used instead of `this.assert`. + * + * The first parameter is the value of the `negated` flag. Keep in mind that + * this value should be captured at the beginning of the matcher's + * implementation, before any async code is executed. Otherwise things like + * `.to.emit().and.not.to.emit()` won't work, because by the time the async part + * of the first emit is executed, the `.not` (executed synchronously) has already + * modified the flag. + * + * The second parameter is what Chai calls the "start stack function indicator", + * a function that is used to build the stack trace. It's unclear to us what's + * the best way to use this value, so this needs some trial-and-error. Use the + * existing matchers for a reference of something that works well enough. + */ +export function buildAssert(negated: boolean, ssfi: Ssfi) { + return function ( + condition: boolean, + messageFalse?: string | (() => string), + messageTrue?: string | (() => string), + ): void { + if (!negated && !condition) { + if (messageFalse === undefined) { + throw new HardhatError( + HardhatError.ERRORS.CHAI_MATCHERS.ASSERTION_WITHOUT_ERROR_MESSAGE, + ); + } + + const message = + typeof messageFalse === "function" ? messageFalse() : messageFalse; + // eslint-disable-next-line no-restricted-syntax -- keep the original chai error structure + throw new AssertionError(message, undefined, ssfi); + } + + if (negated && condition) { + if (messageTrue === undefined) { + throw new HardhatError( + HardhatError.ERRORS.CHAI_MATCHERS.ASSERTION_WITHOUT_ERROR_MESSAGE, + ); + } + + const message = + typeof messageTrue === "function" ? messageTrue() : messageTrue; + // eslint-disable-next-line no-restricted-syntax -- keep the original chai error structure + throw new AssertionError(message, undefined, ssfi); + } + }; +} + +export type AssertWithSsfi = ReturnType; diff --git a/v-next/hardhat-chai-matchers/src/withArgs.ts b/v-next/hardhat-chai-matchers/src/withArgs.ts new file mode 100644 index 0000000000..75d876169b --- /dev/null +++ b/v-next/hardhat-chai-matchers/src/withArgs.ts @@ -0,0 +1 @@ +export { anyUint, anyValue } from "./internal/withArgs.js"; diff --git a/v-next/hardhat-chai-matchers/test/big-number.ts b/v-next/hardhat-chai-matchers/test/big-number.ts new file mode 100644 index 0000000000..76f73209f1 --- /dev/null +++ b/v-next/hardhat-chai-matchers/test/big-number.ts @@ -0,0 +1,1281 @@ +import { describe, it } from "node:test"; + +import "../src/internal/add-chai-matchers"; + +import { HardhatError } from "@ignored/hardhat-vnext-errors"; +import { assertThrowsHardhatError } from "@nomicfoundation/hardhat-test-utils"; +import { AssertionError, expect } from "chai"; + +type SupportedNumber = number | bigint; + +const numberToBigNumberConversions = [(n: number) => BigInt(n)]; + +describe("BigNumber matchers", () => { + function typestr(n: string | SupportedNumber): string { + return typeof n; + } + + describe("length", () => { + const lengthFunctions: Array< + keyof Chai.Assertion & ("length" | "lengthOf") + > = ["length", "lengthOf"]; + + interface SuccessCase { + obj: object; + len: number; + } + + const positiveSuccessCases: SuccessCase[] = [ + { obj: [1, 2, 3], len: 3 }, + { + obj: new Map([ + [1, 2], + [3, 4], + ]), + len: 2, + }, + { obj: new Set([1, 2, 3]), len: 3 }, + ]; + describe("positive, successful assertions", () => { + for (const { obj, len } of positiveSuccessCases) { + for (const convert of [ + (n: number) => n, + ...numberToBigNumberConversions, + ]) { + const length = convert(len); + + describe(`with object ${obj.toString()} and with length operand of type ${typestr( + length, + )}`, () => { + for (const lenFunc of lengthFunctions) { + it(`.to.have.${lenFunc} should work`, () => { + expect(obj).to.have[lenFunc](length); + }); + } + }); + } + } + }); + + const negativeSuccessCases: SuccessCase[] = [ + { obj: [1, 2, 3], len: 2 }, + { + obj: new Map([ + [1, 2], + [3, 4], + ]), + len: 3, + }, + { obj: new Set([1, 2, 3]), len: 4 }, + ]; + describe("negative, successful assertions", () => { + for (const { obj, len } of negativeSuccessCases) { + for (const convert of [ + (n: number) => n, + ...numberToBigNumberConversions, + ]) { + const length = convert(len); + describe(`with object ${obj.toString()} and with length operand of type ${typestr( + length, + )}`, () => { + for (const lenFunc of lengthFunctions) { + it(`should work with .not.to.have.${lenFunc}`, () => { + expect(obj).not.to.have[lenFunc](length); + }); + } + }); + } + } + }); + + interface FailureCase extends SuccessCase { + msg: string | RegExp; + } + + const positiveFailureCases: FailureCase[] = [ + { + obj: [1, 2, 3], + len: 2, + msg: "expected [ 1, 2, 3 ] to have a length of 2 but got 3", + }, + { + obj: new Set([1, 2, 3]), + len: 2, + msg: /expected .* to have a size of 2 but got 3/, + }, + { + obj: new Map([ + [1, 2], + [3, 4], + ]), + len: 3, + msg: /expected .* to have a size of 3 but got 2/, + }, + ]; + describe("positive, failing assertions should throw the proper error message", () => { + for (const { obj, len, msg } of positiveFailureCases) { + for (const convert of [ + (n: number) => n, + ...numberToBigNumberConversions, + ]) { + const length = convert(len); + describe(`with object ${obj.toString()} and with operand of type ${typestr( + length, + )}`, () => { + for (const lenFunc of lengthFunctions) { + it(`should work with .to.have.${lenFunc}`, () => { + expect(() => expect(obj).to.have[lenFunc](length)).to.throw( + AssertionError, + msg, + ); + }); + } + }); + } + } + }); + + const operators = [ + "above", + "below", + "gt", + "lt", + "greaterThan", + "lessThan", + "least", + "most", + "gte", + "lte", + "greaterThanOrEqual", + "lessThanOrEqual", + ] as const; + type Operator = (typeof operators)[number]; + + interface SuccessCaseWithOperator extends SuccessCase { + operator: Operator; + } + + const positiveSuccessCasesWithOperator: SuccessCaseWithOperator[] = [ + { operator: "lt", len: 4, obj: [1, 2, 3] }, + { operator: "lt", len: 4, obj: new Set([1, 2, 3]) }, + { + operator: "lt", + len: 4, + obj: new Map([ + [1, 2], + [3, 4], + [5, 6], + ]), + }, + { operator: "above", len: 2, obj: [1, 2, 3] }, + { operator: "above", len: 2, obj: new Set([1, 2, 3]) }, + { + operator: "above", + len: 2, + obj: new Map([ + [1, 2], + [3, 4], + [5, 6], + ]), + }, + { operator: "gt", len: 2, obj: [1, 2, 3] }, + { operator: "gt", len: 2, obj: new Set([1, 2, 3]) }, + { + operator: "gt", + len: 2, + obj: new Map([ + [1, 2], + [3, 4], + [5, 6], + ]), + }, + { operator: "greaterThan", len: 2, obj: [1, 2, 3] }, + { operator: "greaterThan", len: 2, obj: new Set([1, 2, 3]) }, + { + operator: "greaterThan", + len: 2, + obj: new Map([ + [1, 2], + [3, 4], + [5, 6], + ]), + }, + { operator: "least", len: 3, obj: [1, 2, 3] }, + { operator: "least", len: 3, obj: new Set([1, 2, 3]) }, + { + operator: "least", + len: 3, + obj: new Map([ + [1, 2], + [3, 4], + [5, 6], + ]), + }, + { operator: "most", len: 3, obj: [1, 2, 3] }, + { operator: "most", len: 3, obj: new Set([1, 2, 3]) }, + { + operator: "most", + len: 3, + obj: new Map([ + [1, 2], + [3, 4], + [5, 6], + ]), + }, + { operator: "gte", len: 3, obj: [1, 2, 3] }, + { operator: "gte", len: 3, obj: new Set([1, 2, 3]) }, + { + operator: "gte", + len: 3, + obj: new Map([ + [1, 2], + [3, 4], + [5, 6], + ]), + }, + { operator: "lte", len: 3, obj: [1, 2, 3] }, + { operator: "lte", len: 3, obj: new Set([1, 2, 3]) }, + { + operator: "lte", + len: 3, + obj: new Map([ + [1, 2], + [3, 4], + [5, 6], + ]), + }, + { operator: "greaterThanOrEqual", len: 3, obj: [1, 2, 3] }, + { operator: "greaterThanOrEqual", len: 3, obj: new Set([1, 2, 3]) }, + { + operator: "greaterThanOrEqual", + len: 3, + obj: new Map([ + [1, 2], + [3, 4], + [5, 6], + ]), + }, + { operator: "lessThanOrEqual", len: 3, obj: [1, 2, 3] }, + { operator: "lessThanOrEqual", len: 3, obj: new Set([1, 2, 3]) }, + { + operator: "lessThanOrEqual", + len: 3, + obj: new Map([ + [1, 2], + [3, 4], + [5, 6], + ]), + }, + ]; + describe("positive, successful assertions chained off of length", () => { + for (const { obj, operator, len } of positiveSuccessCasesWithOperator) { + describe(`with object ${obj} and operator "${operator}"`, () => { + for (const convert of [ + (n: number) => n, + ...numberToBigNumberConversions, + ]) { + const length = convert(len); + describe(`with an operand of type ${typestr(length)}`, () => { + for (const lenFunc of lengthFunctions) { + it(`should work with .to.have.${lenFunc}.${operator}`, () => { + expect(obj).to.have[lenFunc][operator](length); + }); + } + }); + } + }); + } + }); + + const negativeSuccessCasesWithOperator: SuccessCaseWithOperator[] = [ + { operator: "above", len: 3, obj: [1, 2, 3] }, + { operator: "above", len: 3, obj: new Set([1, 2, 3]) }, + { + operator: "above", + len: 3, + obj: new Map([ + [1, 2], + [3, 4], + [5, 6], + ]), + }, + { operator: "below", len: 3, obj: [1, 2, 3] }, + { operator: "below", len: 3, obj: new Set([1, 2, 3]) }, + { + operator: "below", + len: 3, + obj: new Map([ + [1, 2], + [3, 4], + [5, 6], + ]), + }, + { operator: "gt", len: 3, obj: [1, 2, 3] }, + { operator: "gt", len: 3, obj: new Set([1, 2, 3]) }, + { + operator: "gt", + len: 3, + obj: new Map([ + [1, 2], + [3, 4], + [5, 6], + ]), + }, + { operator: "lt", len: 3, obj: [1, 2, 3] }, + { operator: "lt", len: 3, obj: new Set([1, 2, 3]) }, + { + operator: "lt", + len: 3, + obj: new Map([ + [1, 2], + [3, 4], + [5, 6], + ]), + }, + { operator: "greaterThan", len: 3, obj: [1, 2, 3] }, + { operator: "greaterThan", len: 3, obj: new Set([1, 2, 3]) }, + { + operator: "greaterThan", + len: 3, + obj: new Map([ + [1, 2], + [3, 4], + [5, 6], + ]), + }, + { operator: "lessThan", len: 3, obj: [1, 2, 3] }, + { operator: "lessThan", len: 3, obj: new Set([1, 2, 3]) }, + { + operator: "lessThan", + len: 3, + obj: new Map([ + [1, 2], + [3, 4], + [5, 6], + ]), + }, + { operator: "least", len: 4, obj: [1, 2, 3] }, + { operator: "least", len: 4, obj: new Set([1, 2, 3]) }, + { + operator: "least", + len: 4, + obj: new Map([ + [1, 2], + [3, 4], + [5, 6], + ]), + }, + { operator: "most", len: 2, obj: [1, 2, 3] }, + { operator: "most", len: 2, obj: new Set([1, 2, 3]) }, + { + operator: "most", + len: 2, + obj: new Map([ + [1, 2], + [3, 4], + [5, 6], + ]), + }, + { operator: "gte", len: 4, obj: [1, 2, 3] }, + { operator: "gte", len: 4, obj: new Set([1, 2, 3]) }, + { + operator: "gte", + len: 4, + obj: new Map([ + [1, 2], + [3, 4], + [5, 6], + ]), + }, + { operator: "lte", len: 2, obj: [1, 2, 3] }, + { operator: "lte", len: 2, obj: new Set([1, 2, 3]) }, + { + operator: "lte", + len: 2, + obj: new Map([ + [1, 2], + [3, 4], + [5, 6], + ]), + }, + { operator: "greaterThanOrEqual", len: 4, obj: [1, 2, 3] }, + { operator: "greaterThanOrEqual", len: 4, obj: new Set([1, 2, 3]) }, + { + operator: "greaterThanOrEqual", + len: 4, + obj: new Map([ + [1, 2], + [3, 4], + [5, 6], + ]), + }, + { operator: "lessThanOrEqual", len: 2, obj: [1, 2, 3] }, + { operator: "lessThanOrEqual", len: 2, obj: new Set([1, 2, 3]) }, + { + operator: "lessThanOrEqual", + len: 2, + obj: new Map([ + [1, 2], + [3, 4], + [5, 6], + ]), + }, + ]; + describe("negative, successful assertions chained off of length", () => { + for (const { obj, operator, len } of negativeSuccessCasesWithOperator) { + describe(`with object ${obj} and operator "${operator}"`, () => { + for (const convert of [ + (n: number) => n, + ...numberToBigNumberConversions, + ]) { + const length = convert(len); + describe(`with an operand of type ${typestr(length)}`, () => { + for (const lenFunc of lengthFunctions) { + it(`should work with .not.to.have.${lenFunc}.${operator}`, () => { + expect(obj).not.to.have[lenFunc][operator](length); + }); + } + }); + } + }); + } + }); + + interface FailureCaseWithOperator extends SuccessCaseWithOperator { + msg: string; + } + + const positiveFailureCasesWithOperator: FailureCaseWithOperator[] = [ + { + obj: [1, 2, 3], + operator: "above", + len: 3, + msg: "expected [ 1, 2, 3 ] to have a length above 3 but got 3", + }, + { + obj: [1, 2, 3], + operator: "below", + len: 3, + msg: "expected [ 1, 2, 3 ] to have a length below 3 but got 3", + }, + { + obj: [1, 2, 3], + operator: "gt", + len: 3, + msg: "expected [ 1, 2, 3 ] to have a length above 3 but got 3", + }, + { + obj: [1, 2, 3], + operator: "lt", + len: 3, + msg: "expected [ 1, 2, 3 ] to have a length below 3 but got 3", + }, + { + obj: [1, 2, 3], + operator: "greaterThan", + len: 3, + msg: "expected [ 1, 2, 3 ] to have a length above 3 but got 3", + }, + { + obj: [1, 2, 3], + operator: "lessThan", + len: 3, + msg: "expected [ 1, 2, 3 ] to have a length below 3 but got 3", + }, + { + obj: [1, 2, 3], + operator: "least", + len: 4, + msg: "expected [ 1, 2, 3 ] to have a length at least 4 but got 3", + }, + { + obj: [1, 2, 3], + operator: "most", + len: 2, + msg: "expected [ 1, 2, 3 ] to have a length at most 2 but got 3", + }, + { + obj: [1, 2, 3], + operator: "gte", + len: 4, + msg: "expected [ 1, 2, 3 ] to have a length at least 4 but got 3", + }, + { + obj: [1, 2, 3], + operator: "lte", + len: 2, + msg: "expected [ 1, 2, 3 ] to have a length at most 2 but got 3", + }, + { + obj: [1, 2, 3], + operator: "greaterThanOrEqual", + len: 4, + msg: "expected [ 1, 2, 3 ] to have a length at least 4 but got 3", + }, + { + obj: [1, 2, 3], + operator: "lessThanOrEqual", + len: 2, + msg: "expected [ 1, 2, 3 ] to have a length at most 2 but got 3", + }, + ]; + describe("positive, failing assertions chained off of length should throw the proper error message", () => { + for (const { + obj, + operator, + len, + msg, + } of positiveFailureCasesWithOperator) { + describe(`with object ${obj} and operator "${operator}"`, () => { + for (const convert of [ + (n: number) => n, + ...numberToBigNumberConversions, + ]) { + const length = convert(len); + describe(`with an operand of type ${typestr(length)}`, () => { + for (const lenFunc of lengthFunctions) { + it(`should work with .to.have.${lenFunc}.${operator}`, () => { + expect(() => + expect(obj).to.have[lenFunc][operator](length), + ).to.throw(AssertionError, msg); + }); + } + }); + } + }); + } + }); + }); + + describe("with two arguments", () => { + function checkAll( + actual: number, + expected: number, + test: ( + actual: string | SupportedNumber, + expected: string | SupportedNumber, + ) => void, + ) { + const conversions = [ + (n: number) => n, + (n: number) => n.toString(), + ...numberToBigNumberConversions, + ]; + for (const convertActual of conversions) { + for (const convertExpected of conversions) { + const convertedActual = convertActual(actual); + const convertedExpected = convertExpected(expected); + // a few particular combinations of types don't work: + if (typeof convertedActual === "string") { + continue; + } + if ( + typeof convertedActual === "number" && + typeof convertedExpected === "string" + ) { + continue; + } + test(convertedActual, convertedExpected); + } + } + } + + const operators = [ + "equals", + "equal", + "eq", + "above", + "below", + "gt", + "lt", + "greaterThan", + "lessThan", + "least", + "most", + "gte", + "lte", + "greaterThanOrEqual", + "lessThanOrEqual", + ] as const; + type Operator = (typeof operators)[number]; + + interface SuccessCase { + operator: Operator; + operands: [number, number]; + } + + interface FailureCase extends SuccessCase { + msg: string; + } + + const positiveSuccessCases: SuccessCase[] = [ + { operands: [10, 10], operator: "eq" }, + { operands: [10, 10], operator: "equal" }, + { operands: [10, 10], operator: "equals" }, + { operands: [10, 9], operator: "above" }, + { operands: [10, 9], operator: "gt" }, + { operands: [10, 9], operator: "greaterThan" }, + { operands: [10, 11], operator: "below" }, + { operands: [10, 11], operator: "lt" }, + { operands: [10, 11], operator: "lessThan" }, + { operands: [10, 10], operator: "least" }, + { operands: [10, 10], operator: "gte" }, + { operands: [10, 10], operator: "greaterThanOrEqual" }, + { operands: [10, 9], operator: "least" }, + { operands: [10, 9], operator: "gte" }, + { operands: [10, 9], operator: "greaterThanOrEqual" }, + { operands: [10, 10], operator: "most" }, + { operands: [10, 10], operator: "lte" }, + { operands: [10, 10], operator: "lessThanOrEqual" }, + { operands: [10, 11], operator: "most" }, + { operands: [10, 11], operator: "lte" }, + { operands: [10, 11], operator: "lessThanOrEqual" }, + ]; + for (const { operator, operands } of positiveSuccessCases) { + describe(`.to.${operator}`, () => { + checkAll(operands[0], operands[1], (a, b) => { + it(`should work with ${typestr(a)} and ${typestr(b)}`, () => { + expect(a).to[operator](b); + }); + }); + }); + } + + const eqPositiveFailureCase: Omit = { + operands: [10, 11], + msg: "expected 10 to equal 11", + }; + const gtPositiveFailureCase: Omit = { + operands: [10, 10], + msg: "expected 10 to be above 10", + }; + const ltPositiveFailureCase: Omit = { + operands: [11, 10], + msg: "expected 11 to be below 10", + }; + const gtePositiveFailureCase: Omit = { + operands: [10, 11], + msg: "expected 10 to be at least 11", + }; + const ltePositiveFailureCase: Omit = { + operands: [11, 10], + msg: "expected 11 to be at most 10", + }; + const positiveFailureCases: FailureCase[] = [ + { ...eqPositiveFailureCase, operator: "eq" }, + { ...eqPositiveFailureCase, operator: "equal" }, + { ...eqPositiveFailureCase, operator: "equals" }, + { ...gtPositiveFailureCase, operator: "above" }, + { ...gtPositiveFailureCase, operator: "gt" }, + { ...gtPositiveFailureCase, operator: "greaterThan" }, + { ...ltPositiveFailureCase, operator: "below" }, + { ...ltPositiveFailureCase, operator: "lt" }, + { ...ltPositiveFailureCase, operator: "lessThan" }, + { ...gtePositiveFailureCase, operator: "least" }, + { ...gtePositiveFailureCase, operator: "gte" }, + { ...gtePositiveFailureCase, operator: "greaterThanOrEqual" }, + { ...ltePositiveFailureCase, operator: "most" }, + { ...ltePositiveFailureCase, operator: "lte" }, + { ...ltePositiveFailureCase, operator: "lessThanOrEqual" }, + ]; + for (const { operator, operands, msg } of positiveFailureCases) { + describe(`.to.${operator} should throw the proper message on failure`, () => { + checkAll(operands[0], operands[1], (a, b) => { + it(`with ${typestr(a)} and ${typestr(b)}`, () => { + expect(() => expect(a).to[operator](b)).to.throw( + AssertionError, + msg, + ); + }); + }); + }); + } + + const negativeSuccessCases: SuccessCase[] = [ + { operands: [11, 10], operator: "eq" }, + { operands: [11, 10], operator: "equal" }, + { operands: [11, 10], operator: "equals" }, + { operands: [10, 10], operator: "above" }, + { operands: [10, 10], operator: "gt" }, + { operands: [10, 10], operator: "greaterThan" }, + { operands: [10, 10], operator: "below" }, + { operands: [10, 10], operator: "lt" }, + { operands: [10, 10], operator: "lessThan" }, + { operands: [10, 9], operator: "below" }, + { operands: [10, 9], operator: "lt" }, + { operands: [10, 9], operator: "lessThan" }, + { operands: [10, 11], operator: "least" }, + { operands: [10, 11], operator: "gte" }, + { operands: [10, 11], operator: "greaterThanOrEqual" }, + { operands: [10, 9], operator: "most" }, + { operands: [10, 9], operator: "lte" }, + { operands: [10, 9], operator: "lessThanOrEqual" }, + ]; + for (const { operator, operands } of negativeSuccessCases) { + describe(`.not.to.${operator}`, () => { + checkAll(operands[0], operands[1], (a, b) => { + it(`should work with ${typestr(a)} and ${typestr(b)}`, () => { + expect(a).not.to[operator](b); + }); + }); + }); + } + + const gtNegativeFailureCase: Omit = { + operands: [11, 10], + msg: "expected 11 to be at most 10", + }; + const eqNegativeFailureCase: Omit = { + operands: [10, 10], + msg: "expected 10 to not equal 10", + }; + const ltNegativeFailureCase: Omit = { + operands: [10, 11], + msg: "expected 10 to be at least 11", + }; + const gteNegativeFailureCase: Omit = { + operands: [11, 10], + msg: "expected 11 to be below 10", + }; + const lteNegativeFailureCase: Omit = { + operands: [10, 11], + msg: "expected 10 to be above 11", + }; + const negativeFailureCases: FailureCase[] = [ + { ...eqNegativeFailureCase, operator: "eq" }, + { ...eqNegativeFailureCase, operator: "equal" }, + { ...eqNegativeFailureCase, operator: "equals" }, + { ...gtNegativeFailureCase, operator: "above" }, + { ...gtNegativeFailureCase, operator: "gt" }, + { ...gtNegativeFailureCase, operator: "greaterThan" }, + { ...ltNegativeFailureCase, operator: "below" }, + { ...ltNegativeFailureCase, operator: "lt" }, + { ...ltNegativeFailureCase, operator: "lessThan" }, + { ...gteNegativeFailureCase, operator: "least" }, + { ...gteNegativeFailureCase, operator: "gte" }, + { ...gteNegativeFailureCase, operator: "greaterThanOrEqual" }, + { ...lteNegativeFailureCase, operator: "most" }, + { ...lteNegativeFailureCase, operator: "lte" }, + { ...lteNegativeFailureCase, operator: "lessThanOrEqual" }, + ]; + for (const { operator, operands, msg } of negativeFailureCases) { + describe("should throw the proper message on failure", () => { + checkAll(operands[0], operands[1], (a, b) => { + it(`with ${typestr(a)} and ${typestr(b)}`, () => { + expect(() => expect(a).not.to[operator](b)).to.throw( + AssertionError, + msg, + ); + }); + }); + }); + } + + operators.forEach((operator: Operator) => { + describe("should throw when comparing to a non-integral floating point literal", () => { + for (const convert of numberToBigNumberConversions) { + const converted = convert(1); + const msg = "1.1 is not an integer"; + it(`with .to.${operator} comparing float vs ${typestr( + converted, + )}`, () => { + assertThrowsHardhatError( + () => expect(1.1).to[operator](converted), + HardhatError.ERRORS.GENERAL.INVALID_BIG_NUMBER, + { + message: msg, + }, + ); + }); + + it(`with .to.${operator} comparing ${typestr( + converted, + )} vs float`, () => { + assertThrowsHardhatError( + () => expect(converted).to[operator](1.1), + HardhatError.ERRORS.GENERAL.INVALID_BIG_NUMBER, + { + message: msg, + }, + ); + }); + + it(`with .not.to.${operator} comparing float vs ${typestr( + converted, + )}`, () => { + assertThrowsHardhatError( + () => expect(1.1).not.to[operator](converted), + HardhatError.ERRORS.GENERAL.INVALID_BIG_NUMBER, + { + message: msg, + }, + ); + }); + + it(`with .not.to.${operator} comparing ${typestr( + converted, + )} vs float`, () => { + assertThrowsHardhatError( + () => expect(converted).not.to[operator](1.1), + HardhatError.ERRORS.GENERAL.INVALID_BIG_NUMBER, + { + message: msg, + }, + ); + }); + } + }); + + describe("should throw when comparing to an unsafe integer", () => { + const unsafeInt = 1e16; + const msg = `Integer 10000000000000000 is unsafe. Consider using ${unsafeInt}n instead. For more details, see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isSafeInteger`; + + describe(`when using .to.${operator}`, () => { + it("with an unsafe int as the first param", () => { + assertThrowsHardhatError( + () => expect(unsafeInt).to[operator](1n), + HardhatError.ERRORS.GENERAL.INVALID_BIG_NUMBER, + { + message: msg, + }, + ); + }); + it("with an unsafe int as the second param", () => { + assertThrowsHardhatError( + () => expect(1n).to[operator](unsafeInt), + HardhatError.ERRORS.GENERAL.INVALID_BIG_NUMBER, + { + message: msg, + }, + ); + }); + }); + + describe(`when using .not.to.${operator}`, () => { + it("with an unsafe int as the first param", () => { + assertThrowsHardhatError( + () => expect(unsafeInt).not.to[operator](1n), + HardhatError.ERRORS.GENERAL.INVALID_BIG_NUMBER, + { + message: msg, + }, + ); + }); + + it("with an unsafe int as the second param", () => { + assertThrowsHardhatError( + () => expect(1n).not.to[operator](unsafeInt), + HardhatError.ERRORS.GENERAL.INVALID_BIG_NUMBER, + { + message: msg, + }, + ); + }); + }); + }); + }); + + describe("deep equal", () => { + checkAll(1, 1, (a, b) => { + it(`should work with ${typestr(a)} and ${typestr(b)}`, () => { + // successful assertions + expect([a]).to.deep.equal([b]); + expect([[a], [a]]).to.deep.equal([[b], [b]]); + expect({ x: a }).to.deep.equal({ x: b }); + expect({ x: { y: a } }).to.deep.equal({ x: { y: b } }); + expect({ x: [a] }).to.deep.equal({ x: [b] }); + // failed assertions + // We are not checking the content of the arrays/objects because + // it depends on the type of the numbers (plain numbers, native + // bigints) + // Ideally the output would be normalized and we could check the + // actual content more easily. + expect(() => expect([a]).to.not.deep.equal([b])).to.throw( + AssertionError, + // the 's' modifier is used to make . match newlines too + /expected \[.*\] to not deeply equal \[.*\]/s, + ); + expect(() => + expect([[a], [a]]).to.not.deep.equal([[b], [b]]), + ).to.throw( + AssertionError, + /expected \[.*\] to not deeply equal \[.*\]/s, + ); + expect(() => expect({ x: a }).to.not.deep.equal({ x: b })).to.throw( + AssertionError, + /expected \{.*\} to not deeply equal \{.*\}/s, + ); + expect(() => + expect({ x: { y: a } }).to.not.deep.equal({ x: { y: b } }), + ).to.throw( + AssertionError, + /expected \{.*\} to not deeply equal \{.*\}/s, + ); + expect(() => + expect({ x: [a] }).to.not.deep.equal({ x: [b] }), + ).to.throw( + AssertionError, + /expected \{.*\} to not deeply equal \{.*\}/s, + ); + }); + }); + + checkAll(1, 2, (a, b) => { + it(`should work with ${typestr(a)} and ${typestr( + b, + )} (negative)`, () => { + // successful assertions + expect([a]).to.not.deep.equal([b]); + expect([[a], [a]]).to.not.deep.equal([[b], [b]]); + expect({ x: a }).to.not.deep.equal({ x: b }); + expect({ x: { y: a } }).to.not.deep.equal({ x: { y: b } }); + expect({ x: [a] }).to.not.deep.equal({ x: [b] }); + // failed assertions + expect(() => expect([a]).to.deep.equal([b])).to.throw( + AssertionError, + // the 's' modifier is used to make . match newlines too + /expected \[.*\] to deeply equal \[.*\]/s, + ); + expect(() => expect([[a], [a]]).to.deep.equal([[b], [b]])).to.throw( + AssertionError, + /expected \[.*\] to deeply equal \[.*\]/s, + ); + expect(() => expect({ x: a }).to.deep.equal({ x: b })).to.throw( + AssertionError, + /expected \{.*\} to deeply equal \{.*\}/s, + ); + expect(() => + expect({ x: { y: a } }).to.deep.equal({ x: { y: b } }), + ).to.throw(AssertionError, /expected \{.*\} to deeply equal \{.*\}/s); + expect(() => expect({ x: [a] }).to.deep.equal({ x: [b] })).to.throw( + AssertionError, + /expected \{.*\} to deeply equal \{.*\}/s, + ); + }); + }); + }); + }); + + describe("with three arguments", () => { + function checkAll( + a: number, + b: number, + c: number, + test: ( + a: SupportedNumber, + b: SupportedNumber, + c: SupportedNumber, + ) => void, + ) { + const conversions = [(n: number) => n, ...numberToBigNumberConversions]; + for (const convertA of conversions) { + for (const convertB of conversions) { + for (const convertC of conversions) { + test(convertA(a), convertB(b), convertC(c)); + } + } + } + } + + const operators = ["within", "closeTo", "approximately"] as const; + type Operator = (typeof operators)[number]; + + interface SuccessCase { + operator: Operator; + operands: [number, number, number]; + } + + interface FailureCase extends SuccessCase { + msg: string; + } + + const positiveSuccessCases: SuccessCase[] = [ + { operator: "within", operands: [100, 99, 101] }, + { operator: "closeTo", operands: [101, 101, 10] }, + { operator: "approximately", operands: [101, 101, 10] }, + ]; + for (const { operator, operands } of positiveSuccessCases) { + describe(`.to.be.${operator}`, () => { + checkAll(operands[0], operands[1], operands[2], (a, b, c) => { + it(`should work with ${typestr(a)}, ${typestr(b)} and ${typestr( + c, + )}`, () => { + expect(a).to.be[operator](b, c); + }); + }); + }); + } + + const positiveFailureCases: FailureCase[] = [ + { + operator: "within", + operands: [100, 80, 90], + msg: "expected 100 to be within 80..90", + }, + { + operator: "closeTo", + operands: [100, 111, 10], + msg: "expected 100 to be close to 111 +/- 10", + }, + { + operator: "approximately", + operands: [100, 111, 10], + msg: "expected 100 to be close to 111 +/- 10", + }, + ]; + for (const { operator, operands, msg } of positiveFailureCases) { + describe(`.to.be.${operator} should throw the proper message on failure`, () => { + checkAll(operands[0], operands[1], operands[2], (a, b, c) => { + it(`with ${typestr(a)}, ${typestr(b)} and ${typestr(c)}`, () => { + expect(() => expect(a).to.be[operator](b, c)).to.throw( + AssertionError, + msg, + ); + }); + }); + }); + } + + const closeToAndApproximately: Operator[] = ["closeTo", "approximately"]; + for (const closeToOrApproximately of closeToAndApproximately) { + describe(`${closeToOrApproximately} with an undefined delta argument`, () => { + for (const convert of [ + (n: number) => n, + ...numberToBigNumberConversions, + ]) { + const one = convert(1); + + it(`with a ${typestr( + one, + )} actual should throw a helpful error message`, () => { + expect(() => + expect(one).to.be[closeToOrApproximately](100, undefined), + ).to.throw( + AssertionError, + "the arguments to closeTo or approximately must be numbers, and a delta is required", + ); + }); + } + }); + } + + const negativeSuccessCases: SuccessCase[] = [ + { operator: "within", operands: [100, 101, 102] }, + { operator: "within", operands: [100, 98, 99] }, + { operator: "closeTo", operands: [100, 111, 10] }, + { operator: "approximately", operands: [100, 111, 10] }, + ]; + for (const { operator, operands } of negativeSuccessCases) { + describe(`.not.to.be.${operator}`, () => { + checkAll(operands[0], operands[1], operands[2], (a, b, c) => { + it(`should work with ${typestr(a)}, ${typestr(b)} and ${typestr( + c, + )}`, () => { + expect(a).not.to.be[operator](b, c); + }); + }); + }); + } + + const negativeFailureCases: FailureCase[] = [ + { + operator: "within", + operands: [100, 99, 101], + msg: "expected 100 to not be within 99..101", + }, + { + operator: "closeTo", + operands: [100, 101, 10], + msg: "expected 100 not to be close to 101 +/- 10", + }, + { + operator: "approximately", + operands: [100, 101, 10], + msg: "expected 100 not to be close to 101 +/- 10", + }, + ]; + for (const { operator, operands, msg } of negativeFailureCases) { + describe(`.not.to.be.${operator} should throw the proper message on failure`, () => { + checkAll(operands[0], operands[1], operands[2], (a, b, c) => { + it(`with ${typestr(a)}, ${typestr(b)} and ${typestr(c)}`, () => { + expect(() => expect(a).not.to.be[operator](b, c)).to.throw( + AssertionError, + msg, + ); + }); + }); + }); + } + + operators.forEach((operator: Operator) => { + describe(`should throw when comparing to a non-integral floating point literal`, () => { + for (const convertA of numberToBigNumberConversions) { + for (const convertB of numberToBigNumberConversions) { + const a = convertA(1); + const b = convertB(1); + const msg = "1.1 is not an integer"; + + describe(`with .to.${operator}`, () => { + it(`with float, ${typestr(a)}, ${typestr(a)}`, () => { + assertThrowsHardhatError( + () => expect(1.1).to[operator](a, b), + HardhatError.ERRORS.GENERAL.INVALID_BIG_NUMBER, + { + message: msg, + }, + ); + }); + + it(`with ${typestr(a)}, float, ${typestr(b)}`, () => { + assertThrowsHardhatError( + () => expect(a).to[operator](1.1, b), + HardhatError.ERRORS.GENERAL.INVALID_BIG_NUMBER, + { + message: msg, + }, + ); + }); + + it(`with ${typestr(a)}, ${typestr(b)}, float`, () => { + assertThrowsHardhatError( + () => expect(a).to[operator](b, 1.1), + HardhatError.ERRORS.GENERAL.INVALID_BIG_NUMBER, + { + message: msg, + }, + ); + }); + }); + + describe(`with not.to.${operator}`, () => { + it(`with float, ${typestr(a)}, ${typestr(a)}`, () => { + assertThrowsHardhatError( + () => expect(1.1).not.to[operator](a, b), + HardhatError.ERRORS.GENERAL.INVALID_BIG_NUMBER, + { + message: msg, + }, + ); + }); + + it(`with ${typestr(a)}, float, ${typestr(b)}`, () => { + assertThrowsHardhatError( + () => expect(a).not.to[operator](1.1, b), + HardhatError.ERRORS.GENERAL.INVALID_BIG_NUMBER, + { + message: msg, + }, + ); + }); + + it(`with ${typestr(a)}, ${typestr(b)}, float`, () => { + assertThrowsHardhatError( + () => expect(a).not.to[operator](b, 1.1), + HardhatError.ERRORS.GENERAL.INVALID_BIG_NUMBER, + { + message: msg, + }, + ); + }); + }); + } + } + }); + + describe("should throw when comparing to an unsafe integer", () => { + const unsafeInt = 1e16; + const msg = `Integer 10000000000000000 is unsafe. Consider using ${unsafeInt}n instead. For more details, see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isSafeInteger`; + + describe(`when using .to.${operator}`, () => { + it("with an unsafe int as the first param", () => { + assertThrowsHardhatError( + () => expect(unsafeInt).to[operator](1n, 1n), + HardhatError.ERRORS.GENERAL.INVALID_BIG_NUMBER, + { + message: msg, + }, + ); + }); + + it("with an unsafe int as the second param", () => { + assertThrowsHardhatError( + () => expect(1n).to[operator](unsafeInt, 1n), + HardhatError.ERRORS.GENERAL.INVALID_BIG_NUMBER, + { + message: msg, + }, + ); + }); + + it("with an unsafe int as the third param", () => { + assertThrowsHardhatError( + () => expect(1n).to[operator](1n, unsafeInt), + HardhatError.ERRORS.GENERAL.INVALID_BIG_NUMBER, + { + message: msg, + }, + ); + }); + }); + + describe(`when using not.to.${operator}`, () => { + it("with an unsafe int as the first param", () => { + assertThrowsHardhatError( + () => expect(unsafeInt).not.to[operator](1n, 1n), + HardhatError.ERRORS.GENERAL.INVALID_BIG_NUMBER, + { + message: msg, + }, + ); + }); + + it("with an unsafe int as the second param", () => { + assertThrowsHardhatError( + () => expect(1n).not.to[operator](unsafeInt, 1n), + HardhatError.ERRORS.GENERAL.INVALID_BIG_NUMBER, + { + message: msg, + }, + ); + }); + + it("with an unsafe int as the third param", () => { + assertThrowsHardhatError( + () => expect(1n).not.to[operator](1n, unsafeInt), + HardhatError.ERRORS.GENERAL.INVALID_BIG_NUMBER, + { + message: msg, + }, + ); + }); + }); + }); + }); + }); + + it("custom message is preserved", () => { + // normal numbers + expect(() => expect(1).to.equal(2, "custom message")).to.throw( + AssertionError, + "custom message", + ); + + // number and bigint + expect(() => expect(1).to.equal(2n, "custom message")).to.throw( + AssertionError, + "custom message", + ); + + // same but for deep comparisons + expect(() => expect([1]).to.equal([2], "custom message")).to.throw( + AssertionError, + "custom message", + ); + + // number and bigint + expect(() => expect([1]).to.equal([2n], "custom message")).to.throw( + AssertionError, + "custom message", + ); + }); +}); diff --git a/v-next/hardhat-chai-matchers/test/changeEtherBalance.ts b/v-next/hardhat-chai-matchers/test/changeEtherBalance.ts new file mode 100644 index 0000000000..d038888e84 --- /dev/null +++ b/v-next/hardhat-chai-matchers/test/changeEtherBalance.ts @@ -0,0 +1,668 @@ +import type { ChangeEtherBalance } from "./contracts.js"; +import type { Token } from "../src/internal/changeTokenBalance.js"; +import type { EthereumProvider } from "@ignored/hardhat-vnext/types/providers"; +import type { + HardhatEthers, + HardhatEthersSigner, +} from "@ignored/hardhat-vnext-ethers/types"; + +import path from "node:path"; +import { before, beforeEach, describe, it } from "node:test"; +import util from "node:util"; + +import { createHardhatRuntimeEnvironment } from "@ignored/hardhat-vnext/hre"; +import hardhatEthersPlugin from "@ignored/hardhat-vnext-ethers"; +import { useFixtureProject } from "@nomicfoundation/hardhat-test-utils"; +import { expect, AssertionError } from "chai"; + +import "../src/internal/add-chai-matchers"; + +describe("INTEGRATION: changeEtherBalance matcher", () => { + describe("with the in-process hardhat network", () => { + useFixtureProject("hardhat-project"); + runTests(); + }); + + // TODO: when V3 node is ready, add this functionality + // describe.skip("connected to a hardhat node", ()=> { + // useEnvironmentWithNode("hardhat-project"); + // runTests(); + // }); + + function runTests() { + let sender: HardhatEthersSigner; + let receiver: HardhatEthersSigner; + let contract: ChangeEtherBalance; + let txGasFees: number; + let mockToken: Token; + + let provider: EthereumProvider; + let ethers: HardhatEthers; + + before(async () => { + const hre = await createHardhatRuntimeEnvironment({ + paths: { + artifacts: `${process.cwd()}/artifacts`, + }, + plugins: [hardhatEthersPlugin], + }); + + ({ ethers, provider } = await hre.network.connect()); + }); + + beforeEach(async () => { + const wallets = await ethers.getSigners(); + sender = wallets[0]; + receiver = wallets[1]; + + contract = await ( + await ethers.getContractFactory<[], ChangeEtherBalance>( + "ChangeEtherBalance", + ) + ).deploy(); + + txGasFees = 1 * 21_000; + + await provider.request({ + method: "hardhat_setNextBlockBaseFeePerGas", + params: ["0x0"], + }); + + const MockToken = await ethers.getContractFactory<[], Token>("MockToken"); + mockToken = await MockToken.deploy(); + }); + + describe("Transaction Callback (legacy tx)", () => { + describe("Change balance, one account", () => { + it("should pass when expected balance change is passed as string and is equal to an actual", async () => { + await expect(() => + sender.sendTransaction({ + to: receiver.address, + value: 200, + }), + ).to.changeEtherBalance(provider, sender, "-200"); + }); + + it("should fail when block contains more than one transaction", async () => { + await provider.request({ + method: "evm_setAutomine", + params: [false], + }); + + // we set a gas limit to avoid using the whole block gas limit + await sender.sendTransaction({ + to: receiver.address, + value: 200, + gasLimit: 30_000, + }); + + await provider.request({ method: "evm_setAutomine", params: [true] }); + + await expect( + expect(() => + sender.sendTransaction({ + to: receiver.address, + value: 200, + gasLimit: 30_000, + }), + ).to.changeEtherBalance(provider, sender, -200, { + includeFee: true, + }), + ).to.be.eventually.rejectedWith( + "There should be only 1 transaction in the block", + ); + }); + + it("should pass when given an address as a string", async () => { + await expect(() => + sender.sendTransaction({ + to: receiver.address, + value: 200, + }), + ).to.changeEtherBalance(provider, sender.address, "-200"); + }); + + it("should pass when given a native bigint", async () => { + await expect(() => + sender.sendTransaction({ + to: receiver.address, + value: 200, + }), + ).to.changeEtherBalance(provider, sender, -200n); + }); + + it("should pass when given a predicate", async () => { + await expect(() => + sender.sendTransaction({ + to: receiver.address, + value: 200, + }), + ).to.changeEtherBalance( + provider, + sender, + (diff: bigint) => diff === -200n, + ); + }); + + it("should pass when expected balance change is passed as int and is equal to an actual", async () => { + await expect(() => + sender.sendTransaction({ + to: receiver.address, + value: 200, + }), + ).to.changeEtherBalance(provider, receiver, 200); + }); + + it("should take into account transaction fee", async () => { + await expect(() => + sender.sendTransaction({ + to: receiver.address, + gasPrice: 1, + value: 200, + }), + ).to.changeEtherBalance(provider, sender, -(txGasFees + 200), { + includeFee: true, + }); + }); + + it("should take into account transaction fee when given a predicate", async () => { + await expect(() => + sender.sendTransaction({ + to: receiver.address, + gasPrice: 1, + value: 200, + }), + ).to.changeEtherBalance( + provider, + sender, + (diff: bigint) => diff === -(BigInt(txGasFees) + 200n), + { + includeFee: true, + }, + ); + }); + + it("should ignore fee if receiver's wallet is being checked and includeFee was set", async () => { + await expect(() => + sender.sendTransaction({ + to: receiver.address, + gasPrice: 1, + value: 200, + }), + ).to.changeEtherBalance(provider, receiver, 200, { + includeFee: true, + }); + }); + + it("should take into account transaction fee by default", async () => { + await expect(() => + sender.sendTransaction({ + to: receiver.address, + gasPrice: 1, + value: 200, + }), + ).to.changeEtherBalance(provider, sender, -200); + }); + + it("should pass on negative case when expected balance does not satisfy the predicate", async () => { + await expect(() => + sender.sendTransaction({ + to: receiver.address, + value: 200, + }), + ).to.not.changeEtherBalance( + provider, + receiver, + (diff: bigint) => diff === 300n, + ); + }); + + it("should throw when fee was not calculated correctly", async () => { + await expect( + expect(() => + sender.sendTransaction({ + to: receiver.address, + gasPrice: 1, + value: 200, + }), + ).to.changeEtherBalance(provider, sender, -200, { + includeFee: true, + }), + ).to.be.eventually.rejectedWith( + AssertionError, + `Expected the ether balance of "${ + sender.address + }" to change by -200 wei, but it changed by -${txGasFees + 200} wei`, + ); + }); + + it("should throw when expected balance change value was different from an actual", async () => { + await expect( + expect(() => + sender.sendTransaction({ + to: receiver.address, + value: 200, + }), + ).to.changeEtherBalance(provider, sender, "-500"), + ).to.be.eventually.rejectedWith( + AssertionError, + `Expected the ether balance of "${sender.address}" to change by -500 wei, but it changed by -200 wei`, + ); + }); + + it("should throw when actual balance change value does not satisfy the predicate", async () => { + await expect( + expect(() => + sender.sendTransaction({ + to: receiver.address, + value: 200, + }), + ).to.changeEtherBalance( + provider, + sender, + (diff: bigint) => diff === -500n, + ), + ).to.be.eventually.rejectedWith( + AssertionError, + `Expected the ether balance change of "${sender.address}" to satisfy the predicate, but it didn't (balance change: -200 wei)`, + ); + }); + + it("should throw in negative case when expected balance change value was equal to an actual", async () => { + await expect( + expect(() => + sender.sendTransaction({ + to: receiver.address, + value: 200, + }), + ).to.not.changeEtherBalance(provider, sender, "-200"), + ).to.be.eventually.rejectedWith( + AssertionError, + `Expected the ether balance of "${sender.address}" NOT to change by -200 wei, but it did`, + ); + }); + + it("should throw in negative case when expected balance change value satisfies the predicate", async () => { + await expect( + expect(() => + sender.sendTransaction({ + to: receiver.address, + value: 200, + }), + ).to.not.changeEtherBalance( + provider, + sender, + (diff: bigint) => diff === -200n, + ), + ).to.be.eventually.rejectedWith( + AssertionError, + `Expected the ether balance change of "${sender.address}" to NOT satisfy the predicate, but it did (balance change: -200 wei)`, + ); + }); + + it("should pass when given zero value tx", async () => { + await expect(() => + sender.sendTransaction({ to: receiver.address, value: 0 }), + ).to.changeEtherBalance(provider, sender, 0); + }); + + it("shouldn't run the transaction twice", async () => { + const receiverBalanceBefore: bigint = + await ethers.provider.getBalance(receiver); + await expect(() => + sender.sendTransaction({ + to: receiver.address, + value: 200, + }), + ).to.changeEtherBalance(provider, sender, -200); + const receiverBalanceAfter: bigint = + await ethers.provider.getBalance(receiver); + const receiverBalanceChange = + receiverBalanceAfter - receiverBalanceBefore; + expect(receiverBalanceChange).to.equal(200n); + }); + }); + + describe("Change balance, one contract", () => { + it("should pass when expected balance change is passed as int and is equal to an actual", async () => { + await expect(async () => + sender.sendTransaction({ + to: contract, + value: 200, + }), + ).to.changeEtherBalance(provider, contract, 200); + }); + + it("should pass when calling function that returns half the sent ether", async () => { + await expect(async () => + contract.returnHalf({ value: 200 }), + ).to.changeEtherBalance(provider, sender, -100); + }); + }); + }); + + describe("Transaction Callback (1559 tx)", () => { + describe("Change balance, one account", () => { + it("should pass when expected balance change is passed as string and is equal to an actual", async () => { + await expect(() => + sender.sendTransaction({ + to: receiver.address, + maxFeePerGas: 2, + maxPriorityFeePerGas: 1, + value: 200, + }), + ).to.changeEtherBalance(provider, sender, "-200"); + }); + + it("should pass when expected balance change is passed as int and is equal to an actual", async () => { + await expect(() => + sender.sendTransaction({ + to: receiver.address, + maxFeePerGas: 2, + maxPriorityFeePerGas: 1, + value: 200, + }), + ).to.changeEtherBalance(provider, receiver, 200); + }); + + it("should take into account transaction fee", async () => { + await expect(() => + sender.sendTransaction({ + to: receiver.address, + maxFeePerGas: 2, + maxPriorityFeePerGas: 1, + value: 200, + }), + ).to.changeEtherBalance(provider, sender, -(txGasFees + 200), { + includeFee: true, + }); + }); + + it("should ignore fee if receiver's wallet is being checked and includeFee was set", async () => { + await expect(() => + sender.sendTransaction({ + to: receiver.address, + maxFeePerGas: 2, + maxPriorityFeePerGas: 1, + value: 200, + }), + ).to.changeEtherBalance(provider, receiver, 200, { + includeFee: true, + }); + }); + + it("should take into account transaction fee by default", async () => { + await expect(() => + sender.sendTransaction({ + to: receiver.address, + maxFeePerGas: 2, + maxPriorityFeePerGas: 1, + value: 200, + }), + ).to.changeEtherBalance(provider, sender, -200); + }); + + it("should throw when fee was not calculated correctly", async () => { + await expect( + expect(() => + sender.sendTransaction({ + to: receiver.address, + maxFeePerGas: 2, + maxPriorityFeePerGas: 1, + value: 200, + }), + ).to.changeEtherBalance(provider, sender, -200, { + includeFee: true, + }), + ).to.be.eventually.rejectedWith( + AssertionError, + `Expected the ether balance of "${ + sender.address + }" to change by -200 wei, but it changed by -${txGasFees + 200} wei`, + ); + }); + + it("should throw when expected balance change value was different from an actual", async () => { + await expect( + expect(() => + sender.sendTransaction({ + to: receiver.address, + maxFeePerGas: 2, + maxPriorityFeePerGas: 1, + value: 200, + }), + ).to.changeEtherBalance(provider, sender, "-500"), + ).to.be.eventually.rejectedWith( + AssertionError, + `Expected the ether balance of "${sender.address}" to change by -500 wei, but it changed by -200 wei`, + ); + }); + + it("should throw in negative case when expected balance change value was equal to an actual", async () => { + await expect( + expect(() => + sender.sendTransaction({ + to: receiver.address, + maxFeePerGas: 2, + maxPriorityFeePerGas: 1, + value: 200, + }), + ).to.not.changeEtherBalance(provider, sender, "-200"), + ).to.be.eventually.rejectedWith( + AssertionError, + `Expected the ether balance of "${sender.address}" NOT to change by -200 wei, but it did`, + ); + }); + }); + + describe("Change balance, one contract", () => { + it("should pass when expected balance change is passed as int and is equal to an actual", async () => { + await expect(async () => + sender.sendTransaction({ + to: contract, + maxFeePerGas: 2, + maxPriorityFeePerGas: 1, + value: 200, + }), + ).to.changeEtherBalance(provider, contract, 200); + }); + + it("should take into account transaction fee", async () => { + const tx = { + to: contract, + maxFeePerGas: 2, + maxPriorityFeePerGas: 1, + value: 200, + }; + const gas: bigint = await ethers.provider.estimateGas(tx); + await expect(() => sender.sendTransaction(tx)).to.changeEtherBalance( + provider, + sender, + -(gas + 200n), + { + includeFee: true, + }, + ); + }); + + it("should pass when calling function that returns half the sent ether", async () => { + await expect(async () => + contract.returnHalf({ + value: 200, + maxFeePerGas: 2, + maxPriorityFeePerGas: 1, + }), + ).to.changeEtherBalance(provider, sender, -100); + }); + }); + + it("shouldn't run the transaction twice", async () => { + const receiverBalanceBefore: bigint = + await ethers.provider.getBalance(receiver); + + await expect(() => + sender.sendTransaction({ + to: receiver.address, + maxFeePerGas: 2, + maxPriorityFeePerGas: 1, + value: 200, + }), + ).to.changeEtherBalance(provider, sender, -200); + + const receiverBalanceAfter: bigint = + await ethers.provider.getBalance(receiver); + + const receiverBalanceChange = + receiverBalanceAfter - receiverBalanceBefore; + + expect(receiverBalanceChange).to.equal(200n); + }); + }); + + describe("Transaction Response", () => { + describe("Change balance, one account", () => { + it("should pass when expected balance change is passed as string and is equal to an actual", async () => { + await expect( + await sender.sendTransaction({ + to: receiver.address, + value: 200, + }), + ).to.changeEtherBalance(provider, sender, "-200"); + }); + + it("should pass when expected balance change is passed as int and is equal to an actual", async () => { + await expect( + await sender.sendTransaction({ + to: receiver.address, + value: 200, + }), + ).to.changeEtherBalance(provider, receiver, 200); + }); + + it("should throw when expected balance change value was different from an actual", async () => { + await expect( + expect( + await sender.sendTransaction({ + to: receiver.address, + value: 200, + }), + ).to.changeEtherBalance(provider, sender, "-500"), + ).to.be.eventually.rejectedWith( + AssertionError, + `Expected the ether balance of "${sender.address}" to change by -500 wei, but it changed by -200 wei`, + ); + }); + + it("should throw in negative case when expected balance change value was equal to an actual", async () => { + await expect( + expect( + await sender.sendTransaction({ + to: receiver.address, + value: 200, + }), + ).to.not.changeEtherBalance(provider, sender, "-200"), + ).to.be.eventually.rejectedWith( + AssertionError, + `Expected the ether balance of "${sender.address}" NOT to change by -200 wei, but it did`, + ); + }); + }); + + describe("Change balance, one contract", () => { + it("should pass when expected balance change is passed as int and is equal to an actual", async () => { + await expect( + await sender.sendTransaction({ + to: contract, + value: 200, + }), + ).to.changeEtherBalance(provider, contract, 200); + }); + }); + }); + + describe("Transaction Promise", () => { + describe("Change balance, one account", () => { + it("should pass when expected balance change is passed as string and is equal to an actual", async () => { + await expect( + sender.sendTransaction({ + to: receiver.address, + value: 200, + }), + ).to.changeEtherBalance(provider, sender, "-200"); + }); + + it("should pass when expected balance change is passed as int and is equal to an actual", async () => { + await expect( + sender.sendTransaction({ + to: receiver.address, + value: 200, + }), + ).to.changeEtherBalance(provider, receiver, 200); + }); + + it("should throw when expected balance change value was different from an actual", async () => { + await expect( + expect( + sender.sendTransaction({ + to: receiver.address, + value: 200, + }), + ).to.changeEtherBalance(provider, sender, "-500"), + ).to.be.eventually.rejectedWith( + AssertionError, + `Expected the ether balance of "${sender.address}" to change by -500 wei, but it changed by -200 wei`, + ); + }); + + it("should throw in negative case when expected balance change value was equal to an actual", async () => { + await expect( + expect( + sender.sendTransaction({ + to: receiver.address, + value: 200, + }), + ).to.not.changeEtherBalance(provider, sender, "-200"), + ).to.be.eventually.rejectedWith( + AssertionError, + `Expected the ether balance of "${sender.address}" NOT to change by -200 wei, but it did`, + ); + }); + + // it("should throw if chained to another non-chainable method", () => { + // expect(() => + // expect( + // sender.sendTransaction({ + // to: receiver.address, + // value: 200, + // }), + // ) + // .to.changeTokenBalance(provider, mockToken, receiver, 50) + // .and.to.changeEtherBalance(provider, sender, "-200"), + // ).to.throw( + // /The matcher 'changeEtherBalance' cannot be chained after 'changeTokenBalance'./, + // ); + // }); + }); + }); + + describe("stack traces", () => { + // smoke test for stack traces + it("includes test file", async () => { + try { + await expect(() => + sender.sendTransaction({ + to: receiver.address, + value: 200, + }), + ).to.changeEtherBalance(provider, sender, -100); + } catch (e: any) { + expect(util.inspect(e)).to.include( + path.join("test", "changeEtherBalance.ts"), + ); + return; + } + expect.fail("Expected an exception but none was thrown"); + }); + }); + } +}); diff --git a/v-next/hardhat-chai-matchers/test/changeEtherBalances.ts b/v-next/hardhat-chai-matchers/test/changeEtherBalances.ts new file mode 100644 index 0000000000..2f0cf0157e --- /dev/null +++ b/v-next/hardhat-chai-matchers/test/changeEtherBalances.ts @@ -0,0 +1,529 @@ +import type { ChangeEtherBalance } from "./contracts.js"; +import type { Token } from "../src/internal/changeTokenBalance.js"; +import type { EthereumProvider } from "@ignored/hardhat-vnext/types/providers"; +import type { + HardhatEthers, + HardhatEthersSigner, +} from "@ignored/hardhat-vnext-ethers/types"; + +import path from "node:path"; +import { before, beforeEach, describe, it } from "node:test"; +import util from "node:util"; + +import { createHardhatRuntimeEnvironment } from "@ignored/hardhat-vnext/hre"; +import hardhatEthersPlugin from "@ignored/hardhat-vnext-ethers"; +import { useFixtureProject } from "@nomicfoundation/hardhat-test-utils"; +import { expect, AssertionError } from "chai"; + +import "../src/internal/add-chai-matchers"; + +describe("INTEGRATION: changeEtherBalances matcher", () => { + describe("with the in-process hardhat network", () => { + useFixtureProject("hardhat-project"); + runTests(); + }); + + // TODO: when V3 node is ready, add this functionality + // describe("connected to a hardhat node", ()=>{ + // process.env.CHAIN_ID = "12345"; + // useEnvironmentWithNode("hardhat-project"); + // runTests(); + // }); + + function runTests() { + let sender: HardhatEthersSigner; + let receiver: HardhatEthersSigner; + let contract: ChangeEtherBalance; + let txGasFees: number; + let mockToken: Token; + + let provider: EthereumProvider; + let ethers: HardhatEthers; + + before(async () => { + const hre = await createHardhatRuntimeEnvironment({ + paths: { + artifacts: `${process.cwd()}/artifacts`, + }, + plugins: [hardhatEthersPlugin], + }); + + ({ ethers, provider } = await hre.network.connect()); + }); + + beforeEach(async () => { + const wallets = await ethers.getSigners(); + sender = wallets[0]; + receiver = wallets[1]; + + contract = await ( + await ethers.getContractFactory<[], ChangeEtherBalance>( + "ChangeEtherBalance", + ) + ).deploy(); + + txGasFees = 1 * 21_000; + + await provider.request({ + method: "hardhat_setNextBlockBaseFeePerGas", + params: ["0x0"], + }); + + const MockToken = await ethers.getContractFactory<[], Token>("MockToken"); + mockToken = await MockToken.deploy(); + }); + + describe("Transaction Callback", () => { + describe("Change balances, one account, one contract", () => { + it("should pass when all expected balance changes are equal to actual values", async () => { + await expect(() => + sender.sendTransaction({ + to: contract, + value: 200, + }), + ).to.changeEtherBalances(provider, [sender, contract], [-200, 200]); + }); + }); + + describe("Change balances, contract forwards ether sent", () => { + it("should pass when contract function forwards all tx ether", async () => { + await expect(() => + contract.transferTo(receiver.address, { value: 200 }), + ).to.changeEtherBalances( + provider, + [sender, contract, receiver], + [-200, 0, 200], + ); + }); + }); + + describe("Change balance, multiple accounts", () => { + it("should pass when all expected balance changes are equal to actual values", async () => { + await expect(() => + sender.sendTransaction({ + to: receiver.address, + gasPrice: 1, + value: 200, + }), + ).to.changeEtherBalances(provider, [sender, receiver], ["-200", 200]); + }); + + it("should pass when given addresses as strings", async () => { + await expect(() => + sender.sendTransaction({ + to: receiver.address, + gasPrice: 1, + value: 200, + }), + ).to.changeEtherBalances( + provider, + [sender.address, receiver.address], + ["-200", 200], + ); + }); + + it("should pass when given native BigInt", async () => { + await expect(() => + sender.sendTransaction({ + to: receiver.address, + gasPrice: 1, + value: 200, + }), + ).to.changeEtherBalances(provider, [sender, receiver], [-200n, 200n]); + }); + + it("should pass when given a predicate", async () => { + await expect(() => + sender.sendTransaction({ + to: receiver.address, + gasPrice: 1, + value: 200, + }), + ).to.changeEtherBalances( + provider, + [sender, receiver], + ([senderDiff, receiverDiff]: bigint[]) => + senderDiff === -200n && receiverDiff === 200n, + ); + }); + + it("should fail when the predicate returns false", async () => { + await expect( + expect(() => + sender.sendTransaction({ + to: receiver.address, + gasPrice: 1, + value: 200, + }), + ).to.changeEtherBalances( + provider, + [sender, receiver], + ([senderDiff, receiverDiff]: bigint[]) => + senderDiff === -201n && receiverDiff === 200n, + ), + ).to.be.eventually.rejectedWith( + AssertionError, + "Expected the balance changes of the accounts to satisfy the predicate, but they didn't", + ); + }); + + it("should fail when the predicate returns true and the assertion is negated", async () => { + await expect( + expect(() => + sender.sendTransaction({ + to: receiver.address, + gasPrice: 1, + value: 200, + }), + ).to.not.changeEtherBalances( + provider, + [sender, receiver], + ([senderDiff, receiverDiff]: bigint[]) => + senderDiff === -200n && receiverDiff === 200n, + ), + ).to.be.eventually.rejectedWith( + AssertionError, + "Expected the balance changes of the accounts to NOT satisfy the predicate, but they did", + ); + }); + + it("should take into account transaction fee (legacy tx)", async () => { + await expect(() => + sender.sendTransaction({ + to: receiver.address, + gasPrice: 1, + value: 200, + }), + ).to.changeEtherBalances( + provider, + [sender, receiver, contract], + [-(txGasFees + 200), 200, 0], + { includeFee: true }, + ); + }); + + it("should take into account transaction fee (1559 tx)", async () => { + await expect(() => + sender.sendTransaction({ + to: receiver.address, + maxFeePerGas: 1, + maxPriorityFeePerGas: 1, + value: 200, + }), + ).to.changeEtherBalances( + provider, + [sender, receiver, contract], + [-(txGasFees + 200), 200, 0], + { includeFee: true }, + ); + }); + + it("should pass when given a single address", async () => { + await expect(() => + sender.sendTransaction({ to: receiver.address, value: 200 }), + ).to.changeEtherBalances(provider, [sender], [-200]); + }); + + it("should pass when negated and numbers don't match", async () => { + await expect(() => + sender.sendTransaction({ + to: receiver.address, + gasPrice: 1, + value: 200, + }), + ).to.not.changeEtherBalances( + provider, + [sender, receiver], + [-(txGasFees + 201), 200], + ); + await expect(() => + sender.sendTransaction({ + to: receiver.address, + value: 200, + }), + ).to.not.changeEtherBalances( + provider, + [sender, receiver], + [-200, 201], + { + includeFee: true, + }, + ); + }); + + it("should throw when expected balance change value was different from an actual for any wallet", async () => { + await expect( + expect(() => + sender.sendTransaction({ + to: receiver.address, + gasPrice: 1, + value: 200, + }), + ).to.changeEtherBalances(provider, [sender, receiver], [-200, 201]), + ).to.be.eventually.rejectedWith( + AssertionError, + `Expected the ether balance of ${receiver.address} (the 2nd address in the list) to change by 201 wei, but it changed by 200 wei`, + ); + await expect( + expect(() => + sender.sendTransaction({ + to: receiver.address, + gasPrice: 1, + value: 200, + }), + ).to.changeEtherBalances(provider, [sender, receiver], [-201, 200]), + ).to.be.eventually.rejectedWith( + AssertionError, + `Expected the ether balance of ${sender.address} (the 1st address in the list) to change by -201 wei, but it changed by -200 wei`, + ); + }); + + it("should throw in negative case when expected balance changes value were equal to an actual", async () => { + await expect( + expect(() => + sender.sendTransaction({ + to: receiver.address, + gasPrice: 1, + value: 200, + }), + ).to.not.changeEtherBalances( + provider, + [sender, receiver], + [-200, 200], + ), + ).to.be.eventually.rejectedWith( + AssertionError, + `Expected the ether balance of ${sender.address} (the 1st address in the list) NOT to change by -200 wei`, + ); + }); + + it("arrays have different length", async () => { + expect(() => + expect( + sender.sendTransaction({ + to: receiver.address, + gasPrice: 1, + value: 200, + }), + ).to.changeEtherBalances(provider, [sender], ["-200", 200]), + ).to.throw( + Error, + "The number of accounts (1) is different than the number of expected balance changes (2)", + ); + expect(() => + expect( + sender.sendTransaction({ + to: receiver.address, + gasPrice: 1, + value: 200, + }), + ).to.changeEtherBalances(provider, [sender, receiver], ["-200"]), + ).to.throw( + Error, + "The number of accounts (2) is different than the number of expected balance changes (1)", + ); + }); + }); + + it("shouldn't run the transaction twice", async () => { + const receiverBalanceBefore = + await ethers.provider.getBalance(receiver); + + await expect(() => + sender.sendTransaction({ + to: receiver.address, + gasPrice: 1, + value: 200, + }), + ).to.changeEtherBalances(provider, [sender, receiver], [-200, 200]); + + const receiverBalanceAfter = await ethers.provider.getBalance(receiver); + const receiverBalanceChange = + receiverBalanceAfter - receiverBalanceBefore; + + expect(receiverBalanceChange).to.equal(200n); + }); + }); + + describe("Transaction Response", () => { + describe("Change balances, one account, one contract", () => { + it("should pass when all expected balance changes are equal to actual values", async () => { + await expect( + await sender.sendTransaction({ + to: contract, + value: 200, + }), + ).to.changeEtherBalances(provider, [sender, contract], [-200, 200]); + }); + }); + + // it("should throw if chained to another non-chainable method", () => { + // expect(() => + // expect( + // sender.sendTransaction({ + // to: contract, + // value: 200, + // }), + // ) + // .to.changeTokenBalances( + // provider, + // mockToken, + // [sender, receiver], + // [-50, 100], + // ) + // .and.to.changeEtherBalances( + // provider, + // [sender, contract], + // [-200, 200], + // ), + // ).to.throw( + // /The matcher 'changeEtherBalances' cannot be chained after 'changeTokenBalances'./, + // ); + // }); + + describe("Change balance, multiple accounts", () => { + it("should pass when all expected balance changes are equal to actual values", async () => { + await expect( + await sender.sendTransaction({ + to: receiver.address, + gasPrice: 1, + value: 200, + }), + ).to.changeEtherBalances( + provider, + [sender, receiver], + [(-(txGasFees + 200)).toString(), 200], + { includeFee: true }, + ); + }); + + it("should take into account transaction fee", async () => { + await expect( + await sender.sendTransaction({ + to: receiver.address, + gasPrice: 1, + value: 200, + }), + ).to.changeEtherBalances( + provider, + [sender, receiver, contract], + [-(txGasFees + 200), 200, 0], + { includeFee: true }, + ); + }); + + it("should pass when negated and numbers don't match", async () => { + await expect( + await sender.sendTransaction({ + to: receiver.address, + value: 200, + }), + ).to.not.changeEtherBalances( + provider, + [sender, receiver], + [-201, 200], + ); + await expect( + await sender.sendTransaction({ + to: receiver.address, + value: 200, + }), + ).to.not.changeEtherBalances( + provider, + [sender, receiver], + [-200, 201], + ); + }); + + it("should throw when fee was not calculated correctly", async () => { + await expect( + expect( + await sender.sendTransaction({ + to: receiver.address, + gasPrice: 1, + value: 200, + }), + ).to.changeEtherBalances( + provider, + [sender, receiver], + [-200, 200], + { + includeFee: true, + }, + ), + ).to.be.eventually.rejectedWith( + AssertionError, + `Expected the ether balance of ${ + sender.address + } (the 1st address in the list) to change by -200 wei, but it changed by -${ + txGasFees + 200 + } wei`, + ); + }); + + it("should throw when expected balance change value was different from an actual for any wallet", async () => { + await expect( + expect( + await sender.sendTransaction({ + to: receiver.address, + value: 200, + }), + ).to.changeEtherBalances(provider, [sender, receiver], [-200, 201]), + ).to.be.eventually.rejectedWith( + AssertionError, + `Expected the ether balance of ${receiver.address} (the 2nd address in the list) to change by 201 wei, but it changed by 200 wei`, + ); + await expect( + expect( + await sender.sendTransaction({ + to: receiver.address, + value: 200, + }), + ).to.changeEtherBalances(provider, [sender, receiver], [-201, 200]), + ).to.be.eventually.rejectedWith( + AssertionError, + `Expected the ether balance of ${sender.address} (the 1st address in the list) to change by -201 wei, but it changed by -200 wei`, + ); + }); + + it("should throw in negative case when expected balance changes value were equal to an actual", async () => { + await expect( + expect( + await sender.sendTransaction({ + to: receiver.address, + value: 200, + }), + ).to.not.changeEtherBalances( + provider, + [sender, receiver], + [-200, 200], + ), + ).to.be.eventually.rejectedWith( + AssertionError, + `Expected the ether balance of ${sender.address} (the 1st address in the list) NOT to change by -200`, + ); + }); + }); + }); + + describe("stack traces", () => { + // smoke test for stack traces + it("includes test file", async () => { + try { + await expect(() => + sender.sendTransaction({ + to: receiver.address, + value: 200, + }), + ).to.changeEtherBalances(provider, [sender, receiver], [-100, 100]); + } catch (e: any) { + expect(util.inspect(e)).to.include( + path.join("test", "changeEtherBalances.ts"), + ); + return; + } + expect.fail("Expected an exception but none was thrown"); + }); + }); + } +}); diff --git a/v-next/hardhat-chai-matchers/test/changeTokenBalance.ts b/v-next/hardhat-chai-matchers/test/changeTokenBalance.ts new file mode 100644 index 0000000000..4dda237773 --- /dev/null +++ b/v-next/hardhat-chai-matchers/test/changeTokenBalance.ts @@ -0,0 +1,971 @@ +import type { MatchersContract } from "./contracts.js"; +import type { Token } from "../src/internal/changeTokenBalance.js"; +import type { EthereumProvider } from "@ignored/hardhat-vnext/types/providers"; +import type { + HardhatEthers, + HardhatEthersSigner, +} from "@ignored/hardhat-vnext-ethers/types"; +import type { TransactionResponse } from "ethers"; + +import assert from "node:assert/strict"; +import path from "node:path"; +import { afterEach, before, beforeEach, describe, it } from "node:test"; +import util from "node:util"; + +import { createHardhatRuntimeEnvironment } from "@ignored/hardhat-vnext/hre"; +import { HardhatError } from "@ignored/hardhat-vnext-errors"; +import hardhatEthersPlugin from "@ignored/hardhat-vnext-ethers"; +import { + assertThrowsHardhatError, + useFixtureProject, +} from "@nomicfoundation/hardhat-test-utils"; +import { AssertionError, expect } from "chai"; + +import "../src/internal/add-chai-matchers"; +import { clearTokenDescriptionsCache } from "../src/internal/changeTokenBalance.js"; +import { + CHANGE_TOKEN_BALANCE_MATCHER, + CHANGE_TOKEN_BALANCES_MATCHER, +} from "../src/internal/constants.js"; + +describe("INTEGRATION: changeTokenBalance and changeTokenBalances matchers", () => { + describe("with the in-process hardhat network", () => { + useFixtureProject("hardhat-project"); + runTests(); + }); + + // TODO: when V3 node is ready, add this functionality + // describe("connected to a hardhat node", ()=>{ + // useEnvironmentWithNode("hardhat-project"); + // runTests(); + // }); + + afterEach(() => { + clearTokenDescriptionsCache(); + }); + + function runTests() { + let sender: HardhatEthersSigner; + let receiver: HardhatEthersSigner; + let mockToken: Token; + let matchers: MatchersContract; + + let provider: EthereumProvider; + let ethers: HardhatEthers; + + before(async () => { + const hre = await createHardhatRuntimeEnvironment({ + paths: { + artifacts: `${process.cwd()}/artifacts`, + }, + plugins: [hardhatEthersPlugin], + }); + + ({ ethers, provider } = await hre.network.connect()); + }); + + beforeEach(async () => { + const wallets = await ethers.getSigners(); + sender = wallets[0]; + receiver = wallets[1]; + + const MockToken = await ethers.getContractFactory<[], Token>("MockToken"); + mockToken = await MockToken.deploy(); + + const Matchers = await ethers.getContractFactory<[], MatchersContract>( + "Matchers", + ); + matchers = await Matchers.deploy(); + }); + + describe("transaction that doesn't move tokens", () => { + it("with a promise of a TxResponse", async () => { + const transactionResponse = sender.sendTransaction({ + to: receiver.address, + }); + + await runAllAsserts( + provider, + transactionResponse, + mockToken, + [sender, receiver], + [0, 0], + ); + }); + + it("with a TxResponse", async () => { + await runAllAsserts( + provider, + await sender.sendTransaction({ + to: receiver.address, + }), + mockToken, + [sender, receiver], + [0, 0], + ); + }); + + it("with a function that returns a promise of a TxResponse", async () => { + await runAllAsserts( + provider, + () => sender.sendTransaction({ to: receiver.address }), + mockToken, + [sender, receiver], + [0, 0], + ); + }); + + it("with a function that returns a TxResponse", async () => { + const txResponse = await sender.sendTransaction({ + to: receiver.address, + }); + await runAllAsserts( + provider, + () => txResponse, + mockToken, + [sender, receiver], + [0, 0], + ); + }); + + it("accepts addresses", async () => { + await expect( + sender.sendTransaction({ to: receiver.address }), + ).to.changeTokenBalance(provider, mockToken, sender.address, 0); + + await expect(() => + sender.sendTransaction({ to: receiver.address }), + ).to.changeTokenBalances( + provider, + mockToken, + [sender.address, receiver.address], + [0, 0], + ); + + // mixing signers and addresses + await expect(() => + sender.sendTransaction({ to: receiver.address }), + ).to.changeTokenBalances( + provider, + mockToken, + [sender.address, receiver], + [0, 0], + ); + }); + + it("negated", async () => { + await expect( + sender.sendTransaction({ to: receiver.address }), + ).to.not.changeTokenBalance(provider, mockToken, sender, 1); + + await expect( + sender.sendTransaction({ to: receiver.address }), + ).to.not.changeTokenBalance( + provider, + mockToken, + sender, + (diff: bigint) => diff > 0n, + ); + + await expect(() => + sender.sendTransaction({ to: receiver.address }), + ).to.not.changeTokenBalances( + provider, + mockToken, + [sender, receiver], + [0, 1], + ); + + await expect(() => + sender.sendTransaction({ to: receiver.address }), + ).to.not.changeTokenBalances( + provider, + mockToken, + [sender, receiver], + [1, 0], + ); + + await expect(() => + sender.sendTransaction({ to: receiver.address }), + ).to.not.changeTokenBalances( + provider, + mockToken, + [sender, receiver], + [1, 1], + ); + }); + + describe("assertion failures", () => { + it("doesn't change balance as expected", async () => { + await expect( + expect( + sender.sendTransaction({ to: receiver.address }), + ).to.changeTokenBalance(provider, mockToken, sender, 1), + ).to.be.rejectedWith( + AssertionError, + /Expected the balance of MCK tokens for "0x\w{40}" to change by 1, but it changed by 0/, + ); + }); + + it("change balance doesn't satisfies the predicate", async () => { + await expect( + expect( + sender.sendTransaction({ to: receiver.address }), + ).to.changeTokenBalance( + provider, + mockToken, + sender, + (diff: bigint) => diff > 0n, + ), + ).to.be.rejectedWith( + AssertionError, + /Expected the balance of MCK tokens for "0x\w{40}" to satisfy the predicate, but it didn't \(token balance change: 0 wei\)/, + ); + }); + + it("changes balance in the way it was not expected", async () => { + await expect( + expect( + sender.sendTransaction({ to: receiver.address }), + ).to.not.changeTokenBalance(provider, mockToken, sender, 0), + ).to.be.rejectedWith( + AssertionError, + /Expected the balance of MCK tokens for "0x\w{40}" NOT to change by 0, but it did/, + ); + }); + + it("changes balance doesn't have to satisfy the predicate, but it did", async () => { + await expect( + expect( + sender.sendTransaction({ to: receiver.address }), + ).to.not.changeTokenBalance( + provider, + mockToken, + sender, + (diff: bigint) => diff < 1n, + ), + ).to.be.rejectedWith( + AssertionError, + /Expected the balance of MCK tokens for "0x\w{40}" to NOT satisfy the predicate, but it did \(token balance change: 0 wei\)/, + ); + }); + + it("the first account doesn't change its balance as expected", async () => { + await expect( + expect( + sender.sendTransaction({ to: receiver.address }), + ).to.changeTokenBalances( + provider, + mockToken, + [sender, receiver], + [1, 0], + ), + ).to.be.rejectedWith(AssertionError); + }); + + it("the second account doesn't change its balance as expected", async () => { + await expect( + expect( + sender.sendTransaction({ to: receiver.address }), + ).to.changeTokenBalances( + provider, + mockToken, + [sender, receiver], + [0, 1], + ), + ).to.be.rejectedWith(AssertionError); + }); + + it("neither account changes its balance as expected", async () => { + await expect( + expect( + sender.sendTransaction({ to: receiver.address }), + ).to.changeTokenBalances( + provider, + mockToken, + [sender, receiver], + [1, 1], + ), + ).to.be.rejectedWith(AssertionError); + }); + + it("accounts change their balance in the way it was not expected", async () => { + await expect( + expect( + sender.sendTransaction({ to: receiver.address }), + ).to.not.changeTokenBalances( + provider, + mockToken, + [sender, receiver], + [0, 0], + ), + ).to.be.rejectedWith(AssertionError); + }); + }); + }); + + describe("Transaction Callback", () => { + it("should pass when given predicate", async () => { + await expect(() => + mockToken.transfer(receiver.address, 75), + ).to.changeTokenBalances( + provider, + mockToken, + [sender, receiver], + ([senderDiff, receiverDiff]: bigint[]) => + senderDiff === -75n && receiverDiff === 75n, + ); + }); + + it("should fail when the predicate returns false", async () => { + await expect( + expect( + mockToken.transfer(receiver.address, 75), + ).to.changeTokenBalances( + provider, + mockToken, + [sender, receiver], + ([senderDiff, receiverDiff]: bigint[]) => + senderDiff === -74n && receiverDiff === 75n, + ), + ).to.be.eventually.rejectedWith( + AssertionError, + "Expected the balance changes of MCK to satisfy the predicate, but they didn't", + ); + }); + + it("should fail when the predicate returns true and the assertion is negated", async () => { + await expect( + expect( + mockToken.transfer(receiver.address, 75), + ).to.not.changeTokenBalances( + provider, + mockToken, + [sender, receiver], + ([senderDiff, receiverDiff]: bigint[]) => + senderDiff === -75n && receiverDiff === 75n, + ), + ).to.be.eventually.rejectedWith( + AssertionError, + "Expected the balance changes of MCK to NOT satisfy the predicate, but they did", + ); + }); + }); + + describe("transaction that transfers some tokens", () => { + it("with a promise of a TxResponse", async () => { + await runAllAsserts( + provider, + mockToken.transfer(receiver.address, 50), + mockToken, + [sender, receiver], + [-50, 50], + ); + + await runAllAsserts( + provider, + mockToken.transfer(receiver.address, 100), + mockToken, + [sender, receiver], + [-100, 100], + ); + }); + + it("with a TxResponse", async () => { + await runAllAsserts( + provider, + await mockToken.transfer(receiver.address, 150), + mockToken, + [sender, receiver], + [-150, 150], + ); + }); + + it("with a function that returns a promise of a TxResponse", async () => { + await runAllAsserts( + provider, + () => mockToken.transfer(receiver.address, 200), + mockToken, + [sender, receiver], + [-200, 200], + ); + }); + + it("with a function that returns a TxResponse", async () => { + const txResponse = await mockToken.transfer(receiver.address, 300); + await runAllAsserts( + provider, + () => txResponse, + mockToken, + [sender, receiver], + [-300, 300], + ); + }); + + it("changeTokenBalance shouldn't run the transaction twice", async () => { + const receiverBalanceBefore = await mockToken.balanceOf( + receiver.address, + ); + + await expect(() => + mockToken.transfer(receiver.address, 50), + ).to.changeTokenBalance(provider, mockToken, receiver, 50); + + const receiverBalanceChange = + (await mockToken.balanceOf(receiver.address)) - receiverBalanceBefore; + + expect(receiverBalanceChange).to.equal(50n); + }); + + it("changeTokenBalances shouldn't run the transaction twice", async () => { + const receiverBalanceBefore = await mockToken.balanceOf( + receiver.address, + ); + + await expect(() => + mockToken.transfer(receiver.address, 50), + ).to.changeTokenBalances( + provider, + mockToken, + [sender, receiver], + [-50, 50], + ); + + const receiverBalanceChange = + (await mockToken.balanceOf(receiver.address)) - receiverBalanceBefore; + + expect(receiverBalanceChange).to.equal(50n); + }); + + it("negated", async () => { + await expect( + mockToken.transfer(receiver.address, 50), + ).to.not.changeTokenBalance(provider, mockToken, sender, 0); + await expect( + mockToken.transfer(receiver.address, 50), + ).to.not.changeTokenBalance(provider, mockToken, sender, 1); + + await expect( + mockToken.transfer(receiver.address, 50), + ).to.not.changeTokenBalances( + provider, + mockToken, + [sender, receiver], + [0, 0], + ); + await expect( + mockToken.transfer(receiver.address, 50), + ).to.not.changeTokenBalances( + provider, + mockToken, + [sender, receiver], + [-50, 0], + ); + await expect( + mockToken.transfer(receiver.address, 50), + ).to.not.changeTokenBalances( + provider, + mockToken, + [sender, receiver], + [0, 50], + ); + }); + + describe("assertion failures", () => { + it("doesn't change balance as expected", async () => { + await expect( + expect( + mockToken.transfer(receiver.address, 50), + ).to.changeTokenBalance(provider, mockToken, receiver, 500), + ).to.be.rejectedWith( + AssertionError, + /Expected the balance of MCK tokens for "0x\w{40}" to change by 500, but it changed by 50/, + ); + }); + + it("change balance doesn't satisfies the predicate", async () => { + await expect( + expect( + mockToken.transfer(receiver.address, 50), + ).to.changeTokenBalance( + provider, + mockToken, + receiver, + (diff: bigint) => diff === 500n, + ), + ).to.be.rejectedWith( + AssertionError, + /Expected the balance of MCK tokens for "0x\w{40}" to satisfy the predicate, but it didn't \(token balance change: 50 wei\)/, + ); + }); + + it("changes balance in the way it was not expected", async () => { + await expect( + expect( + mockToken.transfer(receiver.address, 50), + ).to.not.changeTokenBalance(provider, mockToken, receiver, 50), + ).to.be.rejectedWith( + AssertionError, + /Expected the balance of MCK tokens for "0x\w{40}" NOT to change by 50, but it did/, + ); + }); + + it("changes balance doesn't have to satisfy the predicate, but it did", async () => { + await expect( + expect( + mockToken.transfer(receiver.address, 50), + ).to.not.changeTokenBalance( + provider, + mockToken, + receiver, + (diff: bigint) => diff === 50n, + ), + ).to.be.rejectedWith( + AssertionError, + /Expected the balance of MCK tokens for "0x\w{40}" to NOT satisfy the predicate, but it did \(token balance change: 50 wei\)/, + ); + }); + + it("the first account doesn't change its balance as expected", async () => { + await expect( + expect( + mockToken.transfer(receiver.address, 50), + ).to.changeTokenBalances( + provider, + mockToken, + [sender, receiver], + [-100, 50], + ), + ).to.be.rejectedWith(AssertionError); + }); + + it("the second account doesn't change its balance as expected", async () => { + await expect( + expect( + mockToken.transfer(receiver.address, 50), + ).to.changeTokenBalances( + provider, + mockToken, + [sender, receiver], + [-50, 100], + ), + ).to.be.rejectedWith(AssertionError); + }); + + it("neither account changes its balance as expected", async () => { + await expect( + expect( + mockToken.transfer(receiver.address, 50), + ).to.changeTokenBalances( + provider, + mockToken, + [sender, receiver], + [0, 0], + ), + ).to.be.rejectedWith(AssertionError); + }); + + it("accounts change their balance in the way it was not expected", async () => { + await expect( + expect( + mockToken.transfer(receiver.address, 50), + ).to.not.changeTokenBalances( + provider, + mockToken, + [sender, receiver], + [-50, 50], + ), + ).to.be.rejectedWith(AssertionError); + }); + + it("uses the token name if the contract doesn't have a symbol", async () => { + const TokenWithOnlyName = await ethers.getContractFactory<[], Token>( + "TokenWithOnlyName", + ); + + const tokenWithOnlyName = await TokenWithOnlyName.deploy(); + + await expect( + expect( + tokenWithOnlyName.transfer(receiver.address, 50), + ).to.changeTokenBalance(provider, tokenWithOnlyName, receiver, 500), + ).to.be.rejectedWith( + AssertionError, + /Expected the balance of MockToken tokens for "0x\w{40}" to change by 500, but it changed by 50/, + ); + + await expect( + expect( + tokenWithOnlyName.transfer(receiver.address, 50), + ).to.not.changeTokenBalance( + provider, + tokenWithOnlyName, + receiver, + 50, + ), + ).to.be.rejectedWith( + AssertionError, + /Expected the balance of MockToken tokens for "0x\w{40}" NOT to change by 50, but it did/, + ); + }); + + it("uses the contract address if the contract doesn't have name or symbol", async () => { + const TokenWithoutNameNorSymbol = await ethers.getContractFactory< + [], + Token + >("TokenWithoutNameNorSymbol"); + + const tokenWithoutNameNorSymbol = + await TokenWithoutNameNorSymbol.deploy(); + + await expect( + expect( + tokenWithoutNameNorSymbol.transfer(receiver.address, 50), + ).to.changeTokenBalance( + provider, + tokenWithoutNameNorSymbol, + receiver, + 500, + ), + ).to.be.rejectedWith( + AssertionError, + /Expected the balance of tokens for "0x\w{40}" to change by 500, but it changed by 50/, + ); + + await expect( + expect( + tokenWithoutNameNorSymbol.transfer(receiver.address, 50), + ).to.not.changeTokenBalance( + provider, + tokenWithoutNameNorSymbol, + receiver, + 50, + ), + ).to.be.rejectedWith( + AssertionError, + /Expected the balance of tokens for "0x\w{40}" NOT to change by 50, but it did/, + ); + }); + + // it("changeTokenBalance: Should throw if chained to another non-chainable method", () => { + // expect(() => + // expect(mockToken.transfer(receiver.address, 50)) + // .to.emit(mockToken, "SomeEvent") + // .and.to.changeTokenBalance(mockToken, receiver, 50), + // ).to.throw( + // /The matcher 'changeTokenBalance' cannot be chained after 'emit'./, + // ); + // }); + + // it("changeTokenBalances: should throw if chained to another non-chainable method", () => { + // expect(() => + // expect(mockToken.transfer(provider, receiver.address, 50)) + // .to.be.reverted(ethers) + // .and.to.changeTokenBalances( + // provider, + // mockToken, + // [sender, receiver], + // [-50, 100], + // ), + // ).to.throw( + // /The matcher 'changeTokenBalances' cannot be chained after 'reverted'./, + // ); + // }); + }); + }); + + describe("validation errors", () => { + describe(CHANGE_TOKEN_BALANCE_MATCHER, () => { + it("token is not specified", async () => { + assertThrowsHardhatError( + () => + expect( + mockToken.transfer(receiver.address, 50), + ).to.changeTokenBalance(provider, receiver, 50), + HardhatError.ERRORS.CHAI_MATCHERS + .FIRST_ARGUMENT_MUST_BE_A_CONTRACT_INSTANCE, + { + method: CHANGE_TOKEN_BALANCE_MATCHER, + }, + ); + + // if an address is used (receiver.address) + assertThrowsHardhatError( + () => + expect( + mockToken.transfer(receiver.address, 50), + ).to.changeTokenBalance(provider, receiver.address, 50), + HardhatError.ERRORS.CHAI_MATCHERS + .FIRST_ARGUMENT_MUST_BE_A_CONTRACT_INSTANCE, + { + method: CHANGE_TOKEN_BALANCE_MATCHER, + }, + ); + }); + + it("contract is not a token", async () => { + const NotAToken = await ethers.getContractFactory("NotAToken"); + const notAToken = await NotAToken.deploy(); + + expect(() => + expect( + mockToken.transfer(receiver.address, 50), + ).to.changeTokenBalance(provider, notAToken, sender, -50), + ).to.throw( + Error, + "The given contract instance is not an ERC20 token", + ); + }); + + it("tx is not the only one in the block", async () => { + await provider.request({ + method: "evm_setAutomine", + params: [false], + }); + + // we set a gas limit to avoid using the whole block gas limit + await sender.sendTransaction({ + to: receiver.address, + gasLimit: 30_000, + }); + + await provider.request({ method: "evm_setAutomine", params: [true] }); + + await expect( + expect( + mockToken.transfer(receiver.address, 50, { gasLimit: 100_000 }), + ).to.changeTokenBalance(provider, mockToken, sender, -50), + ).to.be.rejectedWith( + "There should be only 1 transaction in the block", + ); + }); + + it("tx reverts", async () => { + await expect( + expect( + mockToken.transfer(receiver.address, 0), + ).to.changeTokenBalance(provider, mockToken, sender, -50), + ).to.be.rejectedWith( + Error, + // check that the error message includes the revert reason + "Transferred value is zero", + ); + }); + }); + + describe(CHANGE_TOKEN_BALANCES_MATCHER, () => { + it("token is not specified", async () => { + assertThrowsHardhatError( + () => + expect( + mockToken.transfer(receiver.address, 50), + ).to.changeTokenBalances(provider, [sender, receiver], [-50, 50]), + HardhatError.ERRORS.CHAI_MATCHERS + .FIRST_ARGUMENT_MUST_BE_A_CONTRACT_INSTANCE, + { + method: CHANGE_TOKEN_BALANCES_MATCHER, + }, + ); + }); + + it("contract is not a token", async () => { + const NotAToken = await ethers.getContractFactory("NotAToken"); + const notAToken = await NotAToken.deploy(); + + expect(() => + expect( + mockToken.transfer(receiver.address, 50), + ).to.changeTokenBalances( + provider, + notAToken, + [sender, receiver], + [-50, 50], + ), + ).to.throw( + Error, + "The given contract instance is not an ERC20 token", + ); + }); + it("arrays have different length", async () => { + expect(() => + expect( + mockToken.transfer(receiver.address, 50), + ).to.changeTokenBalances(provider, mockToken, [sender], [-50, 50]), + ).to.throw( + Error, + "The number of accounts (1) is different than the number of expected balance changes (2)", + ); + + expect(() => + expect( + mockToken.transfer(receiver.address, 50), + ).to.changeTokenBalances( + provider, + mockToken, + [sender, receiver], + [-50], + ), + ).to.throw( + Error, + "The number of accounts (2) is different than the number of expected balance changes (1)", + ); + }); + + it("arrays have different length, subject is a rejected promise", async () => { + expect(() => + expect(matchers.revertsWithoutReason()).to.changeTokenBalances( + provider, + mockToken, + [sender], + [-50, 50], + ), + ).to.throw( + Error, + "The number of accounts (1) is different than the number of expected balance changes (2)", + ); + }); + + it("tx is not the only one in the block", async () => { + await provider.request({ + method: "evm_setAutomine", + params: [false], + }); + + // we set a gas limit to avoid using the whole block gas limit + await sender.sendTransaction({ + to: receiver.address, + gasLimit: 30_000, + }); + + await provider.request({ method: "evm_setAutomine", params: [true] }); + + await expect( + expect( + mockToken.transfer(receiver.address, 50, { gasLimit: 100_000 }), + ).to.changeTokenBalances( + provider, + mockToken, + [sender, receiver], + [-50, 50], + ), + ).to.be.rejectedWith( + "There should be only 1 transaction in the block", + ); + }); + + it("tx reverts", async () => { + await expect( + expect( + mockToken.transfer(receiver.address, 0), + ).to.changeTokenBalances( + provider, + mockToken, + [sender, receiver], + [-50, 50], + ), + ).to.be.rejectedWith( + Error, + // check that the error message includes the revert reason + "Transferred value is zero", + ); + }); + }); + }); + + describe("accepted number types", () => { + it("native bigints are accepted", async () => { + await expect( + mockToken.transfer(receiver.address, 50), + ).to.changeTokenBalance(provider, mockToken, sender, -50n); + await expect( + mockToken.transfer(receiver.address, 50), + ).to.changeTokenBalances( + provider, + mockToken, + [sender, receiver], + [-50n, 50n], + ); + }); + }); + + // smoke tests for stack traces + describe("stack traces", () => { + describe(CHANGE_TOKEN_BALANCE_MATCHER, () => { + it("includes test file", async () => { + let hasProperStackTrace = false; + try { + await expect( + mockToken.transfer(receiver.address, 50), + ).to.changeTokenBalance(provider, mockToken, sender, -100); + } catch (e: any) { + hasProperStackTrace = util + .inspect(e) + .includes(path.join("test", "changeTokenBalance.ts")); + } + expect(hasProperStackTrace).to.equal(true); + }); + }); + + describe(CHANGE_TOKEN_BALANCES_MATCHER, () => { + it("includes test file", async () => { + try { + await expect( + mockToken.transfer(receiver.address, 50), + ).to.changeTokenBalances( + provider, + mockToken, + [sender, receiver], + [-100, 100], + ); + } catch (e: any) { + expect(util.inspect(e)).to.include( + path.join("test", "changeTokenBalance.ts"), + ); + return; + } + expect.fail("Expected an exception but none was thrown"); + }); + }); + }); + } +}); + +function zip(a: T[], b: U[]): Array<[T, U]> { + assert(a.length === b.length); + + return a.map((x, i) => [x, b[i]]); +} + +/** + * Given an expression `expr`, a token, and a pair of arrays, check that + * `changeTokenBalance` and `changeTokenBalances` behave correctly in different + * scenarios. + */ +async function runAllAsserts( + provider: EthereumProvider, + expr: + | TransactionResponse + | Promise + | (() => TransactionResponse) + | (() => Promise), + token: Token, + accounts: Array, + balances: Array, +) { + // changeTokenBalances works for the given arrays + await expect(expr).to.changeTokenBalances( + provider, + token, + accounts, + balances, + ); + + // changeTokenBalances works for empty arrays + await expect(expr).to.changeTokenBalances(provider, token, [], []); + + // for each given pair of account and balance, check that changeTokenBalance + // works correctly + for (const [account, balance] of zip(accounts, balances)) { + await expect(expr).to.changeTokenBalance(provider, token, account, balance); + } +} diff --git a/v-next/hardhat-chai-matchers/test/contracts.ts b/v-next/hardhat-chai-matchers/test/contracts.ts new file mode 100644 index 0000000000..c3698be5ec --- /dev/null +++ b/v-next/hardhat-chai-matchers/test/contracts.ts @@ -0,0 +1,146 @@ +import type { + BaseContract, + BaseContractMethod, + ContractTransactionResponse, + BigNumberish, + AddressLike, +} from "ethers"; + +export type MatchersContract = BaseContract & { + panicAssert: BaseContractMethod<[], void, ContractTransactionResponse>; + revertWithCustomErrorWithInt: BaseContractMethod< + [BigNumberish], + void, + ContractTransactionResponse + >; + revertWithCustomErrorWithPair: BaseContractMethod< + [BigNumberish, BigNumberish], + void, + ContractTransactionResponse + >; + revertWithCustomErrorWithUint: BaseContractMethod< + [BigNumberish], + void, + ContractTransactionResponse + >; + revertWithCustomErrorWithUintAndString: BaseContractMethod< + [BigNumberish, string], + void, + ContractTransactionResponse + >; + revertWithSomeCustomError: BaseContractMethod< + [], + void, + ContractTransactionResponse + >; + revertsWith: BaseContractMethod<[string], void, ContractTransactionResponse>; + revertsWithoutReason: BaseContractMethod< + [], + void, + ContractTransactionResponse + >; + succeeds: BaseContractMethod<[], void, ContractTransactionResponse>; +}; + +export type ChangeEtherBalance = BaseContract & { + returnHalf: BaseContractMethod<[], void, ContractTransactionResponse>; + transferTo: BaseContractMethod<[string], void, ContractTransactionResponse>; +}; + +export type EventsContract = BaseContract & { + doNotEmit: BaseContractMethod<[], void, ContractTransactionResponse>; + emitBytes32: BaseContractMethod<[string], void, ContractTransactionResponse>; + emitBytes32Array: BaseContractMethod< + [string, string], + void, + ContractTransactionResponse + >; + emitBytes: BaseContractMethod<[string], void, ContractTransactionResponse>; + emitIndexedBytes32: BaseContractMethod< + [string], + void, + ContractTransactionResponse + >; + emitIndexedBytes: BaseContractMethod< + [string], + void, + ContractTransactionResponse + >; + emitIndexedString: BaseContractMethod< + [string], + void, + ContractTransactionResponse + >; + emitInt: BaseContractMethod< + [BigNumberish], + void, + ContractTransactionResponse + >; + emitAddress: BaseContractMethod< + [AddressLike], + void, + ContractTransactionResponse + >; + emitNestedUintFromAnotherContract: BaseContractMethod< + [BigNumberish], + void, + ContractTransactionResponse + >; + emitNestedUintFromSameContract: BaseContractMethod< + [BigNumberish], + void, + ContractTransactionResponse + >; + emitString: BaseContractMethod<[string], void, ContractTransactionResponse>; + emitStruct: BaseContractMethod< + [BigNumberish, BigNumberish], + void, + ContractTransactionResponse + >; + emitTwoUints: BaseContractMethod< + [BigNumberish, BigNumberish], + void, + ContractTransactionResponse + >; + emitTwoUintsAndTwoStrings: BaseContractMethod< + [BigNumberish, BigNumberish, string, string], + void, + ContractTransactionResponse + >; + emitUint: BaseContractMethod< + [BigNumberish], + void, + ContractTransactionResponse + >; + emitUintAndString: BaseContractMethod< + [BigNumberish, string], + void, + ContractTransactionResponse + >; + emitUintArray: BaseContractMethod< + [BigNumberish, BigNumberish], + void, + ContractTransactionResponse + >; + emitUintTwice: BaseContractMethod< + [BigNumberish, BigNumberish], + void, + ContractTransactionResponse + >; + emitWithoutArgs: BaseContractMethod<[], void, ContractTransactionResponse>; +}; + +export type AnotherContract = BaseContract & {}; + +export type OverrideEventContract = BaseContract & { + emitSimpleEventWithUintArg: BaseContractMethod< + [BigNumberish], + void, + ContractTransactionResponse + >; + emitSimpleEventWithoutArg: BaseContractMethod< + [], + void, + ContractTransactionResponse + >; +}; diff --git a/v-next/hardhat-chai-matchers/test/events.ts b/v-next/hardhat-chai-matchers/test/events.ts new file mode 100644 index 0000000000..29b2a934ae --- /dev/null +++ b/v-next/hardhat-chai-matchers/test/events.ts @@ -0,0 +1,929 @@ +import type { + AnotherContract, + EventsContract, + MatchersContract, + OverrideEventContract, +} from "./contracts.js"; +import "../src/internal/add-chai-matchers"; +import type { EthereumProvider } from "@ignored/hardhat-vnext/types/providers"; +import type { HardhatEthers } from "@ignored/hardhat-vnext-ethers/types"; + +import { beforeEach, describe, it } from "node:test"; + +import { createHardhatRuntimeEnvironment } from "@ignored/hardhat-vnext/hre"; +import { HardhatError } from "@ignored/hardhat-vnext-errors"; +import hardhatEthersPlugin from "@ignored/hardhat-vnext-ethers"; +import { assertRejectsWithHardhatError } from "@nomicfoundation/hardhat-test-utils"; +import { expect, AssertionError } from "chai"; +import { id } from "ethers/hash"; +import { hexlify, toUtf8Bytes, zeroPadValue } from "ethers/utils"; +import { Wallet } from "ethers/wallet"; + +import { anyUint, anyValue } from "../src/withArgs.js"; + +describe(".to.emit (contract events)", () => { + let contract: EventsContract; + let otherContract: AnotherContract; + let overrideEventContract: OverrideEventContract; + let matchers: MatchersContract; + + describe("with the in-process hardhat network", () => { + process.chdir(process.cwd() + "/test/fixture-projects/hardhat-project"); + runTests(); + }); + + // TODO: when V3 node is ready, add this functionality + // describe("connected to a hardhat node", ()=>{ + // useEnvironmentWithNode("hardhat-project"); + // runTests(); + // }); + + function runTests() { + let provider: EthereumProvider; + let ethers: HardhatEthers; + + beforeEach(async () => { + const hre = await createHardhatRuntimeEnvironment({ + paths: { + artifacts: `${process.cwd()}/artifacts`, + }, + plugins: [hardhatEthersPlugin], + }); + + ({ ethers, provider } = await hre.network.connect()); + + otherContract = await ethers.deployContract("AnotherContract"); + + contract = await ( + await ethers.getContractFactory<[string], EventsContract>("Events") + ).deploy(await otherContract.getAddress()); + + overrideEventContract = await ( + await ethers.getContractFactory<[], OverrideEventContract>( + "OverrideEventContract", + ) + ).deploy(); + + const Matchers = await ethers.getContractFactory<[], MatchersContract>( + "Matchers", + ); + matchers = await Matchers.deploy(); + }); + + it("should fail when expecting an event that's not in the contract", async () => { + await expect( + expect(contract.doNotEmit()).to.emit(contract, "NonexistentEvent"), + ).to.be.eventually.rejectedWith( + AssertionError, + 'Event "NonexistentEvent" doesn\'t exist in the contract', + ); + }); + + it("should fail when expecting an event that's not in the contract to NOT be emitted", async () => { + await expect( + expect(contract.doNotEmit()).not.to.emit(contract, "NonexistentEvent"), + ).to.be.eventually.rejectedWith( + AssertionError, + 'Event "NonexistentEvent" doesn\'t exist in the contract', + ); + }); + + it("should fail when matcher is called with too many arguments", async () => { + await assertRejectsWithHardhatError( + () => + expect(contract.emitUint(1)).not.to.emit(contract, "WithoutArgs", 1), + HardhatError.ERRORS.CHAI_MATCHERS.EMIT_EXPECTS_TWO_ARGUMENTS, + {}, + ); + }); + + it("should detect events without arguments", async () => { + await expect(contract.emitWithoutArgs()).to.emit(contract, "WithoutArgs"); + }); + + it("should fail when expecting an event that wasn't emitted", async () => { + await expect( + expect(contract.doNotEmit()).to.emit(contract, "WithoutArgs"), + ).to.be.eventually.rejectedWith( + AssertionError, + 'Expected event "WithoutArgs" to be emitted, but it wasn\'t', + ); + }); + + it("should fail when expecting a specific event NOT to be emitted but it WAS", async () => { + await expect( + expect(contract.emitWithoutArgs()).to.not.emit(contract, "WithoutArgs"), + ).to.be.eventually.rejectedWith( + AssertionError, + 'Expected event "WithoutArgs" NOT to be emitted, but it was', + ); + }); + + describe(".withArgs", () => { + it("should fail when used with .not.", async () => { + expect(() => + expect(contract.emitUint(1)) + .not.to.emit(contract, "WithUintArg") + .withArgs(1), + ).to.throw(Error, "Do not combine .not. with .withArgs()"); + }); + + it("should fail when used with .not, subject is a rejected promise", async () => { + expect(() => + expect(matchers.revertsWithoutReason()) + .not.to.emit(contract, "WithUintArg") + .withArgs(1), + ).to.throw(Error, "Do not combine .not. with .withArgs()"); + }); + + it("should fail if withArgs is called on its own", async () => { + expect(() => + expect(contract.emitUint(1)) + // @ts-expect-error + .withArgs(1), + ).to.throw( + Error, + "withArgs can only be used in combination with a previous .emit or .revertedWithCustomError assertion", + ); + }); + + it("should verify zero arguments", async () => { + await expect(contract.emitWithoutArgs()) + .to.emit(contract, "WithoutArgs") + .withArgs(); + }); + + describe("with a uint argument", () => { + it("should match the argument", async () => { + await expect(contract.emitUint(1)) + .to.emit(contract, "WithUintArg") + .withArgs(1); + }); + + it("should fail when the input argument doesn't match the event argument", async () => { + await expect( + expect(contract.emitUint(1)) + .to.emit(contract, "WithUintArg") + .withArgs(2), + ).to.be.eventually.rejectedWith( + AssertionError, + 'Error in "WithUintArg" event: Error in the 1st argument assertion: expected 1 to equal 2.', + ); + }); + + it("should fail when too many arguments are given", async () => { + await expect( + expect(contract.emitUint(1)) + .to.emit(contract, "WithUintArg") + .withArgs(1, 3), + ).to.be.eventually.rejectedWith( + AssertionError, + 'Error in "WithUintArg" event: Expected arguments array to have length 2, but it has 1', + ); + }); + }); + + describe("with an address argument", () => { + const addressable = Wallet.createRandom(); + const { address } = addressable; + const otherAddressable = Wallet.createRandom(); + const { address: otherAddress } = otherAddressable; + + it("should match the argument", async () => { + await expect(contract.emitAddress(addressable)) + .to.emit(contract, "WithAddressArg") + .withArgs(address); + }); + + it("should match addressable arguments", async () => { + await expect(contract.emitAddress(addressable)) + .to.emit(contract, "WithAddressArg") + .withArgs(addressable); + }); + + it("should fail when the input argument doesn't match the addressable event argument", async () => { + await expect( + expect(contract.emitAddress(addressable)) + .to.emit(contract, "WithAddressArg") + .withArgs(otherAddressable), + ).to.be.eventually.rejectedWith( + AssertionError, + `Error in "WithAddressArg" event: Error in the 1st argument assertion: expected '${address}' to equal '${otherAddress}'`, + ); + }); + + it("should fail when the input argument doesn't match the address event argument", async () => { + await expect( + expect(contract.emitAddress(addressable)) + .to.emit(contract, "WithAddressArg") + .withArgs(otherAddress), + ).to.be.eventually.rejectedWith( + AssertionError, + `Error in "WithAddressArg" event: Error in the 1st argument assertion: expected '${address}' to equal '${otherAddress}'`, + ); + }); + + it("should fail when too many arguments are given", async () => { + await expect( + expect(contract.emitAddress(addressable)) + .to.emit(contract, "WithAddressArg") + .withArgs(address, otherAddress), + ).to.be.eventually.rejectedWith( + AssertionError, + 'Error in "WithAddressArg" event: Expected arguments array to have length 2, but it has 1', + ); + }); + }); + + // for abbreviating long strings in diff views like chai does: + function abbrev(longString: string): string { + return `${longString.substring(0, 37)}…`; + } + + function formatHash(str: string, hashFn = id) { + const hash = hashFn(str); + return { + str, + hash, + abbrev: abbrev(hash), + }; + } + + function formatBytes(str: string) { + const bytes = hexlify(toUtf8Bytes(str)); + const bytes32 = zeroPadValue(bytes, 32); + return { + ...formatHash(str), + bytes, + bytes32, + abbrev32: abbrev(hexlify(bytes32)), + }; + } + + const str1 = formatBytes("string1"); + const str2 = formatBytes("string2"); + + describe("with a string argument", () => { + it("should match the argument", async () => { + await expect(contract.emitString("string")) + .to.emit(contract, "WithStringArg") + .withArgs("string"); + }); + + it("should fail when the input argument doesn't match the event argument", async () => { + await expect( + expect(contract.emitString(str1.str)) + .to.emit(contract, "WithStringArg") + .withArgs(str2.str), + ).to.be.eventually.rejectedWith( + AssertionError, + `expected '${str1.str}' to equal '${str2.str}'`, + ); + }); + }); + + describe("with an indexed string argument", () => { + it("should match the argument", async () => { + await expect(contract.emitIndexedString(str1.str)) + .to.emit(contract, "WithIndexedStringArg") + .withArgs(str1.str); + }); + + it("should fail when the input argument doesn't match the event argument", async () => { + await expect( + expect(contract.emitIndexedString(str1.str)) + .to.emit(contract, "WithIndexedStringArg") + .withArgs(str2.str), + ).to.be.eventually.rejectedWith( + AssertionError, + `Error in "WithIndexedStringArg" event: Error in the 1st argument assertion: The actual value was an indexed and hashed value of the event argument. The expected value provided to the assertion was hashed to produce ${str2.hash}. The actual hash and the expected hash ${str1.hash} did not match: expected '${str1.abbrev}' to equal '${str2.abbrev}'`, + ); + }); + + it("should fail if expected argument is the hash not the pre-image", async () => { + await expect( + expect(contract.emitIndexedString(str1.str)) + .to.emit(contract, "WithIndexedStringArg") + .withArgs(str1.hash), + ).to.be.eventually.rejectedWith( + AssertionError, + "The actual value was an indexed and hashed value of the event argument. The expected value provided to the assertion should be the actual event argument (the pre-image of the hash). You provided the hash itself. Please supply the actual event argument (the pre-image of the hash) instead", + ); + }); + + it("should fail when trying to match the event argument with an incorrect hash value", async () => { + const incorrect = formatHash(str2.hash, ethers.keccak256); + await expect( + expect(contract.emitIndexedString(str1.str)) + .to.emit(contract, "WithIndexedStringArg") + .withArgs(incorrect.str), + ).to.be.eventually.rejectedWith( + AssertionError, + `Error in "WithIndexedStringArg" event: Error in the 1st argument assertion: The actual value was an indexed and hashed value of the event argument. The expected value provided to the assertion was hashed to produce ${incorrect.hash}. The actual hash and the expected hash ${str1.hash} did not match: expected '${str1.abbrev}' to equal '${incorrect.abbrev}`, + ); + }); + }); + + describe("with a bytes argument", () => { + it("should match the argument", async () => { + await expect(contract.emitBytes(str1.bytes)) + .to.emit(contract, "WithBytesArg") + .withArgs(str1.bytes); + }); + + it("should fail when the input argument doesn't match the event argument", async () => { + await expect( + expect(contract.emitBytes(str2.bytes)) + .to.emit(contract, "WithBytesArg") + .withArgs(str1.str), + ).to.be.eventually.rejectedWith( + AssertionError, + `Error in "WithBytesArg" event: Error in the 1st argument assertion: expected '${str2.bytes}' to equal '${str1.str}'`, + ); + }); + }); + + describe("with an indexed bytes argument", () => { + it("should match the argument", async () => { + await expect(contract.emitIndexedBytes(str1.bytes)) + .to.emit(contract, "WithIndexedBytesArg") + .withArgs(str1.str); + }); + + it("should fail when the input argument doesn't match the event argument", async () => { + await expect( + expect(contract.emitIndexedBytes(str2.bytes)) + .to.emit(contract, "WithIndexedBytesArg") + .withArgs(str1.str), + ).to.be.eventually.rejectedWith( + AssertionError, + `Error in "WithIndexedBytesArg" event: Error in the 1st argument assertion: The actual value was an indexed and hashed value of the event argument. The expected value provided to the assertion was hashed to produce ${str1.hash}. The actual hash and the expected hash ${str2.hash} did not match: expected '${str2.abbrev}' to equal '${str1.abbrev}'`, + ); + }); + + it("should fail the passerd argument is the hash, not the pre-image", async () => { + await expect( + expect(contract.emitIndexedBytes(str1.bytes)) + .to.emit(contract, "WithIndexedBytesArg") + .withArgs(str1.hash), + ).to.be.eventually.rejectedWith( + AssertionError, + "The actual value was an indexed and hashed value of the event argument. The expected value provided to the assertion should be the actual event argument (the pre-image of the hash). You provided the hash itself. Please supply the actual event argument (the pre-image of the hash) instead.", + ); + }); + }); + + describe("with a bytes32 argument", () => { + it("should match the argument", async () => { + await expect(contract.emitBytes32(str1.bytes32)) + .to.emit(contract, "WithBytes32Arg") + .withArgs(str1.bytes32); + }); + + it("should fail when the input argument doesn't match the event argument", async () => { + await expect( + expect(contract.emitBytes32(str2.bytes32)) + .to.emit(contract, "WithBytes32Arg") + .withArgs(str1.bytes32), + ).to.be.eventually.rejectedWith( + AssertionError, + `Error in "WithBytes32Arg" event: Error in the 1st argument assertion: expected '${str2.abbrev32}' to equal '${str1.abbrev32}'`, + ); + }); + }); + + describe("with an indexed bytes32 argument", () => { + it("should match the argument", async () => { + await expect(contract.emitIndexedBytes32(str1.bytes32)) + .to.emit(contract, "WithIndexedBytes32Arg") + .withArgs(str1.bytes32); + }); + + it("should fail when the input argument doesn't match the event argument", async () => { + await expect( + expect(contract.emitIndexedBytes32(str2.bytes32)) + .to.emit(contract, "WithIndexedBytes32Arg") + .withArgs(str1.bytes32), + ).to.be.eventually.rejectedWith( + AssertionError, + `Error in "WithIndexedBytes32Arg" event: Error in the 1st argument assertion: expected '${str2.abbrev32}' to equal '${str1.abbrev32}'`, + ); + }); + }); + + describe("with a uint array argument", () => { + it("should succeed when expectations are met", async () => { + await expect(contract.emitUintArray(1, 2)) + .to.emit(contract, "WithUintArray") + .withArgs([1, 2]); + }); + + it("should fail when expectations are not met", async () => { + await expect( + expect(contract.emitUintArray(1, 2)) + .to.emit(contract, "WithUintArray") + .withArgs([3, 4]), + ).to.be.eventually.rejectedWith( + AssertionError, + `Error in "WithUintArray" event: Error in the 1st argument assertion: Error in the 1st argument assertion: expected 1 to equal 3.`, + ); + }); + + describe("nested predicate", () => { + it("should succeed when predicate passes", async () => { + await expect(contract.emitUintArray(1, 2)) + .to.emit(contract, "WithUintArray") + .withArgs([anyValue, 2]); + }); + + it("should fail when predicate returns false", async () => { + await expect( + expect(contract.emitUintArray(1, 2)) + .to.emit(contract, "WithUintArray") + .withArgs([() => false, 4]), + ).to.be.eventually.rejectedWith( + AssertionError, + `Error in "WithUintArray" event: Error in the 1st argument assertion: Error in the 1st argument assertion: The predicate did not return true`, + ); + }); + + it("should fail when predicate reverts", async () => { + await expect( + expect(contract.emitUintArray(1, 2)) + .to.emit(contract, "WithUintArray") + .withArgs([ + () => { + throw new Error("user error"); + }, + 4, + ]), + ).to.be.eventually.rejectedWith( + AssertionError, + `Error in "WithUintArray" event: Error in the 1st argument assertion: Error in the 1st argument assertion: The predicate threw when called: user error`, + ); + }); + }); + + describe("arrays different length", () => { + it("should fail when the array is shorter", async () => { + await expect( + expect(contract.emitUintArray(1, 2)) + .to.emit(contract, "WithUintArray") + .withArgs([1]), + ).to.be.eventually.rejectedWith( + AssertionError, + 'Error in "WithUintArray" event: Error in the 1st argument assertion: Expected arguments array to have length 1, but it has 2', + ); + }); + + it("should fail when the array is longer", async () => { + await expect( + expect(contract.emitUintArray(1, 2)) + .to.emit(contract, "WithUintArray") + .withArgs([1, 2, 3]), + ).to.be.eventually.rejectedWith( + AssertionError, + 'Error in "WithUintArray" event: Error in the 1st argument assertion: Expected arguments array to have length 3, but it has 2', + ); + }); + }); + }); + + describe("with a bytes32 array argument", () => { + const aa = `0x${"aa".repeat(32)}`; + const bb = `0x${"bb".repeat(32)}`; + const cc = `0x${"cc".repeat(32)}`; + const dd = `0x${"dd".repeat(32)}`; + + it("should succeed when expectations are met", async () => { + await expect(contract.emitBytes32Array(aa, bb)) + .to.emit(contract, "WithBytes32Array") + .withArgs([aa, bb]); + }); + + it("should fail when expectations are not met", async () => { + await expect( + expect(contract.emitBytes32Array(aa, bb)) + .to.emit(contract, "WithBytes32Array") + .withArgs([cc, dd]), + ).to.be.eventually.rejectedWith( + AssertionError, + `Error in "WithBytes32Array" event: Error in the 1st argument assertion: Error in the 1st argument assertion: expected '${abbrev( + aa, + )}' to equal '${abbrev(cc)}'`, + ); + }); + }); + + describe("with a struct argument", () => { + it("should succeed when expectations are met", async () => { + await expect(contract.emitStruct(1, 2)) + .to.emit(contract, "WithStructArg") + .withArgs([1, 2]); + }); + + it("should fail when expectations are not met", async () => { + await expect( + expect(contract.emitStruct(1, 2)) + .to.emit(contract, "WithStructArg") + .withArgs([3, 4]), + ).to.be.eventually.rejectedWith( + AssertionError, + 'Error in "WithStructArg" event: Error in the 1st argument assertion: Error in the 1st argument assertion: expected 1 to equal 3.', + ); + }); + }); + + describe("with multiple arguments", () => { + it("should successfully match the arguments", async () => { + await expect(contract.emitTwoUints(1, 2)) + .to.emit(contract, "WithTwoUintArgs") + .withArgs(1, 2); + }); + + it("should fail when the first argument isn't matched", async () => { + await expect( + expect(contract.emitTwoUints(1, 2)) + .to.emit(contract, "WithTwoUintArgs") + .withArgs(2, 2), + ).to.be.eventually.rejectedWith( + AssertionError, + 'Error in "WithTwoUintArgs" event: Error in the 1st argument assertion: expected 1 to equal 2', + ); + }); + + it("should fail when the second argument isn't matched", async () => { + await expect( + expect(contract.emitTwoUints(1, 2)) + .to.emit(contract, "WithTwoUintArgs") + .withArgs(1, 1), + ).to.be.eventually.rejectedWith( + AssertionError, + 'Error in "WithTwoUintArgs" event: Error in the 2nd argument assertion: expected 2 to equal 1.', + ); + }); + + it("should fail when too many arguments are supplied", async () => { + await expect( + expect(contract.emitTwoUints(1, 2)) + .to.emit(contract, "WithTwoUintArgs") + .withArgs(1, 2, 3, 4), + ).to.be.eventually.rejectedWith( + AssertionError, + 'Error in "WithTwoUintArgs" event: Expected arguments array to have length 4, but it has 2', + ); + }); + + it("should fail when too few arguments are supplied", async () => { + await expect( + expect(contract.emitTwoUints(1, 2)) + .to.emit(contract, "WithTwoUintArgs") + .withArgs(1), + ).to.be.eventually.rejectedWith( + AssertionError, + 'Error in "WithTwoUintArgs" event: Expected arguments array to have length 1, but it has 2', + ); + }); + + describe("should handle argument predicates", () => { + it("should pass when a predicate argument returns true", async () => { + await expect(contract.emitTwoUints(1, 2)) + .to.emit(contract, "WithTwoUintArgs") + .withArgs(anyValue, anyUint); + }); + + it("should fail when a predicate argument returns false", async () => { + await expect( + expect(contract.emitTwoUints(1, 2)) + .to.emit(contract, "WithTwoUintArgs") + .withArgs(1, () => false), + ).to.be.rejectedWith( + AssertionError, + 'Error in "WithTwoUintArgs" event: Error in the 2nd argument assertion: The predicate did not return true', + ); + }); + + it("should fail when a predicate argument throws an error", async () => { + await expect( + expect(contract.emitTwoUints(1, 2)) + .to.emit(contract, "WithTwoUintArgs") + .withArgs(() => { + throw new Error("user-defined error"); + }, "foo"), + ).to.be.rejectedWith( + Error, + 'Error in "WithTwoUintArgs" event: Error in the 1st argument assertion: The predicate threw when called: user-defined error', + ); + }); + + describe("with predicate anyUint", () => { + it("should fail when the event argument is a string", async () => { + await expect( + expect(contract.emitString("a string")) + .to.emit(contract, "WithStringArg") + .withArgs(anyUint), + ).to.be.rejectedWith( + AssertionError, + "Error in \"WithStringArg\" event: Error in the 1st argument assertion: The predicate threw when called: anyUint expected its argument to be an integer, but its type was 'string'", + ); + }); + + it("should fail when the event argument is negative", async () => { + await expect( + expect(contract.emitInt(-1)) + .to.emit(contract, "WithIntArg") + .withArgs(anyUint), + ).to.be.rejectedWith( + AssertionError, + 'Error in "WithIntArg" event: Error in the 1st argument assertion: The predicate threw when called: anyUint expected its argument to be an unsigned integer, but it was negative, with value -1', + ); + }); + }); + }); + }); + }); + + describe("With one call that emits two separate events", () => { + it("should successfully catch each event independently", async () => { + await expect(contract.emitUintAndString(1, "a string")).to.emit( + contract, + "WithUintArg", + ); + await expect(contract.emitUintAndString(1, "a string")).to.emit( + contract, + "WithStringArg", + ); + }); + + describe("When detecting two events from one call (chaining)", () => { + it("should succeed when both expected events are indeed emitted", async () => { + await expect(contract.emitUintAndString(1, "a string")) + .to.emit(contract, "WithUintArg") + .and.to.emit(contract, "WithStringArg"); + }); + + it("should succeed when the expected event is emitted and the unexpected event is not", async () => { + await expect(contract.emitWithoutArgs()) + .to.emit(contract, "WithoutArgs") + .and.not.to.emit(otherContract, "WithUintArg"); + }); + + describe("When one of the expected events is emitted and the other is not", () => { + it("should fail when the first expected event is emitted but the second is not", async () => { + await expect( + expect(contract.emitUint(1)) + .to.emit(contract, "WithUintArg") + .and.to.emit(contract, "WithStringArg"), + ).to.be.eventually.rejectedWith( + AssertionError, + 'Expected event "WithStringArg" to be emitted, but it wasn\'t', + ); + }); + + it("should fail when the second expected event is emitted but the first is not", async () => { + await expect( + expect(contract.emitUint(1)) + .to.emit(contract, "WithStringArg") + .and.to.emit(contract, "WithUintArg"), + ).to.be.eventually.rejectedWith( + AssertionError, + 'Expected event "WithStringArg" to be emitted, but it wasn\'t', + ); + }); + }); + + describe("When specifying .withArgs()", () => { + it("should pass when expecting the correct args from the first event", async () => { + await expect(contract.emitUintAndString(1, "a string")) + .to.emit(contract, "WithUintArg") + .withArgs(1) + .and.to.emit(contract, "WithStringArg"); + }); + + it("should pass when expecting the correct args from the second event", async () => { + await expect(contract.emitUintAndString(1, "a string")) + .to.emit(contract, "WithUintArg") + .and.to.emit(contract, "WithStringArg") + .withArgs("a string"); + }); + + it("should pass when expecting the correct args from both events", async () => { + await expect(contract.emitUintAndString(1, "a string")) + .to.emit(contract, "WithUintArg") + .withArgs(1) + .and.to.emit(contract, "WithStringArg") + .withArgs("a string"); + }); + + it("should fail when expecting the wrong argument value for the first event", async () => { + await expect( + expect(contract.emitUintAndString(1, "a string")) + .to.emit(contract, "WithUintArg") + .withArgs(2) + .and.to.emit(contract, "WithStringArg"), + ).to.be.eventually.rejectedWith( + AssertionError, + 'Error in "WithUintArg" event: Error in the 1st argument assertion: expected 1 to equal 2.', + ); + }); + + it("should fail when expecting the wrong argument value for the second event", async () => { + await expect( + expect(contract.emitUintAndString(1, "a string")) + .to.emit(contract, "WithUintArg") + .and.to.emit(contract, "WithStringArg") + .withArgs("a different string"), + ).to.be.eventually.rejectedWith( + AssertionError, + "Error in \"WithStringArg\" event: Error in the 1st argument assertion: expected 'a string' to equal 'a different string'", + ); + }); + + it("should fail when expecting too many arguments from the first event", async () => { + await expect( + expect(contract.emitUintAndString(1, "a string")) + .to.emit(contract, "WithUintArg") + .withArgs(1, 2) + .and.to.emit(contract, "WithStringArg"), + ).to.be.eventually.rejectedWith( + AssertionError, + 'Error in "WithUintArg" event: Expected arguments array to have length 2, but it has 1', + ); + }); + + it("should fail when expecting too many arguments from the second event", async () => { + await expect( + expect(contract.emitUintAndString(1, "a string")) + .to.emit(contract, "WithUintArg") + .and.to.emit(contract, "WithStringArg") + .withArgs("a different string", "yet another string"), + ).to.be.eventually.rejectedWith( + AssertionError, + 'Error in "WithStringArg" event: Expected arguments array to have length 2, but it has 1', + ); + }); + + it("should fail when expecting too few arguments from the first event", async () => { + await expect( + expect( + contract.emitTwoUintsAndTwoStrings( + 1, + 2, + "a string", + "another string", + ), + ) + .to.emit(contract, "WithTwoUintArgs") + .withArgs(1) + .and.to.emit(contract, "WithTwoStringArgs"), + ).to.be.eventually.rejectedWith( + AssertionError, + 'Error in "WithTwoUintArgs" event: Expected arguments array to have length 1, but it has 2', + ); + }); + + it("should fail when expecting too few arguments from the second event", async () => { + await expect( + expect( + contract.emitTwoUintsAndTwoStrings( + 1, + 2, + "a string", + "another string", + ), + ) + .to.emit(contract, "WithTwoUintArgs") + .and.to.emit(contract, "WithTwoStringArgs") + .withArgs("a string"), + ).to.be.eventually.rejectedWith( + AssertionError, + 'Error in "WithTwoStringArgs" event: Expected arguments array to have length 1, but it has 2', + ); + }); + }); + + describe("With a contract that emits the same event twice but with different arguments", () => { + it("should pass when expectations are met", async () => { + await expect(contract.emitUintTwice(1, 2)) + .to.emit(contract, "WithUintArg") + .withArgs(1) + .and.to.emit(contract, "WithUintArg") + .withArgs(2); + }); + + it("should fail when the first event's argument is not matched", async () => { + await expect( + expect(contract.emitUintTwice(1, 2)) + .to.emit(contract, "WithUintArg") + .withArgs(3) + .and.to.emit(contract, "WithUintArg") + .withArgs(2), + ).to.be.eventually.rejectedWith( + AssertionError, + 'The specified arguments ([ 3 ]) were not included in any of the 2 emitted "WithUintArg" events', + ); + }); + + it("should fail when the second event's argument is not matched", async () => { + await expect( + expect(contract.emitUintTwice(1, 2)) + .to.emit(contract, "WithUintArg") + .withArgs(1) + .and.to.emit(contract, "WithUintArg") + .withArgs(3), + ).to.be.eventually.rejectedWith( + AssertionError, + 'The specified arguments ([ 3 ]) were not included in any of the 2 emitted "WithUintArg" events', + ); + }); + + it("should fail when none of the emitted events match the given argument", async () => { + await expect( + expect(contract.emitUintTwice(1, 2)) + .to.emit(contract, "WithUintArg") + .withArgs(3), + ).to.be.eventually.rejectedWith( + AssertionError, + 'The specified arguments ([ 3 ]) were not included in any of the 2 emitted "WithUintArg" events', + ); + }); + }); + }); + }); + + describe("When nested events are emitted", () => { + describe("With the nested event emitted from the same contract", () => { + it("should pass when the expected event is emitted", async () => { + await expect(contract.emitNestedUintFromSameContract(1)) + .to.emit(contract, "WithUintArg") + .withArgs(1); + }); + + it("should fail when the expected event is not emitted", async () => { + await expect( + expect(contract.emitNestedUintFromSameContract(1)).to.emit( + contract, + "WithStringArg", + ), + ).to.be.eventually.rejectedWith( + AssertionError, + 'Expected event "WithStringArg" to be emitted, but it wasn\'t', + ); + }); + }); + + describe("With the nested event emitted from a different contract", () => { + it("should pass when the expected event is emitted", async () => { + await expect(contract.emitNestedUintFromAnotherContract(1)) + .to.emit(otherContract, "WithUintArg") + .withArgs(1); + }); + + it("should fail when the expected event is emitted but not by the contract that was passed", async () => { + await expect( + expect(contract.emitNestedUintFromAnotherContract(1)) + .to.emit(contract, "WithUintArg") + .withArgs(1), + ).to.be.eventually.rejectedWith( + AssertionError, + 'Expected event "WithUintArg" to be emitted, but it wasn\'t', + ); + }); + }); + }); + + it("With executed transaction", async () => { + const tx = await contract.emitWithoutArgs(); + await expect(tx).to.emit(contract, "WithoutArgs"); + }); + + it("With transaction hash", async () => { + const tx = await contract.emitWithoutArgs(); + await expect(tx.hash).to.emit(contract, "WithoutArgs"); + }); + + describe("When event is overloaded", () => { + it("should fail when the event name is ambiguous", async () => { + await expect( + expect(overrideEventContract.emitSimpleEventWithUintArg(1n)).to.emit( + overrideEventContract, + "simpleEvent", + ), + ).to.be.eventually.rejectedWith( + AssertionError, + `ambiguous event description (i.e. matches "simpleEvent(uint256)", "simpleEvent()")`, + ); + }); + + it("should pass when the event name is not ambiguous", async () => { + await expect(overrideEventContract.emitSimpleEventWithUintArg(1n)) + .to.emit(overrideEventContract, "simpleEvent(uint256)") + .withArgs(1); + await expect(overrideEventContract.emitSimpleEventWithoutArg()).to.emit( + overrideEventContract, + "simpleEvent()", + ); + }); + }); + } +}); diff --git a/v-next/hardhat-chai-matchers/test/fixture-projects/.gitignore b/v-next/hardhat-chai-matchers/test/fixture-projects/.gitignore new file mode 100644 index 0000000000..e7f801166c --- /dev/null +++ b/v-next/hardhat-chai-matchers/test/fixture-projects/.gitignore @@ -0,0 +1,2 @@ +artifacts/ +cache/ diff --git a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/contracts/ChangeEtherBalance.sol b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/contracts/ChangeEtherBalance.sol new file mode 100644 index 0000000000..c86c18e4c4 --- /dev/null +++ b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/contracts/ChangeEtherBalance.sol @@ -0,0 +1,14 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +contract ChangeEtherBalance { + function returnHalf() public payable { + payable(msg.sender).transfer(msg.value / 2); + } + + function transferTo(address addr) public payable { + payable(addr).transfer(msg.value); + } + + receive() external payable {} +} \ No newline at end of file diff --git a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/contracts/Events.sol b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/contracts/Events.sol new file mode 100644 index 0000000000..cb82198dc4 --- /dev/null +++ b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/contracts/Events.sol @@ -0,0 +1,133 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +contract Events { + AnotherContract anotherContract; + + struct Struct { + uint u; + uint v; + } + + event WithoutArgs(); + event WithUintArg(uint u); + event WithIntArg(int i); + event WithAddressArg(address a); + event WithTwoUintArgs(uint u, uint v); + event WithStringArg(string s); + event WithTwoStringArgs(string s, string t); + event WithIndexedStringArg(string indexed s); + event WithBytesArg(bytes b); + event WithIndexedBytesArg(bytes indexed b); + event WithBytes32Arg(bytes32 b); + event WithStructArg(Struct s); + event WithIndexedBytes32Arg(bytes32 indexed b); + event WithUintArray(uint[2] a); + event WithBytes32Array(bytes32[2] a); + + constructor (AnotherContract c) { + anotherContract = c; + } + + function doNotEmit() public {} + + function emitWithoutArgs() public { + emit WithoutArgs(); + } + + function emitUint(uint u) public { + emit WithUintArg(u); + } + + function emitInt(int i) public { + emit WithIntArg(i); + } + + function emitAddress(address a) public { + emit WithAddressArg(a); + } + + function emitUintTwice(uint u, uint v) public { + emit WithUintArg(u); + emit WithUintArg(v); + } + + function emitTwoUints(uint u, uint v) public { + emit WithTwoUintArgs(u, v); + } + + function emitString(string memory s) public { + emit WithStringArg(s); + } + + function emitIndexedString(string memory s) public { + emit WithIndexedStringArg(s); + } + + function emitBytes(bytes memory b) public { + emit WithBytesArg(b); + } + + function emitIndexedBytes(bytes memory b) public { + emit WithIndexedBytesArg(b); + } + + function emitBytes32(bytes32 b) public { + emit WithBytes32Arg(b); + } + + function emitIndexedBytes32(bytes32 b) public { + emit WithIndexedBytes32Arg(b); + } + + function emitUintAndString(uint u, string memory s) public { + emit WithStringArg(s); + emit WithUintArg(u); + } + + function emitTwoUintsAndTwoStrings(uint u, uint v, string memory s, string memory t) public { + emit WithTwoUintArgs(u, v); + emit WithTwoStringArgs(s, t); + } + + function emitStruct(uint u, uint v) public { + emit WithStructArg(Struct(u, v)); + } + + function emitUintArray(uint u, uint v) public { + emit WithUintArray([u, v]); + } + + function emitBytes32Array(bytes32 b, bytes32 c) public { + emit WithBytes32Array([b, c]); + } + + function emitNestedUintFromSameContract(uint u) public { + emitUint(u); + } + + function emitNestedUintFromAnotherContract(uint u) public { + anotherContract.emitUint(u); + } +} + +contract AnotherContract { + event WithUintArg(uint u); + + function emitUint(uint u) public { + emit WithUintArg(u); + } +} + +contract OverrideEventContract { + event simpleEvent(uint u); + event simpleEvent(); + + function emitSimpleEventWithUintArg(uint u) public { + emit simpleEvent(u); + } + + function emitSimpleEventWithoutArg() public { + emit simpleEvent(); + } +} diff --git a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/contracts/Matchers.sol b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/contracts/Matchers.sol new file mode 100644 index 0000000000..be1e6047a1 --- /dev/null +++ b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/contracts/Matchers.sol @@ -0,0 +1,137 @@ +// SPDX-License-Identifier: UNLICENSED + +pragma solidity ^0.8.0; + +contract Matchers { + uint x; + + event SomeEvent(); + + AnotherMatchersContract anotherContract; + + struct Pair { uint a; uint b; } + + error SomeCustomError(); + error AnotherCustomError(); + error CustomErrorWithInt(int); + error CustomErrorWithUint(uint nameToForceEthersToUseAnArrayLikeWithNamedProperties); + error CustomErrorWithUintAndString(uint, string); + error CustomErrorWithPair(Pair); + + constructor () { + anotherContract = new AnotherMatchersContract(); + } + + function succeeds() public { + x++; // just to avoid compiler warnings + } + + function succeedsView() public view returns (uint) { + return x; + } + + function revertsWith(string memory reason) public { + x++; + require(false, reason); + } + + function revertsWithView(string memory reason) public pure { + require(false, reason); + } + + function revertsWithoutReason() public { + x++; + require(false); + } + + function revertsWithoutReasonView() public pure { + require(false); + } + + function panicAssert() public { + x++; + assert(false); + } + + function panicAssertView() public pure { + assert(false); + } + + function revertWithSomeCustomError() public { + x++; + revert SomeCustomError(); + } + + function revertWithSomeCustomErrorView() public pure { + revert SomeCustomError(); + } + + function revertWithAnotherCustomError() public { + x++; + revert AnotherCustomError(); + } + + function revertWithAnotherCustomErrorView() public pure { + revert AnotherCustomError(); + } + + function revertWithAnotherContractCustomError() public { + x++; + anotherContract.revertWithYetAnotherCustomError(); + } + + function revertWithAnotherContractCustomErrorView() public view { + anotherContract.revertWithYetAnotherCustomErrorView(); + } + + function revertWithCustomErrorWithUint(uint n) public { + x++; + revert CustomErrorWithUint(n); + } + + function revertWithCustomErrorWithUintView(uint n) public pure { + revert CustomErrorWithUint(n); + } + + function revertWithCustomErrorWithInt(int i) public { + x++; + revert CustomErrorWithInt(i); + } + + function revertWithCustomErrorWithIntView(int i) public pure { + revert CustomErrorWithInt(i); + } + + function revertWithCustomErrorWithUintAndString(uint n, string memory s) public { + x++; + revert CustomErrorWithUintAndString(n, s); + } + + function revertWithCustomErrorWithUintAndStringView(uint n, string memory s) public pure { + revert CustomErrorWithUintAndString(n, s); + } + + function revertWithCustomErrorWithPair(uint a, uint b) public { + x++; + revert CustomErrorWithPair(Pair(a, b)); + } + + function revertWithCustomErrorWithPairView(uint a, uint b) public pure { + revert CustomErrorWithPair(Pair(a, b)); + } +} + +contract AnotherMatchersContract { + uint x; + + error YetAnotherCustomError(); + + function revertWithYetAnotherCustomError() public { + x++; + revert YetAnotherCustomError(); + } + + function revertWithYetAnotherCustomErrorView() public pure { + revert YetAnotherCustomError(); + } +} diff --git a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/contracts/Token.sol b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/contracts/Token.sol new file mode 100644 index 0000000000..0d9d3842c7 --- /dev/null +++ b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/contracts/Token.sol @@ -0,0 +1,54 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +contract TokenWithoutNameNorSymbol { + uint public decimals = 1; + + uint public totalSupply; + mapping(address => uint) public balanceOf; + mapping(address => mapping(address => uint)) allowances; + + constructor () { + totalSupply = 1_000_000_000; + balanceOf[msg.sender] = totalSupply; + } + + function transfer(address to, uint value) public returns (bool) { + require(value > 0, "Transferred value is zero"); + + balanceOf[msg.sender] -= value; + balanceOf[to] += value; + + return true; + } + + function allowance(address owner, address spender) public view returns (uint256 remaining) { + return allowances[owner][spender]; + } + + function approve(address spender, uint256 value) public returns (bool success) { + allowances[msg.sender][spender] = value; + return true; + } + + function transferFrom(address from, address to, uint256 value) public returns (bool) { + require(allowance(from, msg.sender) >= value, "Insufficient allowance"); + + allowances[from][msg.sender] -= value; + balanceOf[from] -= value; + balanceOf[to] += value; + + return true; + } +} + +contract TokenWithOnlyName is TokenWithoutNameNorSymbol { + string public name = "MockToken"; +} + +contract MockToken is TokenWithoutNameNorSymbol { + string public name = "MockToken"; + string public symbol = "MCK"; +} + +contract NotAToken {} diff --git a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/hardhat.config.js b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/hardhat.config.js new file mode 100644 index 0000000000..d8edfc19ae --- /dev/null +++ b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/hardhat.config.js @@ -0,0 +1,13 @@ +require("@nomicfoundation/hardhat-ethers"); + +module.exports = { + solidity: "0.8.4", + networks: { + hardhat: { + chainId: Number(process.env.CHAIN_ID ?? "31337"), + }, + localhost: { + url: `http://127.0.0.1:${process.env.HARDHAT_NODE_PORT}`, + }, + }, +}; diff --git a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/start-node.js b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/start-node.js new file mode 100644 index 0000000000..4a470dfae2 --- /dev/null +++ b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/start-node.js @@ -0,0 +1,14 @@ +const hre = require("hardhat"); + +async function main() { + await hre.run("node", { + port: +process.env.HARDHAT_NODE_PORT, + }); +} + +main() + .then(() => process.exit(0)) + .catch((error) => { + console.error(error); + process.exit(1); + }); diff --git a/v-next/hardhat-chai-matchers/test/helpers.ts b/v-next/hardhat-chai-matchers/test/helpers.ts new file mode 100644 index 0000000000..321e458799 --- /dev/null +++ b/v-next/hardhat-chai-matchers/test/helpers.ts @@ -0,0 +1,123 @@ +import type { MatchersContract } from "./contracts.js"; +import "@nomicfoundation/hardhat-ethers/internal/type-extensions"; +import type { EthereumProvider } from "@ignored/hardhat-vnext/types/providers"; +import type { HardhatEthers } from "@ignored/hardhat-vnext-ethers/types"; +import type { ContractTransactionResponse } from "ethers/contract"; + +import { AssertionError, expect } from "chai"; + +/** + * Call `method` as: + * - A write transaction + * - A view method + * - A gas estimation + * - A static call + * And run the `successfulAssert` function with the result of each of these + * calls. Since we expect this assertion to be successful, we just await its + * result; if any of them fails, an error will be thrown. + */ +export async function runSuccessfulAsserts({ + matchers, + method, + args = [], + successfulAssert, +}: { + matchers: any; + method: string; + args?: any[]; + successfulAssert: (x: any) => Promise; +}): Promise { + await successfulAssert(matchers[method](...args)); + await successfulAssert(matchers[`${method}View`](...args)); + await successfulAssert(matchers[method].estimateGas(...args)); + await successfulAssert(matchers[method].staticCall(...args)); +} + +/** + * Similar to runSuccessfulAsserts, but check that the result of the assertion + * is an AssertionError with the given reason. + */ +export async function runFailedAsserts({ + matchers, + method, + args = [], + failedAssert, + failedAssertReason, +}: { + matchers: any; + method: string; + args?: any[]; + failedAssert: (x: any) => Promise; + failedAssertReason: string; +}): Promise { + await expect(failedAssert(matchers[method](...args))).to.be.rejectedWith( + AssertionError, + failedAssertReason, + ); + await expect( + failedAssert(matchers[`${method}View`](...args)), + ).to.be.rejectedWith(AssertionError, failedAssertReason); + await expect( + failedAssert(matchers[method].estimateGas(...args)), + ).to.be.rejectedWith(AssertionError, failedAssertReason); + await expect( + failedAssert(matchers[method].staticCall(...args)), + ).to.be.rejectedWith(AssertionError, failedAssertReason); +} + +export async function mineSuccessfulTransaction( + provider: EthereumProvider, + ethers: HardhatEthers, +): Promise { + await provider.request({ method: "evm_setAutomine", params: [false] }); + + const [signer] = await ethers.getSigners(); + const tx = await signer.sendTransaction({ to: signer.address }); + + await mineBlocksUntilTxIsIncluded(provider, ethers, tx.hash); + + await provider.request({ method: "evm_setAutomine", params: [true] }); + + return tx; +} + +export async function mineRevertedTransaction( + provider: EthereumProvider, + ethers: HardhatEthers, + matchers: MatchersContract, +): Promise { + await provider.request({ method: "evm_setAutomine", params: [false] }); + + const tx = await matchers.revertsWithoutReason({ + gasLimit: 1_000_000, + }); + + await mineBlocksUntilTxIsIncluded(provider, ethers, tx.hash); + + await provider.request({ method: "evm_setAutomine", params: [true] }); + + return tx; +} + +async function mineBlocksUntilTxIsIncluded( + provider: EthereumProvider, + ethers: HardhatEthers, + txHash: string, +) { + let i = 0; + + while (true) { + const receipt = await ethers.provider.getTransactionReceipt(txHash); + + if (receipt !== null) { + return; + } + + await provider.request({ method: "hardhat_mine", params: [] }); + + i++; + if (i > 100) { + throw new Error(`Transaction was not mined after mining ${i} blocks`); + } + } +} diff --git a/v-next/hardhat-chai-matchers/test/hexEqual.ts b/v-next/hardhat-chai-matchers/test/hexEqual.ts index f2c081322d..724b4354bb 100644 --- a/v-next/hardhat-chai-matchers/test/hexEqual.ts +++ b/v-next/hardhat-chai-matchers/test/hexEqual.ts @@ -65,14 +65,14 @@ describe("UNIT: hexEqual", () => { ); }); - it("correct error when strings are not equal", async function () { + it("correct error when strings are not equal", async () => { expect(() => expect("0xa").to.hexEqual("0xb")).to.throw( AssertionError, 'Expected "0xa" to be a hex string equal to "0xb"', ); }); - it("correct error when strings are equal but expected not to", async function () { + it("correct error when strings are equal but expected not to", async () => { expect(() => expect("0xa").not.to.hexEqual("0xa")).to.throw( AssertionError, 'Expected "0xa" NOT to be a hex string equal to "0xa", but it was', diff --git a/v-next/hardhat-chai-matchers/test/panic.ts b/v-next/hardhat-chai-matchers/test/panic.ts new file mode 100644 index 0000000000..f2bd31ab18 --- /dev/null +++ b/v-next/hardhat-chai-matchers/test/panic.ts @@ -0,0 +1,18 @@ +import { describe, it } from "node:test"; + +import { assert } from "chai"; +import { toBigInt } from "ethers"; + +import { + PANIC_CODES, + panicErrorCodeToReason, +} from "../src/internal/reverted/panic.js"; + +describe("panic codes", () => { + it("all exported panic codes should have a description", async () => { + for (const [key, code] of Object.entries(PANIC_CODES)) { + const description = panicErrorCodeToReason(toBigInt(code)); + assert.isDefined(description, `No description for panic code ${key}`); + } + }); +}); diff --git a/v-next/hardhat-chai-matchers/test/properHex.ts b/v-next/hardhat-chai-matchers/test/properHex.ts index 1f682a489f..b7c7cdd52c 100644 --- a/v-next/hardhat-chai-matchers/test/properHex.ts +++ b/v-next/hardhat-chai-matchers/test/properHex.ts @@ -4,16 +4,16 @@ import { AssertionError, expect } from "chai"; import "../src/internal/add-chai-matchers"; -describe("properHex", function () { - it("should handle a successful positive case", function () { +describe("properHex", () => { + it("should handle a successful positive case", () => { expect("0xAB").to.be.properHex(2); }); - it("should handle a successful negative case", function () { + it("should handle a successful negative case", () => { expect("0xab").to.not.be.properHex(3); }); - it("should handle a positive case failing because of an invalid length", function () { + it("should handle a positive case failing because of an invalid length", () => { const input = "0xABCDEF"; const length = 99; expect(() => expect(input).to.be.properHex(length)).to.throw( @@ -26,14 +26,14 @@ describe("properHex", function () { ); }); - it("should handle a positive case failing because of an invalid hex value", function () { + it("should handle a positive case failing because of an invalid hex value", () => { expect(() => expect("0xABCDEFG").to.be.properHex(8)).to.throw( AssertionError, 'Expected "0xABCDEFG" to be a proper hex string, but it contains invalid (non-hex) characters', ); }); - it("should handle a negative case failing because of a valid length", function () { + it("should handle a negative case failing because of a valid length", () => { const input = "0xab"; const length = 2; expect(() => expect(input).to.not.be.properHex(length)).to.throw( @@ -46,7 +46,7 @@ describe("properHex", function () { ); }); - it("should handle a negative case failing because of an invalid hex value", function () { + it("should handle a negative case failing because of an invalid hex value", () => { const input = "0xabcdefg"; expect(() => expect(input).to.not.be.properHex(8)).to.throw( AssertionError, diff --git a/v-next/hardhat-chai-matchers/test/properPrivateKey.ts b/v-next/hardhat-chai-matchers/test/properPrivateKey.ts new file mode 100644 index 0000000000..18d8e10f6b --- /dev/null +++ b/v-next/hardhat-chai-matchers/test/properPrivateKey.ts @@ -0,0 +1,48 @@ +import { expect, AssertionError } from "chai"; + +import "../src/internal/add-chai-matchers"; +import { describe, it } from "node:test"; + +/* eslint-disable @typescript-eslint/no-unused-expressions */ + +describe("Proper private key", () => { + it("Expect to be proper private key", async () => { + expect("0x706618637b8ca922f6290ce1ecd4c31247e9ab75cf0530a0ac95c0332173d7c5") + .to.be.properPrivateKey; + expect("0x03c909455dcef4e1e981a21ffb14c1c51214906ce19e8e7541921b758221b5ae") + .to.be.properPrivateKey; + }); + + it("Expect not to be proper private key", async () => { + expect("0x28FAA621c3348823D6c6548981a19716bcDc740").to.not.be + .properPrivateKey; + expect("0x706618637b8ca922f6290ce1ecd4c31247e9ab75cf0530a0ac95c0332173d7cw") + .to.not.be.properPrivateKey; + expect("0x03c909455dcef4e1e981a21ffb14c1c51214906ce19e8e7541921b758221b5-e") + .to.not.be.properPrivateKey; + }); + + it("Expect to throw if invalid private key", async () => { + expect( + () => + expect( + "0x706618637b8ca922f6290ce1ecd4c31247e9ab75cf0530a0ac95c0332173d7c", + ).to.be.properPrivateKey, + ).to.throw( + AssertionError, + 'Expected "0x706618637b8ca922f6290ce1ecd4c31247e9ab75cf0530a0ac95c0332173d7c" to be a proper private key', + ); + }); + + it("Expect to throw if negation with proper private key)", async () => { + expect( + () => + expect( + "0x706618637b8ca922f6290ce1ecd4c31247e9ab75cf0530a0ac95c0332173d7c5", + ).not.to.be.properPrivateKey, + ).to.throw( + AssertionError, + 'Expected "0x706618637b8ca922f6290ce1ecd4c31247e9ab75cf0530a0ac95c0332173d7c5" NOT to be a proper private key', + ); + }); +}); diff --git a/v-next/hardhat-chai-matchers/test/reverted/reverted.ts b/v-next/hardhat-chai-matchers/test/reverted/reverted.ts new file mode 100644 index 0000000000..e04c22b0fc --- /dev/null +++ b/v-next/hardhat-chai-matchers/test/reverted/reverted.ts @@ -0,0 +1,464 @@ +import type { MatchersContract } from "../contracts.js"; +import type { EthereumProvider } from "@ignored/hardhat-vnext/types/providers"; +import type { HardhatEthers } from "@ignored/hardhat-vnext-ethers/types"; + +import path from "node:path"; +import { beforeEach, describe, it } from "node:test"; +import util from "node:util"; + +import { createHardhatRuntimeEnvironment } from "@ignored/hardhat-vnext/hre"; +import { HardhatError } from "@ignored/hardhat-vnext-errors"; +import hardhatEthersPlugin from "@ignored/hardhat-vnext-ethers"; +import { + assertRejectsWithHardhatError, + useFixtureProject, +} from "@nomicfoundation/hardhat-test-utils"; +import { AssertionError, expect } from "chai"; + +import "../../src/internal/add-chai-matchers"; +import { + runSuccessfulAsserts, + runFailedAsserts, + mineSuccessfulTransaction, + mineRevertedTransaction, +} from "../helpers.js"; + +describe("INTEGRATION: Reverted", () => { + describe("with the in-process hardhat network", () => { + useFixtureProject("hardhat-project"); + runTests(); + }); + + // TODO: when V3 node is ready, add this functionality + // describe("connected to a hardhat node", ()=>{ + // useEnvironmentWithNode("hardhat-project"); + // runTests(); + // }); + + function runTests() { + // deploy Matchers contract before each test + let matchers: MatchersContract; + + let provider: EthereumProvider; + let ethers: HardhatEthers; + + beforeEach(async () => { + const hre = await createHardhatRuntimeEnvironment({ + paths: { + artifacts: `${process.cwd()}/artifacts`, + }, + plugins: [hardhatEthersPlugin], + }); + + ({ ethers, provider } = await hre.network.connect()); + + const Matchers = await ethers.getContractFactory<[], MatchersContract>( + "Matchers", + ); + matchers = await Matchers.deploy(); + }); + + // helpers + const expectAssertionError = async (x: Promise, message: string) => { + return expect(x).to.be.eventually.rejectedWith(AssertionError, message); + }; + + describe("with a string as its subject", () => { + it("hash of a successful transaction", async () => { + const { hash } = await mineSuccessfulTransaction(provider, ethers); + + await expectAssertionError( + expect(hash).to.be.reverted(ethers), + "Expected transaction to be reverted", + ); + await expect(hash).to.not.be.reverted(ethers); + }); + + it("hash of a reverted transaction", async () => { + const { hash } = await mineRevertedTransaction( + provider, + ethers, + matchers, + ); + + await expect(hash).to.be.reverted(ethers); + await expectAssertionError( + expect(hash).to.not.be.reverted(ethers), + "Expected transaction NOT to be reverted", + ); + }); + + it("invalid string", async () => { + await assertRejectsWithHardhatError( + () => expect("0x123").to.be.reverted(ethers), + HardhatError.ERRORS.CHAI_MATCHERS.EXPECTED_VALID_TRANSACTION_HASH, + { + hash: "0x123", + }, + ); + + await assertRejectsWithHardhatError( + () => expect("0x123").to.not.be.reverted(ethers), + HardhatError.ERRORS.CHAI_MATCHERS.EXPECTED_VALID_TRANSACTION_HASH, + { + hash: "0x123", + }, + ); + }); + + it("promise of a hash of a successful transaction", async () => { + const { hash } = await mineSuccessfulTransaction(provider, ethers); + await expectAssertionError( + expect(Promise.resolve(hash)).to.be.reverted(ethers), + "Expected transaction to be reverted", + ); + await expect(Promise.resolve(hash)).to.not.be.reverted(ethers); + }); + + it("promise of a hash of a reverted transaction", async () => { + const { hash } = await mineRevertedTransaction( + provider, + ethers, + matchers, + ); + await expect(Promise.resolve(hash)).to.be.reverted(ethers); + await expectAssertionError( + expect(Promise.resolve(hash)).to.not.be.reverted(ethers), + "Expected transaction NOT to be reverted", + ); + }); + + it("promise of an invalid string", async () => { + await assertRejectsWithHardhatError( + () => expect(Promise.resolve("0x123")).to.be.reverted(ethers), + HardhatError.ERRORS.CHAI_MATCHERS.EXPECTED_VALID_TRANSACTION_HASH, + { + hash: "0x123", + }, + ); + + await assertRejectsWithHardhatError( + () => expect(Promise.resolve("0x123")).to.not.be.reverted(ethers), + HardhatError.ERRORS.CHAI_MATCHERS.EXPECTED_VALID_TRANSACTION_HASH, + { + hash: "0x123", + }, + ); + }); + + it("promise of an byte32 string", async () => { + await expect( + Promise.resolve( + "0x3230323400000000000000000000000000000000000000000000000000000000", + ), + ).not.to.be.reverted(ethers); + }); + }); + + describe("with a TxResponse as its subject", () => { + it("TxResponse of a successful transaction", async () => { + const tx = await mineSuccessfulTransaction(provider, ethers); + + await expectAssertionError( + expect(tx).to.be.reverted(ethers), + "Expected transaction to be reverted", + ); + await expect(tx).to.not.be.reverted(ethers); + }); + + it("TxResponse of a reverted transaction", async () => { + const tx = await mineRevertedTransaction(provider, ethers, matchers); + + await expect(tx).to.be.reverted(ethers); + await expectAssertionError( + expect(tx).to.not.be.reverted(ethers), + "Expected transaction NOT to be reverted", + ); + }); + + it("promise of a TxResponse of a successful transaction", async () => { + const txPromise = mineSuccessfulTransaction(provider, ethers); + + await expectAssertionError( + expect(txPromise).to.be.reverted(ethers), + "Expected transaction to be reverted", + ); + await expect(txPromise).to.not.be.reverted(ethers); + }); + + it("promise of a TxResponse of a reverted transaction", async () => { + const txPromise = mineRevertedTransaction(provider, ethers, matchers); + + await expect(txPromise).to.be.reverted(ethers); + await expectAssertionError( + expect(txPromise).to.not.be.reverted(ethers), + "Expected transaction NOT to be reverted", + ); + }); + + // it("reverted: should throw if chained to another non-chainable method", ()=>{ + // const txPromise = mineRevertedTransaction(provider, ethers, matchers); + + // expect(() => + // expect(txPromise) + // .to.be.revertedWith("an error message") + // .and.to.be.reverted(ethers), + // ).to.throw( + // /The matcher 'reverted' cannot be chained after 'revertedWith'./, + // ); + // }); + + // it("revertedWith: should throw if chained to another non-chainable method", ()=>{ + // const txPromise = mineRevertedTransaction(provider, ethers, matchers); + + // expect(() => + // expect(txPromise) + // .to.be.revertedWithCustomError(matchers, "SomeCustomError") + // .and.to.be.revertedWith("an error message"), + // ).to.throw( + // /The matcher 'revertedWith' cannot be chained after 'revertedWithCustomError'./, + // ); + // }); + + // it("revertedWithCustomError: should throw if chained to another non-chainable method", ()=>{ + // const txPromise = mineRevertedTransaction(provider, ethers, matchers); + // expect(() => + // expect(txPromise) + // .to.be.revertedWithoutReason() + // .and.to.be.revertedWithCustomError(matchers, "SomeCustomError"), + // ).to.throw( + // /The matcher 'revertedWithCustomError' cannot be chained after 'revertedWithoutReason'./, + // ); + // }); + + // it("revertedWithoutReason: should throw if chained to another non-chainable method", ()=>{ + // const txPromise = mineRevertedTransaction(provider, ethers, matchers); + // expect(() => + // expect(txPromise) + // .to.be.revertedWithPanic() + // .and.to.be.revertedWithoutReason(), + // ).to.throw( + // /The matcher 'revertedWithoutReason' cannot be chained after 'revertedWithPanic'./, + // ); + // }); + + // it("revertedWithPanic: should throw if chained to another non-chainable method", async ()=>{ + // const [sender] = await ethers.getSigners(); + // const txPromise = mineRevertedTransaction(provider, ethers, matchers); + // expect(() => + // expect(txPromise) + // .to.changeEtherBalance(sender, "-200") + // .and.to.be.revertedWithPanic(), + // ).to.throw( + // /The matcher 'revertedWithPanic' cannot be chained after 'changeEtherBalance'./, + // ); + // }); + }); + + describe("with a TxReceipt as its subject", () => { + it("TxReceipt of a successful transaction", async () => { + const tx = await mineSuccessfulTransaction(provider, ethers); + const receipt = await tx.wait(); + + await expectAssertionError( + expect(receipt).to.be.reverted(ethers), + "Expected transaction to be reverted", + ); + await expect(receipt).to.not.be.reverted(ethers); + }); + + it("TxReceipt of a reverted transaction", async () => { + const tx = await mineRevertedTransaction(provider, ethers, matchers); + const receipt = await ethers.provider.getTransactionReceipt(tx.hash); // tx.wait rejects, so we use provider.getTransactionReceipt + + await expect(receipt).to.be.reverted(ethers); + await expectAssertionError( + expect(receipt).to.not.be.reverted(ethers), + "Expected transaction NOT to be reverted", + ); + }); + + it("promise of a TxReceipt of a successful transaction", async () => { + const tx = await mineSuccessfulTransaction(provider, ethers); + const receiptPromise = tx.wait(); + + await expectAssertionError( + expect(receiptPromise).to.be.reverted(ethers), + "Expected transaction to be reverted", + ); + await expect(receiptPromise).to.not.be.reverted(ethers); + }); + + it("promise of a TxReceipt of a reverted transaction", async () => { + const tx = await mineRevertedTransaction(provider, ethers, matchers); + const receiptPromise = ethers.provider.getTransactionReceipt(tx.hash); // tx.wait rejects, so we use provider.getTransactionReceipt + + await expect(receiptPromise).to.be.reverted(ethers); + await expectAssertionError( + expect(receiptPromise).to.not.be.reverted(ethers), + "Expected transaction NOT to be reverted", + ); + }); + }); + + describe("calling a contract method that succeeds", () => { + it("successful asserts", async () => { + await runSuccessfulAsserts({ + matchers, + method: "succeeds", + args: [], + successfulAssert: (x) => expect(x).to.not.be.reverted(ethers), + }); + }); + + it("failed asserts", async () => { + await runFailedAsserts({ + matchers, + method: "succeeds", + args: [], + failedAssert: (x) => expect(x).to.be.reverted(ethers), + failedAssertReason: "Expected transaction to be reverted", + }); + }); + }); + + describe("calling a method that reverts without a reason", () => { + // depends on a bug being fixed on ethers.js + // see https://github.com/NomicFoundation/hardhat/issues/3446 + it.skip("successful asserts", async () => { + await runSuccessfulAsserts({ + matchers, + method: "revertsWithoutReason", + args: [], + successfulAssert: (x) => expect(x).to.be.reverted(ethers), + }); + }); + + // depends on a bug being fixed on ethers.js + // see https://github.com/NomicFoundation/hardhat/issues/3446 + it.skip("failed asserts", async () => { + await runFailedAsserts({ + matchers, + method: "revertsWithoutReason", + args: [], + failedAssert: (x) => expect(x).not.to.be.reverted(ethers), + failedAssertReason: "Expected transaction NOT to be reverted", + }); + }); + }); + + describe("calling a method that reverts with a reason string", () => { + it("successful asserts", async () => { + await runSuccessfulAsserts({ + matchers, + method: "revertsWith", + args: ["some reason"], + successfulAssert: (x) => expect(x).to.be.reverted(ethers), + }); + }); + + it("failed asserts", async () => { + await runFailedAsserts({ + matchers, + method: "revertsWith", + args: ["some reason"], + failedAssert: (x) => expect(x).not.to.be.reverted(ethers), + failedAssertReason: + "Expected transaction NOT to be reverted, but it reverted with reason 'some reason'", + }); + }); + }); + + describe("calling a method that reverts with a panic code", () => { + it("successful asserts", async () => { + await runSuccessfulAsserts({ + matchers, + method: "panicAssert", + args: [], + successfulAssert: (x) => expect(x).to.be.reverted(ethers), + }); + }); + + it("failed asserts", async () => { + await runFailedAsserts({ + matchers, + method: "panicAssert", + args: [], + failedAssert: (x) => expect(x).not.to.be.reverted(ethers), + failedAssertReason: + "Expected transaction NOT to be reverted, but it reverted with panic code 0x01 (Assertion error)", + }); + }); + }); + + describe("calling a method that reverts with a custom error", () => { + it("successful asserts", async () => { + await runSuccessfulAsserts({ + matchers, + method: "revertWithSomeCustomError", + args: [], + successfulAssert: (x) => expect(x).to.be.reverted(ethers), + }); + }); + + it("failed asserts", async () => { + await runFailedAsserts({ + matchers, + method: "revertWithSomeCustomError", + args: [], + failedAssert: (x) => expect(x).not.to.be.reverted(ethers), + failedAssertReason: "Expected transaction NOT to be reverted", + }); + }); + }); + + describe("invalid rejection values", () => { + it("non-errors", async () => { + await expectAssertionError( + expect(Promise.reject({})).to.be.reverted(ethers), + "Expected an Error object", + ); + }); + + it("errors that are not related to a reverted transaction", async () => { + // use an address that almost surely doesn't have balance + const randomPrivateKey = + "0xc5c587cc6e48e9692aee0bf07474118e6d830c11905f7ec7ff32c09c99eba5f9"; + const signer = new ethers.Wallet(randomPrivateKey, ethers.provider); + + const matchersFromSenderWithoutFunds = matchers.connect( + signer, + ) as MatchersContract; + + // this transaction will fail because of lack of funds, not because of a + // revert + await expect( + expect( + matchersFromSenderWithoutFunds.revertsWithoutReason({ + gasLimit: 1_000_000, + }), + ).to.not.be.reverted(ethers), + ).to.be.eventually.rejectedWith( + "Sender doesn't have enough funds to send tx. The max upfront cost is: 2750000000000000 and the sender's balance is: 0.", + ); + }); + }); + + describe("stack traces", () => { + // smoke test for stack traces + it("includes test file", async () => { + try { + await expect(matchers.succeeds()).to.be.reverted(ethers); + } catch (e: any) { + const errorString = util.inspect(e); + expect(errorString).to.include("Expected transaction to be reverted"); + expect(errorString).to.include( + path.join("test", "reverted", "reverted.ts"), + ); + return; + } + expect.fail("Expected an exception but none was thrown"); + }); + }); + } +}); diff --git a/v-next/hardhat-chai-matchers/test/reverted/revertedWith.ts b/v-next/hardhat-chai-matchers/test/reverted/revertedWith.ts new file mode 100644 index 0000000000..91b68e49c4 --- /dev/null +++ b/v-next/hardhat-chai-matchers/test/reverted/revertedWith.ts @@ -0,0 +1,277 @@ +import type { MatchersContract } from "../contracts.js"; +import type { EthereumProvider } from "@ignored/hardhat-vnext/types/providers"; +import type { HardhatEthers } from "@ignored/hardhat-vnext-ethers/types"; + +import path from "node:path"; +import { beforeEach, describe, it } from "node:test"; +import util from "node:util"; + +import { createHardhatRuntimeEnvironment } from "@ignored/hardhat-vnext/hre"; +import { HardhatError } from "@ignored/hardhat-vnext-errors"; +import hardhatEthersPlugin from "@ignored/hardhat-vnext-ethers"; +import { + assertThrowsHardhatError, + useFixtureProject, +} from "@nomicfoundation/hardhat-test-utils"; +import { AssertionError, expect } from "chai"; + +import { + runSuccessfulAsserts, + runFailedAsserts, + mineSuccessfulTransaction, +} from "../helpers.js"; + +import "../../src/internal/add-chai-matchers"; + +describe("INTEGRATION: Reverted with", () => { + describe("with the in-process hardhat network", () => { + useFixtureProject("hardhat-project"); + runTests(); + }); + + // TODO: when V3 node is ready, add this functionality + // describe("connected to a hardhat node", ()=>{ + // useEnvironmentWithNode("hardhat-project"); + // runTests(); + // }); + + function runTests() { + // deploy Matchers contract before each test + let matchers: MatchersContract; + + let provider: EthereumProvider; + let ethers: HardhatEthers; + + beforeEach(async () => { + const hre = await createHardhatRuntimeEnvironment({ + paths: { + artifacts: `${process.cwd()}/artifacts`, + }, + plugins: [hardhatEthersPlugin], + }); + + ({ ethers, provider } = await hre.network.connect()); + + const Matchers = await ethers.getContractFactory<[], MatchersContract>( + "Matchers", + ); + matchers = await Matchers.deploy(); + }); + + describe("calling a method that succeeds", () => { + it("successful asserts", async () => { + await runSuccessfulAsserts({ + matchers, + method: "succeeds", + successfulAssert: (x) => + expect(x).not.to.be.revertedWith("some reason"), + }); + }); + + it("failed asserts", async () => { + await runFailedAsserts({ + matchers, + method: "succeeds", + failedAssert: (x) => expect(x).to.be.revertedWith("some reason"), + failedAssertReason: + "Expected transaction to be reverted with reason 'some reason', but it didn't revert", + }); + }); + }); + + describe("calling a method that reverts without a reason", () => { + it("successful asserts", async () => { + await runSuccessfulAsserts({ + matchers, + method: "revertsWithoutReason", + successfulAssert: (x) => + expect(x).to.not.be.revertedWith("some reason"), + }); + }); + + // depends on a bug being fixed on ethers.js + // see https://github.com/NomicFoundation/hardhat/issues/3446 + it.skip("failed asserts", async () => { + await runFailedAsserts({ + matchers, + method: "revertsWithoutReason", + failedAssert: (x) => expect(x).to.be.revertedWith("some reason"), + failedAssertReason: + "Expected transaction to be reverted with reason 'some reason', but it reverted without a reason", + }); + }); + }); + + describe("calling a method that reverts with a reason string", () => { + it("successful asserts", async () => { + await runSuccessfulAsserts({ + matchers, + method: "revertsWith", + args: ["some reason"], + successfulAssert: (x) => expect(x).to.be.revertedWith("some reason"), + }); + await runSuccessfulAsserts({ + matchers, + method: "revertsWith", + args: ["regular expression reason"], + successfulAssert: (x) => + expect(x).to.be.revertedWith(/regular .* reason/), + }); + await runSuccessfulAsserts({ + matchers, + method: "revertsWith", + args: ["some reason"], + successfulAssert: (x) => + expect(x).to.not.be.revertedWith("another reason"), + }); + }); + + it("failed asserts: expected reason not to match", async () => { + await runFailedAsserts({ + matchers, + method: "revertsWith", + args: ["some reason"], + failedAssert: (x) => expect(x).to.not.be.revertedWith("some reason"), + failedAssertReason: + "Expected transaction NOT to be reverted with reason 'some reason', but it was", + }); + }); + + it("failed asserts: expected a different reason", async () => { + await runFailedAsserts({ + matchers, + method: "revertsWith", + args: ["another reason"], + failedAssert: (x) => expect(x).to.be.revertedWith("some reason"), + failedAssertReason: + "Expected transaction to be reverted with reason 'some reason', but it reverted with reason 'another reason'", + }); + }); + + it("failed asserts: expected a different regular expression reason ", async () => { + await runFailedAsserts({ + matchers, + method: "revertsWith", + args: ["another regular expression reason"], + failedAssert: (x) => + expect(x).to.be.revertedWith(/some regular .* reason/), + failedAssertReason: + "Expected transaction to be reverted with reason 'some regular .* reason', but it reverted with reason 'another regular expression reason'", + }); + }); + }); + + describe("calling a method that reverts with a panic code", () => { + it("successful asserts", async () => { + await runSuccessfulAsserts({ + matchers, + method: "panicAssert", + successfulAssert: (x) => + expect(x).to.not.be.revertedWith("some reason"), + }); + }); + + it("failed asserts", async () => { + await runFailedAsserts({ + matchers, + method: "panicAssert", + failedAssert: (x) => expect(x).to.be.revertedWith("some reason"), + failedAssertReason: + "Expected transaction to be reverted with reason 'some reason', but it reverted with panic code 0x01 (Assertion error)", + }); + }); + }); + + describe("calling a method that reverts with a custom error", () => { + it("successful asserts", async () => { + await runSuccessfulAsserts({ + matchers, + method: "revertWithSomeCustomError", + successfulAssert: (x) => + expect(x).to.not.be.revertedWith("some reason"), + }); + }); + + it("failed asserts", async () => { + await runFailedAsserts({ + matchers, + method: "revertWithSomeCustomError", + failedAssert: (x) => expect(x).to.be.revertedWith("some reason"), + failedAssertReason: + "Expected transaction to be reverted with reason 'some reason', but it reverted with a custom error", + }); + }); + }); + + describe("invalid values", () => { + it("non-errors as subject", async () => { + await expect( + expect(Promise.reject({})).to.be.revertedWith("some reason"), + ).to.be.rejectedWith(AssertionError, "Expected an Error object"); + }); + + it("non-string as expectation", async () => { + const { hash } = await mineSuccessfulTransaction(provider, ethers); + + assertThrowsHardhatError( + () => expect(hash).to.be.revertedWith(10), + HardhatError.ERRORS.CHAI_MATCHERS + .EXPECT_STRING_OR_REGEX_AS_REVERT_REASON, + {}, + ); + }); + + it("non-string as expectation, subject is a rejected promise", async () => { + const tx = matchers.revertsWithoutReason(); + + assertThrowsHardhatError( + () => expect(tx).to.be.revertedWith(10), + HardhatError.ERRORS.CHAI_MATCHERS + .EXPECT_STRING_OR_REGEX_AS_REVERT_REASON, + {}, + ); + }); + + it("errors that are not related to a reverted transaction", async () => { + // use an address that almost surely doesn't have balance + const randomPrivateKey = + "0xc5c587cc6e48e9692aee0bf07474118e6d830c11905f7ec7ff32c09c99eba5f9"; + const signer = new ethers.Wallet(randomPrivateKey, ethers.provider); + const matchersFromSenderWithoutFunds = matchers.connect( + signer, + ) as MatchersContract; + + // this transaction will fail because of lack of funds, not because of a + // revert + await expect( + expect( + matchersFromSenderWithoutFunds.revertsWithoutReason({ + gasLimit: 1_000_000, + }), + ).to.not.be.revertedWith("some reason"), + ).to.be.eventually.rejectedWith( + "Sender doesn't have enough funds to send tx. The max upfront cost is: 2750000000000000 and the sender's balance is: 0.", + ); + }); + }); + + describe("stack traces", () => { + // smoke test for stack traces + it("includes test file", async () => { + try { + await expect(matchers.revertsWith("bar")).to.be.revertedWith("foo"); + } catch (e: any) { + const errorString = util.inspect(e); + expect(errorString).to.include( + "Expected transaction to be reverted with reason 'foo', but it reverted with reason 'bar'", + ); + expect(errorString).to.include( + path.join("test", "reverted", "revertedWith.ts"), + ); + return; + } + expect.fail("Expected an exception but none was thrown"); + }); + }); + } +}); diff --git a/v-next/hardhat-chai-matchers/test/reverted/revertedWithCustomError.ts b/v-next/hardhat-chai-matchers/test/reverted/revertedWithCustomError.ts new file mode 100644 index 0000000000..4551be2871 --- /dev/null +++ b/v-next/hardhat-chai-matchers/test/reverted/revertedWithCustomError.ts @@ -0,0 +1,562 @@ +import type { MatchersContract } from "../contracts.js"; +import type { EthereumProvider } from "@ignored/hardhat-vnext/types/providers"; +import type { HardhatEthers } from "@ignored/hardhat-vnext-ethers/types"; + +import path from "node:path"; +import { beforeEach, describe, it } from "node:test"; +import util from "node:util"; + +import { createHardhatRuntimeEnvironment } from "@ignored/hardhat-vnext/hre"; +import { HardhatError } from "@ignored/hardhat-vnext-errors"; +import hardhatEthersPlugin from "@ignored/hardhat-vnext-ethers"; +import { + assertThrowsHardhatError, + useFixtureProject, +} from "@nomicfoundation/hardhat-test-utils"; +import { AssertionError, expect } from "chai"; + +import { anyUint, anyValue } from "../../src/withArgs.js"; +import { + runSuccessfulAsserts, + runFailedAsserts, + mineSuccessfulTransaction, +} from "../helpers.js"; + +import "../../src/internal/add-chai-matchers"; + +describe("INTEGRATION: Reverted with custom error", () => { + describe("with the in-process hardhat network", () => { + useFixtureProject("hardhat-project"); + runTests(); + }); + + // TODO: when V3 node is ready, add this functionality + // describe("connected to a hardhat node", ()=>{ + // useEnvironmentWithNode("hardhat-project"); + // runTests(); + // }); + + function runTests() { + // deploy Matchers contract before each test + let matchers: MatchersContract; + + let provider: EthereumProvider; + let ethers: HardhatEthers; + + beforeEach(async () => { + const hre = await createHardhatRuntimeEnvironment({ + paths: { + artifacts: `${process.cwd()}/artifacts`, + }, + plugins: [hardhatEthersPlugin], + }); + + ({ ethers, provider } = await hre.network.connect()); + + const Matchers = await ethers.getContractFactory<[], MatchersContract>( + "Matchers", + ); + + matchers = await Matchers.deploy(); + }); + + describe("calling a method that succeeds", () => { + it("successful asserts", async () => { + await runSuccessfulAsserts({ + matchers, + method: "succeeds", + successfulAssert: (x) => + expect(x).not.to.be.revertedWithCustomError( + matchers, + "SomeCustomError", + ), + }); + }); + + it("failed asserts", async () => { + await runFailedAsserts({ + matchers, + method: "succeeds", + failedAssert: (x) => + expect(x).to.be.revertedWithCustomError( + matchers, + "SomeCustomError", + ), + failedAssertReason: + "Expected transaction to be reverted with custom error 'SomeCustomError', but it didn't revert", + }); + }); + }); + + describe("calling a method that reverts without a reason", () => { + it("successful asserts", async () => { + await runSuccessfulAsserts({ + matchers, + method: "revertsWithoutReason", + successfulAssert: (x) => + expect(x).to.not.be.revertedWithCustomError( + matchers, + "SomeCustomError", + ), + }); + }); + + // depends on a bug being fixed on ethers.js + // see https://github.com/NomicFoundation/hardhat/issues/3446 + it.skip("failed asserts", async () => { + await runFailedAsserts({ + matchers, + method: "revertsWithoutReason", + failedAssert: (x) => + expect(x).to.be.revertedWithCustomError( + matchers, + "SomeCustomError", + ), + failedAssertReason: + "Expected transaction to be reverted with custom error 'SomeCustomError', but it reverted without a reason", + }); + }); + }); + + describe("calling a method that reverts with a reason string", () => { + it("successful asserts", async () => { + await runSuccessfulAsserts({ + matchers, + method: "revertsWith", + args: ["some reason"], + successfulAssert: (x) => + expect(x).to.not.be.revertedWithCustomError( + matchers, + "SomeCustomError", + ), + }); + }); + + it("failed asserts", async () => { + await runFailedAsserts({ + matchers, + method: "revertsWith", + args: ["some reason"], + failedAssert: (x) => + expect(x).to.be.revertedWithCustomError( + matchers, + "SomeCustomError", + ), + failedAssertReason: + "Expected transaction to be reverted with custom error 'SomeCustomError', but it reverted with reason 'some reason'", + }); + }); + }); + + describe("calling a method that reverts with a panic code", () => { + it("successful asserts", async () => { + await runSuccessfulAsserts({ + matchers, + method: "panicAssert", + successfulAssert: (x) => + expect(x).to.not.be.revertedWithCustomError( + matchers, + "SomeCustomError", + ), + }); + }); + + it("failed asserts", async () => { + await runFailedAsserts({ + matchers, + method: "panicAssert", + failedAssert: (x) => + expect(x).to.be.revertedWithCustomError( + matchers, + "SomeCustomError", + ), + failedAssertReason: + "Expected transaction to be reverted with custom error 'SomeCustomError', but it reverted with panic code 0x01 (Assertion error)", + }); + }); + }); + + describe("calling a method that reverts with a custom error", () => { + it("successful asserts", async () => { + await runSuccessfulAsserts({ + matchers, + method: "revertWithSomeCustomError", + successfulAssert: (x) => + expect(x).to.be.revertedWithCustomError( + matchers, + "SomeCustomError", + ), + }); + + await runSuccessfulAsserts({ + matchers, + method: "revertWithAnotherCustomError", + successfulAssert: (x) => + expect(x).to.not.be.revertedWithCustomError( + matchers, + "SomeCustomError", + ), + }); + }); + + it("failed asserts: expected custom error not to match", async () => { + await runFailedAsserts({ + matchers, + method: "revertWithSomeCustomError", + failedAssert: (x) => + expect(x).to.not.be.revertedWithCustomError( + matchers, + "SomeCustomError", + ), + failedAssertReason: + "Expected transaction NOT to be reverted with custom error 'SomeCustomError', but it was", + }); + }); + + it("failed asserts: reverts with another custom error of the same contract", async () => { + await runFailedAsserts({ + matchers, + method: "revertWithAnotherCustomError", + failedAssert: (x) => + expect(x).to.be.revertedWithCustomError( + matchers, + "SomeCustomError", + ), + failedAssertReason: + "Expected transaction to be reverted with custom error 'SomeCustomError', but it reverted with custom error 'AnotherCustomError'", + }); + }); + + it("failed asserts: reverts with another custom error of another contract", async () => { + await runFailedAsserts({ + matchers, + method: "revertWithAnotherContractCustomError", + failedAssert: (x) => + expect(x).to.be.revertedWithCustomError( + matchers, + "SomeCustomError", + ), + failedAssertReason: + "Expected transaction to be reverted with custom error 'SomeCustomError', but it reverted with a different custom error", + }); + }); + }); + + describe("with args", () => { + describe("one argument", () => { + it("should match correct argument", async () => { + await expect(matchers.revertWithCustomErrorWithUint(1)) + .to.be.revertedWithCustomError(matchers, "CustomErrorWithUint") + .withArgs(1); + }); + + it("should fail if wrong argument", async () => { + await expect( + expect(matchers.revertWithCustomErrorWithUint(1)) + .to.be.revertedWithCustomError(matchers, "CustomErrorWithUint") + .withArgs(2), + ).to.be.rejectedWith( + AssertionError, + 'Error in "CustomErrorWithUint" custom error: Error in the 1st argument assertion: expected 1 to equal 2.', + ); + }); + }); + + describe("two arguments", () => { + it("should match correct values", async () => { + await expect( + matchers.revertWithCustomErrorWithUintAndString(1, "foo"), + ) + .to.be.revertedWithCustomError( + matchers, + "CustomErrorWithUintAndString", + ) + .withArgs(1, "foo"); + }); + + it("should fail if uint is wrong", async () => { + await expect( + expect(matchers.revertWithCustomErrorWithUintAndString(1, "foo")) + .to.be.revertedWithCustomError( + matchers, + "CustomErrorWithUintAndString", + ) + .withArgs(2, "foo"), + ).to.be.rejectedWith( + AssertionError, + 'Error in "CustomErrorWithUintAndString" custom error: Error in the 1st argument assertion: expected 1 to equal 2.', + ); + }); + + it("should fail if string is wrong", async () => { + await expect( + expect(matchers.revertWithCustomErrorWithUintAndString(1, "foo")) + .to.be.revertedWithCustomError( + matchers, + "CustomErrorWithUintAndString", + ) + .withArgs(1, "bar"), + ).to.be.rejectedWith( + AssertionError, + "Error in \"CustomErrorWithUintAndString\" custom error: Error in the 2nd argument assertion: expected 'foo' to equal 'bar'", + ); + }); + + it("should fail if first predicate throws", async () => { + await expect( + expect(matchers.revertWithCustomErrorWithUintAndString(1, "foo")) + .to.be.revertedWithCustomError( + matchers, + "CustomErrorWithUintAndString", + ) + .withArgs(() => { + throw new Error("user-defined error"); + }, "foo"), + ).to.be.rejectedWith( + Error, + 'Error in "CustomErrorWithUintAndString" custom error: Error in the 1st argument assertion: The predicate threw when called: user-defined error', + ); + }); + }); + + describe("different number of arguments", () => { + it("should reject if expected fewer arguments", async () => { + await expect( + expect(matchers.revertWithCustomErrorWithUintAndString(1, "s")) + .to.be.revertedWithCustomError( + matchers, + "CustomErrorWithUintAndString", + ) + .withArgs(1), + ).to.be.rejectedWith( + AssertionError, + 'Error in "CustomErrorWithUintAndString" custom error: Expected arguments array to have length 1, but it has 2', + ); + }); + + it("should reject if expected more arguments", async () => { + await expect( + expect(matchers.revertWithCustomErrorWithUintAndString(1, "s")) + .to.be.revertedWithCustomError( + matchers, + "CustomErrorWithUintAndString", + ) + .withArgs(1, "s", 3), + ).to.be.rejectedWith( + AssertionError, + 'Error in "CustomErrorWithUintAndString" custom error: Expected arguments array to have length 3, but it has 2', + ); + }); + }); + + describe("nested arguments", () => { + it("should match correct arguments", async () => { + await expect(matchers.revertWithCustomErrorWithPair(1, 2)) + .to.be.revertedWithCustomError(matchers, "CustomErrorWithPair") + .withArgs([1, 2]); + }); + + it("should reject different arguments", async () => { + await expect( + expect(matchers.revertWithCustomErrorWithPair(1, 2)) + .to.be.revertedWithCustomError(matchers, "CustomErrorWithPair") + .withArgs([3, 2]), + ).to.be.rejectedWith( + AssertionError, + 'Error in "CustomErrorWithPair" custom error: Error in the 1st argument assertion: Error in the 1st argument assertion: expected 1 to equal 3.', + ); + }); + }); + + describe("array of different lengths", () => { + it("should fail if the expected array is bigger", async () => { + await expect( + expect(matchers.revertWithCustomErrorWithPair(1, 2)) + .to.be.revertedWithCustomError(matchers, "CustomErrorWithPair") + .withArgs([1]), + ).to.be.rejectedWith( + AssertionError, + 'Error in "CustomErrorWithPair" custom error: Error in the 1st argument assertion: Expected arguments array to have length 1, but it has 2', + ); + }); + + it("should fail if the expected array is smaller", async () => { + await expect( + expect(matchers.revertWithCustomErrorWithPair(1, 2)) + .to.be.revertedWithCustomError(matchers, "CustomErrorWithPair") + .withArgs([1, 2, 3]), + ).to.be.rejectedWith( + AssertionError, + 'Error in "CustomErrorWithPair" custom error: Error in the 1st argument assertion: Expected arguments array to have length 3, but it has 2', + ); + }); + }); + + it("should fail when used with .not.", async () => { + expect(() => + expect(matchers.revertWithSomeCustomError()) + .to.not.be.revertedWithCustomError(matchers, "SomeCustomError") + .withArgs(1), + ).to.throw(Error, "Do not combine .not. with .withArgs()"); + }); + + it("should fail if withArgs is called on its own", async () => { + expect(() => + expect(matchers.revertWithCustomErrorWithUint(1)) + // @ts-expect-error + .withArgs(1), + ).to.throw( + Error, + "withArgs can only be used in combination with a previous .emit or .revertedWithCustomError assertion", + ); + }); + + // it("should fail if both emit and revertedWithCustomError are called", async ()=>{ + // expect(() => + // expect(matchers.revertWithSomeCustomError()) + // .to.emit(matchers, "SomeEvent") + // .and.to.be.revertedWithCustomError(matchers, "SomeCustomError") + // .withArgs(1), + // ).to.throw( + // Error, + // "The matcher 'revertedWithCustomError' cannot be chained after 'emit'.", + // ); + // }); + + describe("should handle argument predicates", () => { + it("should pass when a predicate argument returns true", async () => { + await expect(matchers.revertWithCustomErrorWithUint(1)) + .to.be.revertedWithCustomError(matchers, "CustomErrorWithUint") + .withArgs(anyValue); + await expect(matchers.revertWithCustomErrorWithUint(1)) + .to.be.revertedWithCustomError(matchers, "CustomErrorWithUint") + .withArgs(anyUint); + }); + + it("should fail when a predicate argument returns false", async () => { + await expect( + expect(matchers.revertWithCustomErrorWithUint(1)) + .to.be.revertedWithCustomError(matchers, "CustomErrorWithUint") + .withArgs(() => false), + ).to.be.rejectedWith( + AssertionError, + 'Error in "CustomErrorWithUint" custom error: Error in the 1st argument assertion: The predicate did not return true', + ); + }); + + it("should fail when a predicate argument throws an error", async () => { + await expect( + expect(matchers.revertWithCustomErrorWithInt(-1)) + .to.be.revertedWithCustomError(matchers, "CustomErrorWithInt") + .withArgs(anyUint), + ).to.be.rejectedWith( + AssertionError, + 'Error in "CustomErrorWithInt" custom error: Error in the 1st argument assertion: The predicate threw when called: anyUint expected its argument to be an unsigned integer, but it was negative, with value -1', + ); + }); + }); + }); + + describe("invalid values", () => { + it("non-errors as subject", async () => { + await expect( + expect(Promise.reject({})).to.be.revertedWithCustomError( + matchers, + "SomeCustomError", + ), + ).to.be.rejectedWith(AssertionError, "Expected an Error object"); + }); + + it("non-string as expectation", async () => { + const { hash } = await mineSuccessfulTransaction(provider, ethers); + + assertThrowsHardhatError( + () => expect(hash).to.be.revertedWith(10), + HardhatError.ERRORS.CHAI_MATCHERS + .EXPECT_STRING_OR_REGEX_AS_REVERT_REASON, + {}, + ); + }); + + it("the contract is not specified", async () => { + assertThrowsHardhatError( + () => + expect( + matchers.revertWithSomeCustomError(), + ).to.be.revertedWithCustomError("SomeCustomError"), + HardhatError.ERRORS.CHAI_MATCHERS.FIRST_ARGUMENT_MUST_BE_A_CONTRACT, + {}, + ); + }); + + it("the contract doesn't have a custom error with that name", async () => { + assertThrowsHardhatError( + () => + expect( + matchers.revertWithSomeCustomError(), + ).to.be.revertedWithCustomError(matchers, "SomeCustmError"), + HardhatError.ERRORS.CHAI_MATCHERS.CONTRACT_DOES_NOT_HAVE_CUSTOM_ERROR, + { customErrorName: "SomeCustmError" }, + ); + }); + + it("errors that are not related to a reverted transaction", async () => { + // use an address that almost surely doesn't have balance + const randomPrivateKey = + "0xc5c587cc6e48e9692aee0bf07474118e6d830c11905f7ec7ff32c09c99eba5f9"; + const signer = new ethers.Wallet(randomPrivateKey, ethers.provider); + const matchersFromSenderWithoutFunds = matchers.connect( + signer, + ) as MatchersContract; + + // this transaction will fail because of lack of funds, not because of a + // revert + await expect( + expect( + matchersFromSenderWithoutFunds.revertsWithoutReason({ + gasLimit: 1_000_000, + }), + ).to.not.be.revertedWithCustomError(matchers, "SomeCustomError"), + ).to.be.eventually.rejectedWith( + "Sender doesn't have enough funds to send tx", + ); + }); + + it("extra arguments", async () => { + assertThrowsHardhatError( + () => + expect( + matchers.revertWithSomeCustomError(), + ).to.be.revertedWithCustomError( + matchers, + "SomeCustomError", + "extraArgument", + ), + HardhatError.ERRORS.CHAI_MATCHERS.REVERT_INVALID_ARGUMENTS_LENGTH, + {}, + ); + }); + }); + + describe("stack traces", () => { + // smoke test for stack traces + it("includes test file", async () => { + try { + await expect( + matchers.revertsWith("some reason"), + ).to.be.revertedWithCustomError(matchers, "SomeCustomError"); + } catch (e: any) { + const errorString = util.inspect(e); + expect(errorString).to.include( + "Expected transaction to be reverted with custom error 'SomeCustomError', but it reverted with reason 'some reason'", + ); + expect(errorString).to.include( + path.join("test", "reverted", "revertedWithCustomError.ts"), + ); + return; + } + expect.fail("Expected an exception but none was thrown"); + }); + }); + } +}); diff --git a/v-next/hardhat-chai-matchers/test/reverted/revertedWithPanic.ts b/v-next/hardhat-chai-matchers/test/reverted/revertedWithPanic.ts new file mode 100644 index 0000000000..87b352e890 --- /dev/null +++ b/v-next/hardhat-chai-matchers/test/reverted/revertedWithPanic.ts @@ -0,0 +1,348 @@ +import type { MatchersContract } from "../contracts.js"; +import type { EthereumProvider } from "@ignored/hardhat-vnext/types/providers"; +import type { HardhatEthers } from "@ignored/hardhat-vnext-ethers/types"; + +import path from "node:path"; +import { beforeEach, describe, it } from "node:test"; +import util from "node:util"; + +import { createHardhatRuntimeEnvironment } from "@ignored/hardhat-vnext/hre"; +import { HardhatError } from "@ignored/hardhat-vnext-errors"; +import hardhatEthersPlugin from "@ignored/hardhat-vnext-ethers"; +import { + assertThrowsHardhatError, + useFixtureProject, +} from "@nomicfoundation/hardhat-test-utils"; +import { AssertionError, expect } from "chai"; + +import "../../src/internal/add-chai-matchers"; +import { PANIC_CODES } from "../../src/panic.js"; +import { + runSuccessfulAsserts, + runFailedAsserts, + mineSuccessfulTransaction, +} from "../helpers.js"; + +describe("INTEGRATION: Reverted with panic", () => { + describe("with the in-process hardhat network", () => { + useFixtureProject("hardhat-project"); + runTests(); + }); + + // TODO: when V3 node is ready, add this functionality + // describe("connected to a hardhat node", ()=>{ + // useEnvironmentWithNode("hardhat-project"); + // runTests(); + // }); + + function runTests() { + // deploy Matchers contract before each test + let matchers: MatchersContract; + + let provider: EthereumProvider; + let ethers: HardhatEthers; + + beforeEach(async () => { + const hre = await createHardhatRuntimeEnvironment({ + paths: { + artifacts: `${process.cwd()}/artifacts`, + }, + plugins: [hardhatEthersPlugin], + }); + + ({ ethers, provider } = await hre.network.connect()); + + const Matchers = await ethers.getContractFactory<[], MatchersContract>( + "Matchers", + ); + matchers = await Matchers.deploy(); + }); + + describe("calling a method that succeeds", () => { + it("successful asserts", async () => { + await runSuccessfulAsserts({ + matchers, + method: "succeeds", + successfulAssert: (x) => expect(x).not.to.be.revertedWithPanic(), + }); + await runSuccessfulAsserts({ + matchers, + method: "succeeds", + successfulAssert: (x) => + expect(x).not.to.be.revertedWithPanic(PANIC_CODES.ASSERTION_ERROR), + }); + }); + + it("failed asserts", async () => { + await runFailedAsserts({ + matchers, + method: "succeeds", + failedAssert: (x) => expect(x).to.be.revertedWithPanic(), + failedAssertReason: + "Expected transaction to be reverted with some panic code, but it didn't revert", + }); + await runFailedAsserts({ + matchers, + method: "succeeds", + failedAssert: (x) => + expect(x).to.be.revertedWithPanic(PANIC_CODES.ASSERTION_ERROR), + failedAssertReason: + "Expected transaction to be reverted with panic code 0x01 (Assertion error), but it didn't revert", + }); + }); + }); + + describe("calling a method that reverts without a reason", () => { + it("successful asserts", async () => { + await runSuccessfulAsserts({ + matchers, + method: "revertsWithoutReason", + successfulAssert: (x) => expect(x).to.not.be.revertedWithPanic(), + }); + + await runSuccessfulAsserts({ + matchers, + method: "revertsWithoutReason", + successfulAssert: (x) => + expect(x).to.not.be.revertedWithPanic(PANIC_CODES.ASSERTION_ERROR), + }); + }); + + it("failed asserts", async () => { + await runFailedAsserts({ + matchers, + method: "revertsWithoutReason", + failedAssert: (x) => expect(x).to.be.revertedWithPanic(), + failedAssertReason: + "Expected transaction to be reverted with some panic code, but it reverted without a reason", + }); + + await runFailedAsserts({ + matchers, + method: "revertsWithoutReason", + failedAssert: (x) => + expect(x).to.be.revertedWithPanic(PANIC_CODES.ASSERTION_ERROR), + failedAssertReason: + "Expected transaction to be reverted with panic code 0x01 (Assertion error), but it reverted without a reason", + }); + }); + }); + + describe("calling a method that reverts with a reason string", () => { + it("successful asserts", async () => { + await runSuccessfulAsserts({ + matchers, + method: "revertsWith", + args: ["some reason"], + successfulAssert: (x) => expect(x).to.not.be.revertedWithPanic(), + }); + await runSuccessfulAsserts({ + matchers, + method: "revertsWith", + args: ["some reason"], + successfulAssert: (x) => + expect(x).to.not.be.revertedWithPanic(PANIC_CODES.ASSERTION_ERROR), + }); + }); + + it("failed asserts", async () => { + await runFailedAsserts({ + matchers, + method: "revertsWith", + args: ["some reason"], + failedAssert: (x) => expect(x).to.be.revertedWithPanic(), + failedAssertReason: + "Expected transaction to be reverted with some panic code, but it reverted with reason 'some reason'", + }); + await runFailedAsserts({ + matchers, + method: "revertsWith", + args: ["some reason"], + failedAssert: (x) => + expect(x).to.be.revertedWithPanic(PANIC_CODES.ASSERTION_ERROR), + failedAssertReason: + "Expected transaction to be reverted with panic code 0x01 (Assertion error), but it reverted with reason 'some reason'", + }); + }); + }); + + describe("calling a method that reverts with a panic code", () => { + it("successful asserts", async () => { + await runSuccessfulAsserts({ + matchers, + method: "panicAssert", + successfulAssert: (x) => expect(x).to.be.revertedWithPanic(), + }); + await runSuccessfulAsserts({ + matchers, + method: "panicAssert", + successfulAssert: (x) => + expect(x).to.be.revertedWithPanic(PANIC_CODES.ASSERTION_ERROR), + }); + }); + + it("failed asserts", async () => { + await runFailedAsserts({ + matchers, + method: "panicAssert", + failedAssert: (x) => expect(x).to.not.be.revertedWithPanic(), + failedAssertReason: + "Expected transaction NOT to be reverted with some panic code, but it reverted with panic code 0x01 (Assertion error)", + }); + + await runFailedAsserts({ + matchers, + method: "panicAssert", + failedAssert: (x) => + expect(x).to.not.be.revertedWithPanic(PANIC_CODES.ASSERTION_ERROR), + failedAssertReason: + "Expected transaction NOT to be reverted with panic code 0x01 (Assertion error), but it was", + }); + + await runFailedAsserts({ + matchers, + method: "panicAssert", + failedAssert: (x) => + expect(x).to.be.revertedWithPanic(PANIC_CODES.ARITHMETIC_OVERFLOW), + failedAssertReason: + "Expected transaction to be reverted with panic code 0x11 (Arithmetic operation overflowed outside of an unchecked block), but it reverted with panic code 0x01 (Assertion error)", + }); + }); + }); + + describe("calling a method that reverts with a custom error", () => { + it("successful asserts", async () => { + await runSuccessfulAsserts({ + matchers, + method: "revertWithSomeCustomError", + successfulAssert: (x) => expect(x).to.not.be.revertedWithPanic(), + }); + + await runSuccessfulAsserts({ + matchers, + method: "revertWithSomeCustomError", + successfulAssert: (x) => + expect(x).to.not.be.revertedWithPanic(PANIC_CODES.ASSERTION_ERROR), + }); + }); + + it("failed asserts", async () => { + await runFailedAsserts({ + matchers, + method: "revertWithSomeCustomError", + failedAssert: (x) => expect(x).to.be.revertedWithPanic(), + failedAssertReason: + "Expected transaction to be reverted with some panic code, but it reverted with a custom error", + }); + + await runFailedAsserts({ + matchers, + method: "revertWithSomeCustomError", + failedAssert: (x) => + expect(x).to.be.revertedWithPanic(PANIC_CODES.ASSERTION_ERROR), + failedAssertReason: + "Expected transaction to be reverted with panic code 0x01 (Assertion error), but it reverted with a custom error", + }); + }); + }); + + describe("accepted panic code values", () => { + it("number", async () => { + await runSuccessfulAsserts({ + matchers, + method: "succeeds", + successfulAssert: (x) => expect(x).not.to.be.revertedWithPanic(1), + }); + }); + + it("bigint", async () => { + await runSuccessfulAsserts({ + matchers, + method: "succeeds", + successfulAssert: (x) => expect(x).not.to.be.revertedWithPanic(1n), + }); + }); + + it("string", async () => { + await runSuccessfulAsserts({ + matchers, + method: "succeeds", + successfulAssert: (x) => expect(x).not.to.be.revertedWithPanic("1"), + }); + }); + }); + + describe("invalid values", () => { + it("non-errors as subject", async () => { + await expect( + expect(Promise.reject({})).to.be.revertedWithPanic(1), + ).to.be.rejectedWith(AssertionError, "Expected an Error object"); + }); + + it("non-number as expectation", async () => { + const { hash } = await mineSuccessfulTransaction(provider, ethers); + + assertThrowsHardhatError( + () => expect(hash).to.be.revertedWithPanic("invalid"), + HardhatError.ERRORS.CHAI_MATCHERS.PANIC_CODE_EXPECTED, + { + panicCode: "invalid", + }, + ); + }); + + it("non-number as expectation, subject is a rejected promise", async () => { + const tx = matchers.revertsWithoutReason(); + + assertThrowsHardhatError( + () => expect(tx).to.be.revertedWithPanic("invalid"), + HardhatError.ERRORS.CHAI_MATCHERS.PANIC_CODE_EXPECTED, + { + panicCode: "invalid", + }, + ); + }); + + it("errors that are not related to a reverted transaction", async () => { + // use an address that almost surely doesn't have balance + const randomPrivateKey = + "0xc5c587cc6e48e9692aee0bf07474118e6d830c11905f7ec7ff32c09c99eba5f9"; + const signer = new ethers.Wallet(randomPrivateKey, ethers.provider); + const matchersFromSenderWithoutFunds = matchers.connect( + signer, + ) as MatchersContract; + + // this transaction will fail because of lack of funds, not because of a + // revert + await expect( + expect( + matchersFromSenderWithoutFunds.revertsWithoutReason({ + gasLimit: 1_000_000, + }), + ).to.not.be.revertedWithPanic(), + ).to.be.eventually.rejectedWith( + "Sender doesn't have enough funds to send tx", + ); + }); + }); + + describe("stack traces", () => { + // smoke test for stack traces + it("includes test file", async () => { + try { + await expect(matchers.panicAssert()).to.not.be.revertedWithPanic(); + } catch (e: any) { + const errorString = util.inspect(e); + expect(errorString).to.include( + "Expected transaction NOT to be reverted with some panic code, but it reverted with panic code 0x01 (Assertion error)", + ); + expect(errorString).to.include( + path.join("test", "reverted", "revertedWithPanic.ts"), + ); + return; + } + expect.fail("Expected an exception but none was thrown"); + }); + }); + } +}); diff --git a/v-next/hardhat-chai-matchers/test/reverted/revertedWithoutReason.ts b/v-next/hardhat-chai-matchers/test/reverted/revertedWithoutReason.ts new file mode 100644 index 0000000000..0f51e930c5 --- /dev/null +++ b/v-next/hardhat-chai-matchers/test/reverted/revertedWithoutReason.ts @@ -0,0 +1,218 @@ +import type { MatchersContract } from "../contracts.js"; +import type { EthereumProvider } from "@ignored/hardhat-vnext/types/providers"; +import type { HardhatEthers } from "@ignored/hardhat-vnext-ethers/types"; + +import path from "node:path"; +import { beforeEach, describe, it } from "node:test"; +import util from "node:util"; + +import { createHardhatRuntimeEnvironment } from "@ignored/hardhat-vnext/hre"; +import hardhatEthersPlugin from "@ignored/hardhat-vnext-ethers"; +import { useFixtureProject } from "@nomicfoundation/hardhat-test-utils"; +import { AssertionError, expect } from "chai"; + +import { runSuccessfulAsserts, runFailedAsserts } from "../helpers.js"; + +import "../../src/internal/add-chai-matchers"; + +describe("INTEGRATION: Reverted without reason", () => { + describe("with the in-process hardhat network", () => { + useFixtureProject("hardhat-project"); + runTests(); + }); + + // TODO: when V3 node is ready, add this functionality + // describe("connected to a hardhat node", ()=>{ + // useEnvironmentWithNode("hardhat-project"); + // runTests(); + // }); + + function runTests() { + // deploy Matchers contract before each test + let matchers: MatchersContract; + + let provider: EthereumProvider; + let ethers: HardhatEthers; + + beforeEach(async () => { + const hre = await createHardhatRuntimeEnvironment({ + paths: { + artifacts: `${process.cwd()}/artifacts`, + }, + plugins: [hardhatEthersPlugin], + }); + + ({ ethers, provider } = await hre.network.connect()); + + const Matchers = await ethers.getContractFactory<[], MatchersContract>( + "Matchers", + ); + matchers = await Matchers.deploy(); + }); + + // helpers + describe("calling a method that succeeds", () => { + it("successful asserts", async () => { + await runSuccessfulAsserts({ + matchers, + method: "succeeds", + successfulAssert: (x) => + expect(x).not.to.be.revertedWithoutReason(ethers), + }); + }); + + it("failed asserts", async () => { + await runFailedAsserts({ + matchers, + method: "succeeds", + failedAssert: (x) => expect(x).to.be.revertedWithoutReason(ethers), + failedAssertReason: + "Expected transaction to be reverted without a reason, but it didn't revert", + }); + }); + }); + + // depends on a bug being fixed on ethers.js + // see https://github.com/NomicFoundation/hardhat/issues/3446 + describe.skip("calling a method that reverts without a reason", () => { + it("successful asserts", async () => { + await runSuccessfulAsserts({ + matchers, + method: "revertsWithoutReason", + args: [], + successfulAssert: (x) => + expect(x).to.be.revertedWithoutReason(ethers), + }); + }); + + it("failed asserts", async () => { + await runFailedAsserts({ + matchers, + method: "revertsWithoutReason", + args: [], + failedAssert: (x) => + expect(x).to.not.be.revertedWithoutReason(ethers), + failedAssertReason: + "Expected transaction NOT to be reverted without a reason, but it was", + }); + }); + }); + + describe("calling a method that reverts with a reason", () => { + it("successful asserts", async () => { + await runSuccessfulAsserts({ + matchers, + method: "revertsWith", + args: ["some reason"], + successfulAssert: (x) => + expect(x).to.not.be.revertedWithoutReason(ethers), + }); + }); + + it("failed asserts", async () => { + await runFailedAsserts({ + matchers, + method: "revertsWith", + args: ["some reason"], + failedAssert: (x) => expect(x).to.be.revertedWithoutReason(ethers), + failedAssertReason: + "Expected transaction to be reverted without a reason, but it reverted with reason 'some reason'", + }); + }); + }); + + describe("calling a method that reverts with a panic code", () => { + it("successful asserts", async () => { + await runSuccessfulAsserts({ + matchers, + method: "panicAssert", + successfulAssert: (x) => + expect(x).to.not.be.revertedWithoutReason(ethers), + }); + }); + + it("failed asserts", async () => { + await runFailedAsserts({ + matchers, + method: "panicAssert", + failedAssert: (x) => expect(x).to.be.revertedWithoutReason(ethers), + failedAssertReason: + "Expected transaction to be reverted without a reason, but it reverted with panic code 0x01 (Assertion error)", + }); + }); + }); + + describe("calling a method that reverts with a custom error", () => { + it("successful asserts", async () => { + await runSuccessfulAsserts({ + matchers, + method: "revertWithSomeCustomError", + successfulAssert: (x) => + expect(x).to.not.be.revertedWithoutReason(ethers), + }); + }); + + it("failed asserts", async () => { + await runFailedAsserts({ + matchers, + method: "revertWithSomeCustomError", + failedAssert: (x) => expect(x).to.be.revertedWithoutReason(ethers), + failedAssertReason: + "Expected transaction to be reverted without a reason, but it reverted with a custom error", + }); + }); + }); + + describe("invalid values", () => { + it("non-errors as subject", async () => { + await expect( + expect(Promise.reject({})).to.be.revertedWithoutReason(ethers), + ).to.be.rejectedWith(AssertionError, "Expected an Error object"); + }); + + it("errors that are not related to a reverted transaction", async () => { + // use an address that almost surely doesn't have balance + const randomPrivateKey = + "0xc5c587cc6e48e9692aee0bf07474118e6d830c11905f7ec7ff32c09c99eba5f9"; + + const signer = new ethers.Wallet(randomPrivateKey, ethers.provider); + const matchersFromSenderWithoutFunds = matchers.connect( + signer, + ) as MatchersContract; + + // this transaction will fail because of lack of funds, not because of a + // revert + await expect( + expect( + matchersFromSenderWithoutFunds.revertsWithoutReason({ + gasLimit: 1_000_000, + }), + ).to.not.be.revertedWithoutReason(ethers), + ).to.be.eventually.rejectedWith( + "Sender doesn't have enough funds to send tx", + ); + }); + }); + + describe("stack traces", () => { + // smoke test for stack traces + it("includes test file", async () => { + try { + await expect( + matchers.revertsWithoutReason(), + ).to.not.be.revertedWithoutReason(ethers); + } catch (e: any) { + const errorString = util.inspect(e); + expect(errorString).to.include( + "Expected transaction NOT to be reverted without a reason, but it was", + ); + expect(errorString).to.include( + path.join("test", "reverted", "revertedWithoutReason.ts"), + ); + return; + } + expect.fail("Expected an exception but none was thrown"); + }); + }); + } +}); diff --git a/v-next/hardhat-errors/src/descriptors.ts b/v-next/hardhat-errors/src/descriptors.ts index 8901fa0e1d..ac01ef406a 100644 --- a/v-next/hardhat-errors/src/descriptors.ts +++ b/v-next/hardhat-errors/src/descriptors.ts @@ -85,6 +85,11 @@ export const ERROR_CATEGORIES: { }, SOLIDITY: { min: 1200, max: 1299, websiteTitle: "Solidity errors" }, VIEM: { min: 1300, max: 1399, websiteTitle: "Hardhat-viem errors" }, + CHAI_MATCHERS: { + min: 1400, + max: 1499, + websiteTitle: "Hardhat-chai-matchers errors", + }, }; export const ERRORS = { @@ -135,7 +140,7 @@ Please double check whether you have multiple versions of the same plugin instal ENV_VAR_NOT_FOUND: { number: 7, messageTemplate: `Configuration Variable '{name}' not found. - + You can define it using a plugin like hardhat-keystore, or set it as an environment variable.`, websiteTitle: "Configuration variable not found", websiteDescription: `A configuration variable was expected to be set as an environment variable, but it wasn't.`, @@ -221,6 +226,14 @@ Please add the property "type" with the value "module" in your package.json to e websiteTitle: "Invalid hex string", websiteDescription: `Given value was not a valid hex string.`, }, + INVALID_BIG_NUMBER: { + number: 19, + messageTemplate: + "The input value cannot be normalized to a bigint: {message}", + websiteTitle: "Invalid big number", + websiteDescription: + "Hardhat attempted to convert the input value to a bigint, but no known conversion method was applicable to the given value.", + }, }, INTERNAL: { ASSERTION_ERROR: { @@ -1224,4 +1237,182 @@ Please check Hardhat's output for more details.`, "The deployment transaction was mined but its receipt doesn't contain a contract address.", }, }, + CHAI_MATCHERS: { + UNKNOWN_COMPARISON_OPERATION: { + number: 1400, + messageTemplate: `Unknown comparison operation "{method}"`, + websiteTitle: "Unknown comparison operation", + websiteDescription: "Unknown comparison operation", + }, + EXPECTED_STRING_OR_ADDRESSABLE: { + number: 1401, + messageTemplate: `Expected string or addressable, but got {account}`, + websiteTitle: "Expected string or addressable", + websiteDescription: "Expected string or addressable", + }, + ASSERTION_WITHOUT_ERROR_MESSAGE: { + number: 1402, + messageTemplate: `Assertion doesn't have an error message. Please open an issue to report this.`, + websiteTitle: "Assertion doesn't have an error message", + websiteDescription: `Assertion doesn't have an error message. Please open an issue to report this.`, + shouldBeReported: true, + }, + MATCHER_CANNOT_BE_CHAINED_AFTER: { + number: 1403, + messageTemplate: `The matcher "{matcher}" cannot be chained after "{previousMatcher}". For more information, please refer to the documentation at: (https://hardhat.org/chaining-async-matchers).`, + websiteTitle: "Matcher cannot be chained after", + websiteDescription: `The matcher cannot be chained after another matcher. Please open an issue to report this.`, + }, + DECODING_ERROR: { + number: 1404, + messageTemplate: `There was an error decoding "{encodedData}" as a "{type}. Reason: {reason}"`, + websiteTitle: "Error while decoding data", + websiteDescription: `There was an error decoding data`, + }, + EXPECTED_VALID_TRANSACTION_HASH: { + number: 1405, + messageTemplate: `Expected a valid transaction hash, but got "{hash}"`, + websiteTitle: "Expected a valid transaction hash", + websiteDescription: `Expected a valid transaction hash`, + }, + EXPECT_STRING_OR_REGEX_AS_REVERT_REASON: { + number: 1406, + messageTemplate: + "Expected the revert reason to be a string or a regular expression", + websiteTitle: + "Expected the revert reason to be a string or a regular expression", + websiteDescription: + "Expected the revert reason to be a string or a regular expression", + }, + FIRST_ARGUMENT_MUST_BE_A_CONTRACT: { + number: 1407, + messageTemplate: + "The first argument of .revertedWithCustomError must be the contract that defines the custom error", + websiteTitle: "First argument must be a contract", + websiteDescription: "First argument must be a contract", + }, + STRING_EXPECTED_AS_CUSTOM_ERROR_NAME: { + number: 1408, + messageTemplate: "Expected the custom error name to be a string", + websiteTitle: "Expected the custom error name to be a string", + websiteDescription: "Expected the custom error name to be a string", + }, + CONTRACT_DOES_NOT_HAVE_CUSTOM_ERROR: { + number: 1409, + messageTemplate: `The given contract doesn't have a custom error named "{customErrorName}"`, + websiteTitle: + "Contract doesn't have a custom error with the specified name", + websiteDescription: + "Contract doesn't have a custom error with the specified name", + }, + REVERT_INVALID_ARGUMENTS_LENGTH: { + number: 1410, + messageTemplate: + "The .revertedWithCustomError matcher expects two arguments: the contract and the custom error name. Arguments should be asserted with the .withArgs helper.", + websiteTitle: + "Invalid arguments length for the .revertedWithCustomError matcher", + websiteDescription: + "Invalid arguments length for the .revertedWithCustomError matcher", + }, + WITH_ARGS_FORBIDDEN: { + number: 1411, + messageTemplate: + "[.withArgs] should never happen, please submit an issue to the Hardhat repository", + websiteTitle: + "[.withArgs] should never happen, please submit an issue to the Hardhat repository", + websiteDescription: + "[.withArgs] should never happen, please submit an issue to the Hardhat repository", + }, + INDEXED_EVENT_FORBIDDEN: { + number: 1412, + messageTemplate: + "Should not get an indexed event when the assertion type is not event. Please open an issue about this.", + websiteTitle: + "Should not get an indexed event when the assertion type is not event", + websiteDescription: + "Should not get an indexed event when the assertion type is not event", + }, + PANIC_CODE_EXPECTED: { + number: 1413, + messageTemplate: `Expected the given panic code to be a number-like value, but got "{panicCode}"`, + websiteTitle: "Expected the given panic code to be a number-like value", + websiteDescription: + "Expected the given panic code to be a number-like value", + }, + ACCOUNTS_NUMBER_DIFFERENT_FROM_BALANCE_CHANGES: { + number: 1414, + messageTemplate: `The number of accounts ({accounts}) is different than the number of expected balance changes ({balanceChanges})`, + websiteTitle: + "The number of accounts is different than the number of expected balance changes", + websiteDescription: + "The number of accounts is different than the number of expected balance changes", + }, + FIRST_ARGUMENT_MUST_BE_A_CONTRACT_INSTANCE: { + number: 1415, + messageTemplate: `The first argument of "{method}" must be the contract instance of the token`, + websiteTitle: "First argument must be a contract instance", + websiteDescription: "First argument must be a contract instance", + }, + CONTRACT_IS_NOT_AN_ERC20_TOKEN: { + number: 1416, + messageTemplate: `The given contract instance is not an ERC20 token`, + websiteTitle: "Given contract instance is not an ERC20 token", + websiteDescription: "Given contract instance is not an ERC20 token", + }, + INVALID_TRANSACTION: { + number: 1417, + messageTemplate: "{transaction} is not a valid transaction", + websiteTitle: "Invalid transaction", + websiteDescription: "Invalid transaction", + }, + CONTRACT_TARGET_MUST_BE_A_STRING: { + number: 1418, + messageTemplate: "The contract target should be a string", + websiteTitle: "Contract target must be a string", + websiteDescription: "Contract target must be a string", + }, + EMIT_EXPECTS_TWO_ARGUMENTS: { + number: 1419, + messageTemplate: + "The .emit matcher expects two arguments: the contract and the event name. Arguments should be asserted with the .withArgs helper.", + websiteTitle: "Invalid arguments length for the .emit matcher", + websiteDescription: "Invalid arguments length for the .emit matcher", + }, + CONTRACT_RUNNER_PROVIDER_NOT_NULL: { + number: 1420, + messageTemplate: "contract.runner.provider shouldn't be null", + websiteTitle: "Contract runner's provider shouldn't be null", + websiteDescription: "Contract runner's provider shouldn't be null", + }, + WITH_ARGS_CANNOT_BE_COMBINED_WITH_NOT: { + number: 1421, + messageTemplate: "Do not combine .not. with .withArgs()", + websiteTitle: "Do not combine .not. with .withArgs()", + websiteDescription: "Do not combine .not. with .withArgs()", + }, + WITH_ARGS_WRONG_COMBINATION: { + number: 1422, + messageTemplate: + "withArgs can only be used in combination with a previous .emit or .revertedWithCustomError assertion", + websiteTitle: + "withArgs can only be used in combination with a previous .emit or .revertedWithCustomError assertion", + websiteDescription: + "withArgs can only be used in combination with a previous .emit or .revertedWithCustomError assertion", + }, + WITH_ARGS_COMBINED_WITH_INCOMPATIBLE_ASSERTIONS: { + number: 1423, + messageTemplate: + "withArgs called with both .emit and .revertedWithCustomError, but these assertions cannot be combined", + websiteTitle: + "withArgs called with both .emit and .revertedWithCustomError, but these assertions cannot be combined", + websiteDescription: + "withArgs called with both .emit and .revertedWithCustomError, but these assertions cannot be combined", + }, + // ANY_UINT_ARGUMENT_NOT_AN_UNSIGNED_INTEGER: { + // number: 1421, + // messageTemplate: `anyUint expected its argument to be an unsigned integer, but it was negative, with value "{value}"`, + // websiteTitle: "anyUint should be an unsigned integer", + // websiteDescription: "anyUint should be an unsigned integer", + // }, + }, } as const; From a2346497269ce013c1415c8d3945143c184daf88 Mon Sep 17 00:00:00 2001 From: ChrisD <18092467+ChristopherDedominici@users.noreply.github.com> Date: Tue, 19 Nov 2024 15:27:10 +0100 Subject: [PATCH 09/61] remove "ordinal" dependency --- pnpm-lock.yaml | 6 ----- v-next/hardhat-chai-matchers/package.json | 4 +--- .../src/internal/changeEtherBalances.ts | 7 +++--- .../src/internal/ordinal.ts | 24 +++++++++++++++++++ .../src/internal/utils.ts | 2 +- 5 files changed, 30 insertions(+), 13 deletions(-) create mode 100644 v-next/hardhat-chai-matchers/src/internal/ordinal.ts diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f3b7eb46ae..8ae8974bd9 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1621,12 +1621,6 @@ importers: ethers: specifier: ^6.13.4 version: 6.13.4 - hardhat: - specifier: ^2.22.15 - version: 2.22.15(ts-node@10.9.2(@types/node@20.17.1)(typescript@5.5.4))(typescript@5.5.4) - ordinal: - specifier: ^1.0.3 - version: 1.0.3 devDependencies: '@eslint-community/eslint-plugin-eslint-comments': specifier: ^4.3.0 diff --git a/v-next/hardhat-chai-matchers/package.json b/v-next/hardhat-chai-matchers/package.json index d23e0299c6..917ae46469 100644 --- a/v-next/hardhat-chai-matchers/package.json +++ b/v-next/hardhat-chai-matchers/package.json @@ -72,9 +72,7 @@ "@nomicfoundation/hardhat-ethers": "^3.0.8", "@types/chai-as-promised": "^8.0.1", "chai-as-promised": "^8.0.0", - "deep-eql": "^4.0.1", - "hardhat": "^2.22.15", - "ordinal": "^1.0.3" + "deep-eql": "^4.0.1" }, "peerDependencies": { "@ignored/hardhat-vnext": "workspace:^3.0.0-next.16", diff --git a/v-next/hardhat-chai-matchers/src/internal/changeEtherBalances.ts b/v-next/hardhat-chai-matchers/src/internal/changeEtherBalances.ts index 879e810c14..c649c10469 100644 --- a/v-next/hardhat-chai-matchers/src/internal/changeEtherBalances.ts +++ b/v-next/hardhat-chai-matchers/src/internal/changeEtherBalances.ts @@ -1,16 +1,17 @@ import type { BalanceChangeOptions } from "./misc/balance.js"; import type { EthereumProvider } from "@ignored/hardhat-vnext/types/providers"; -import type { Addressable, BigNumberish, TransactionResponse } from "ethers"; +import type { Addressable } from "ethers/address"; +import type { TransactionResponse } from "ethers/providers"; import { HardhatError } from "@ignored/hardhat-vnext-errors"; import { toBigInt } from "ethers/utils"; -import ordinal from "ordinal"; import { buildAssert } from "../utils.js"; import { CHANGE_ETHER_BALANCES_MATCHER } from "./constants.js"; import { getAddressOf } from "./misc/account.js"; import { getAddresses, getBalances } from "./misc/balance.js"; +import { ordinal } from "./ordinal.js"; import { assertIsNotNull, preventAsyncMatcherChaining } from "./utils.js"; export function supportChangeEtherBalances( @@ -23,7 +24,7 @@ export function supportChangeEtherBalances( this: any, provider: EthereumProvider, accounts: Array, - balanceChanges: BigNumberish[] | ((changes: bigint[]) => boolean), + balanceChanges: bigint[] | ((changes: bigint[]) => boolean), options?: BalanceChangeOptions, ) { // capture negated flag before async code executes; see buildAssert's jsdoc diff --git a/v-next/hardhat-chai-matchers/src/internal/ordinal.ts b/v-next/hardhat-chai-matchers/src/internal/ordinal.ts new file mode 100644 index 0000000000..559642b518 --- /dev/null +++ b/v-next/hardhat-chai-matchers/src/internal/ordinal.ts @@ -0,0 +1,24 @@ +/** + * Appends the appropriate ordinal suffix ("st", "nd", "rd", "th") to a given number. + * + * This function correctly handles special cases such as numbers ending in 11, 12, and 13, + * which always use the "th" suffix, and ensures the correct suffix for all other numbers. + */ +export function ordinal(n: number): string { + const s = ["th", "st", "nd", "rd"]; + const v = n % 100; + + const suffixIndex = (v - 20) % 10; + let suffix = s[suffixIndex]; + + if (suffixIndex >= 1 && suffixIndex <= 3) { + return n + suffix; + } + + suffix = s[v]; + if (v >= 1 && v <= 3) { + return n + suffix; + } + + return n + s[0]; +} diff --git a/v-next/hardhat-chai-matchers/src/internal/utils.ts b/v-next/hardhat-chai-matchers/src/internal/utils.ts index 436b51e3a9..6ac55821c0 100644 --- a/v-next/hardhat-chai-matchers/src/internal/utils.ts +++ b/v-next/hardhat-chai-matchers/src/internal/utils.ts @@ -7,9 +7,9 @@ import { import { ensureError } from "@ignored/hardhat-vnext-utils/error"; import { keccak256 } from "ethers/crypto"; import { getBytes, hexlify, isHexString, toUtf8Bytes } from "ethers/utils"; -import ordinal from "ordinal"; import { PREVIOUS_MATCHER_NAME } from "./constants.js"; +import { ordinal } from "./ordinal.js"; export function assertIsNotNull( value: T, From 5217f8d691585423461a242424b756693afb4142 Mon Sep 17 00:00:00 2001 From: ChrisD <18092467+ChristopherDedominici@users.noreply.github.com> Date: Tue, 19 Nov 2024 16:01:51 +0100 Subject: [PATCH 10/61] replace "deep-equal" --- .../src/internal/big-number.ts | 33 ++++++------------- .../src/internal/deep-equal.ts | 11 +++++++ 2 files changed, 21 insertions(+), 23 deletions(-) create mode 100644 v-next/hardhat-chai-matchers/src/internal/deep-equal.ts diff --git a/v-next/hardhat-chai-matchers/src/internal/big-number.ts b/v-next/hardhat-chai-matchers/src/internal/big-number.ts index 41d83f99e5..a43898a2a1 100644 --- a/v-next/hardhat-chai-matchers/src/internal/big-number.ts +++ b/v-next/hardhat-chai-matchers/src/internal/big-number.ts @@ -1,8 +1,9 @@ import util from "node:util"; +import { HardhatError } from "@ignored/hardhat-vnext-errors"; import { AssertionError } from "chai"; -import deepEqual from "deep-eql"; +import { deepEqual } from "./deep-equal.js"; import { isBigNumber, normalizeToBigInt } from "./utils.js"; export function supportBigNumber( @@ -75,7 +76,7 @@ function createLengthOverride( return function (this: any) { _super.apply(this, arguments); }; - } as any, + }, ]; } @@ -118,13 +119,12 @@ function overwriteBigNumberFunction( } else if (method === "lte") { return lhs <= rhs; } else { - throw new Error(`Unknown comparison operation ${method as any}`); - // throw new HardhatError( - // HardhatError.ERRORS.CHAI_MATCHERS.UNKNOWN_COMPARISON_OPERATION, - // { - // method, - // }, - // ); + throw new HardhatError( + HardhatError.ERRORS.CHAI_MATCHERS.UNKNOWN_COMPARISON_OPERATION, + { + method, + }, + ); } } @@ -153,19 +153,6 @@ function overwriteBigNumberFunction( actual, ); } else if (functionName === "eq" && Boolean(chaiUtils.flag(this, "deep"))) { - // this is close enough to what chai itself does, except we compare - // numbers after normalizing them - const comparator = (a: any, b: any): boolean | null => { - try { - const normalizedA = normalizeToBigInt(a); - const normalizedB = normalizeToBigInt(b); - return normalizedA === normalizedB; - } catch (e) { - // use default comparator - return null; - } - }; - // "ssfi" stands for "start stack function indicator", it's a chai concept // used to control which frames are included in the stack trace // this pattern here was taken from chai's implementation of .deep.equal @@ -174,7 +161,7 @@ function overwriteBigNumberFunction( chaiUtils.flag(this, "lockSsfi", true); this.assert( - deepEqual(actualArg, expectedFlag, { comparator }), + deepEqual(actualArg, expectedFlag), `expected ${util.inspect(expectedFlag)} to deeply equal ${util.inspect( actualArg, )}`, diff --git a/v-next/hardhat-chai-matchers/src/internal/deep-equal.ts b/v-next/hardhat-chai-matchers/src/internal/deep-equal.ts new file mode 100644 index 0000000000..e0c0b3bada --- /dev/null +++ b/v-next/hardhat-chai-matchers/src/internal/deep-equal.ts @@ -0,0 +1,11 @@ +// eslint-disable-next-line no-restricted-imports -- we want to cases like: 1n === 1 +import assert from "node:assert"; + +export function deepEqual(a: unknown, b: unknown): boolean { + try { + assert.deepEqual(a, b); + return true; + } catch (e) { + return false; + } +} From d9d42077d1bde1778e551e73e49e19d1b20b42cb Mon Sep 17 00:00:00 2001 From: ChrisD <18092467+ChristopherDedominici@users.noreply.github.com> Date: Tue, 19 Nov 2024 16:03:17 +0100 Subject: [PATCH 11/61] fix missing "src" code to allow build --- .../src/internal/changeTokenBalance.ts | 9 ++++++++- v-next/hardhat-chai-matchers/src/internal/constants.ts | 2 -- .../hardhat-chai-matchers/src/internal/reverted/utils.ts | 1 + 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/v-next/hardhat-chai-matchers/src/internal/changeTokenBalance.ts b/v-next/hardhat-chai-matchers/src/internal/changeTokenBalance.ts index 926ddd1161..2018502373 100644 --- a/v-next/hardhat-chai-matchers/src/internal/changeTokenBalance.ts +++ b/v-next/hardhat-chai-matchers/src/internal/changeTokenBalance.ts @@ -214,7 +214,14 @@ function checkToken(token: unknown, method: string) { method, }, ); - } else if ((token as any).interface.getFunction("balanceOf") === null) { + } else if ( + isObject(token) && + "interface" in token && + isObject(token.interface) && + "getFunction" in token.interface && + typeof token.interface.getFunction === "function" && + token.interface.getFunction("balanceOf") === null + ) { throw new HardhatError( HardhatError.ERRORS.CHAI_MATCHERS.CONTRACT_IS_NOT_AN_ERC20_TOKEN, ); diff --git a/v-next/hardhat-chai-matchers/src/internal/constants.ts b/v-next/hardhat-chai-matchers/src/internal/constants.ts index 44022c9877..481b77c834 100644 --- a/v-next/hardhat-chai-matchers/src/internal/constants.ts +++ b/v-next/hardhat-chai-matchers/src/internal/constants.ts @@ -1,5 +1,3 @@ -// TODO: check if all are used - export const ASSERTION_ABORTED = "hh-chai-matchers-assertion-aborted"; export const PREVIOUS_MATCHER_NAME = "previousMatcherName"; diff --git a/v-next/hardhat-chai-matchers/src/internal/reverted/utils.ts b/v-next/hardhat-chai-matchers/src/internal/reverted/utils.ts index b378c91b23..6a71199e97 100644 --- a/v-next/hardhat-chai-matchers/src/internal/reverted/utils.ts +++ b/v-next/hardhat-chai-matchers/src/internal/reverted/utils.ts @@ -21,6 +21,7 @@ const PANIC_CODE_PREFIX = "0x4e487b71"; */ export function getReturnDataFromError(error: any): string { if (!(error instanceof Error)) { + // eslint-disable-next-line no-restricted-syntax -- keep the original chai error structure throw new AssertionError("Expected an Error object"); } From 4f5cd235700152618c4ccf575e5306f8b913e737 Mon Sep 17 00:00:00 2001 From: John Kane Date: Tue, 19 Nov 2024 16:33:41 +0000 Subject: [PATCH 12/61] refactor: switch chai matchers types to a types.d.ts file Switch the `./src/types.ts` file to a `./src/types.d.ts` file. This allows typescript to correctly pick up the Chai types being extended. There were some small built fixes as well (e.g. changing the type of a passed arg to be `bigint[]`. I added in the type declaration as an import from `./index.ts` and imported the `add-chai-matchers` bootstrap code. --- v-next/hardhat-chai-matchers/src/index.ts | 3 ++ .../src/internal/add-chai-matchers.ts | 1 - .../src/{types.ts => types.d.ts} | 34 ++++++++++++++----- 3 files changed, 28 insertions(+), 10 deletions(-) rename v-next/hardhat-chai-matchers/src/{types.ts => types.d.ts} (63%) diff --git a/v-next/hardhat-chai-matchers/src/index.ts b/v-next/hardhat-chai-matchers/src/index.ts index e69de29bb2..59670731b6 100644 --- a/v-next/hardhat-chai-matchers/src/index.ts +++ b/v-next/hardhat-chai-matchers/src/index.ts @@ -0,0 +1,3 @@ +import "./types.js"; + +import "./internal/add-chai-matchers.js"; diff --git a/v-next/hardhat-chai-matchers/src/internal/add-chai-matchers.ts b/v-next/hardhat-chai-matchers/src/internal/add-chai-matchers.ts index fa3e784eb9..a61ae0779a 100644 --- a/v-next/hardhat-chai-matchers/src/internal/add-chai-matchers.ts +++ b/v-next/hardhat-chai-matchers/src/internal/add-chai-matchers.ts @@ -1,7 +1,6 @@ import { use } from "chai"; import chaiAsPromised from "chai-as-promised"; -import "../types"; import { hardhatChaiMatchers } from "./hardhatChaiMatchers.js"; use(hardhatChaiMatchers); diff --git a/v-next/hardhat-chai-matchers/src/types.ts b/v-next/hardhat-chai-matchers/src/types.d.ts similarity index 63% rename from v-next/hardhat-chai-matchers/src/types.ts rename to v-next/hardhat-chai-matchers/src/types.d.ts index 81137e11b3..caa63854f5 100644 --- a/v-next/hardhat-chai-matchers/src/types.ts +++ b/v-next/hardhat-chai-matchers/src/types.d.ts @@ -1,37 +1,53 @@ -// eslint-disable-next-line @typescript-eslint/no-namespace, @typescript-eslint/no-unused-vars -- the namespace must be re-declared but it is not used in this file declare namespace Chai { interface Assertion extends LanguageChains, NumericComparison, TypeComparison { - emit(contract: any, eventName: string): EmitAssertion; - reverted: AsyncAssertion; - revertedWith(reason: string | RegExp): AsyncAssertion; - revertedWithoutReason(): AsyncAssertion; + // TODO: is additional meant to be here? + emit(contract: any, eventName: string, additional?: number): EmitAssertion; + // TODO: this needs a refined type + reverted(ethers: any): AsyncAssertion; + // TODO: check that number is meant here + revertedWith(reason: string | RegExp | number): AsyncAssertion; + // TODO: refine this type + revertedWithoutReason(ethers: any): AsyncAssertion; revertedWithPanic(code?: any): AsyncAssertion; + // TODO: is extraArgument meant to be here? Is contract really optional? revertedWithCustomError( - contract: { interface: any }, - customErrorName: string, + contract?: { interface: any } | string, + customErrorName?: string, + extraArgument?: string, ): CustomErrorAssertion; hexEqual(other: string): void; properPrivateKey: void; properAddress: void; properHex(length: number): void; + // TODO: give provider proper type changeEtherBalance( + provider: any, account: any, balance: any, options?: any, ): AsyncAssertion; + // TODO: give provider proper type changeEtherBalances( + provider: any, accounts: any[], balances: any[] | ((changes: bigint[]) => boolean), options?: any, ): AsyncAssertion; - changeTokenBalance(token: any, account: any, balance: any): AsyncAssertion; + changeTokenBalance( + provider: any, + token: any, + account: any, + balance?: any, + ): AsyncAssertion; + // TODO: is balance optional? changeTokenBalances( + provider: any, token: any, account: any[], - balance: any[] | ((changes: bigint[]) => boolean), + balance?: any[] | ((changes: bigint[]) => boolean), ): AsyncAssertion; } From 9e5fb15306af0004d7714d0d76983154a1dc3a47 Mon Sep 17 00:00:00 2001 From: ChrisD <18092467+ChristopherDedominici@users.noreply.github.com> Date: Wed, 20 Nov 2024 11:40:10 +0100 Subject: [PATCH 13/61] fix missing test compilation issues --- .../hardhat-chai-matchers/test/big-number.ts | 6 ++-- .../test/changeEtherBalance.ts | 9 +++-- .../test/changeEtherBalances.ts | 9 +++-- .../test/changeTokenBalance.ts | 6 ++-- v-next/hardhat-chai-matchers/test/events.ts | 6 ++-- .../test/properPrivateKey.ts | 7 ++-- .../test/reverted/reverted.ts | 11 +++--- .../test/reverted/revertedWith.ts | 8 ++--- .../test/reverted/revertedWithCustomError.ts | 34 ++++++++++--------- .../test/reverted/revertedWithPanic.ts | 4 ++- .../test/reverted/revertedWithoutReason.ts | 12 +++---- 11 files changed, 54 insertions(+), 58 deletions(-) diff --git a/v-next/hardhat-chai-matchers/test/big-number.ts b/v-next/hardhat-chai-matchers/test/big-number.ts index 76f73209f1..248f52e389 100644 --- a/v-next/hardhat-chai-matchers/test/big-number.ts +++ b/v-next/hardhat-chai-matchers/test/big-number.ts @@ -269,7 +269,7 @@ describe("BigNumber matchers", () => { ]; describe("positive, successful assertions chained off of length", () => { for (const { obj, operator, len } of positiveSuccessCasesWithOperator) { - describe(`with object ${obj} and operator "${operator}"`, () => { + describe(`with object ${JSON.stringify(obj)} and operator "${operator}"`, () => { for (const convert of [ (n: number) => n, ...numberToBigNumberConversions, @@ -423,7 +423,7 @@ describe("BigNumber matchers", () => { ]; describe("negative, successful assertions chained off of length", () => { for (const { obj, operator, len } of negativeSuccessCasesWithOperator) { - describe(`with object ${obj} and operator "${operator}"`, () => { + describe(`with object ${JSON.stringify(obj)} and operator "${operator}"`, () => { for (const convert of [ (n: number) => n, ...numberToBigNumberConversions, @@ -526,7 +526,7 @@ describe("BigNumber matchers", () => { len, msg, } of positiveFailureCasesWithOperator) { - describe(`with object ${obj} and operator "${operator}"`, () => { + describe(`with object ${JSON.stringify(obj)} and operator "${operator}"`, () => { for (const convert of [ (n: number) => n, ...numberToBigNumberConversions, diff --git a/v-next/hardhat-chai-matchers/test/changeEtherBalance.ts b/v-next/hardhat-chai-matchers/test/changeEtherBalance.ts index d038888e84..2caec06cc4 100644 --- a/v-next/hardhat-chai-matchers/test/changeEtherBalance.ts +++ b/v-next/hardhat-chai-matchers/test/changeEtherBalance.ts @@ -1,5 +1,4 @@ import type { ChangeEtherBalance } from "./contracts.js"; -import type { Token } from "../src/internal/changeTokenBalance.js"; import type { EthereumProvider } from "@ignored/hardhat-vnext/types/providers"; import type { HardhatEthers, @@ -34,7 +33,7 @@ describe("INTEGRATION: changeEtherBalance matcher", () => { let receiver: HardhatEthersSigner; let contract: ChangeEtherBalance; let txGasFees: number; - let mockToken: Token; + // let mockToken: Token; let provider: EthereumProvider; let ethers: HardhatEthers; @@ -68,8 +67,8 @@ describe("INTEGRATION: changeEtherBalance matcher", () => { params: ["0x0"], }); - const MockToken = await ethers.getContractFactory<[], Token>("MockToken"); - mockToken = await MockToken.deploy(); + // const MockToken = await ethers.getContractFactory<[], Token>("MockToken"); + // mockToken = await MockToken.deploy(); }); describe("Transaction Callback (legacy tx)", () => { @@ -655,7 +654,7 @@ describe("INTEGRATION: changeEtherBalance matcher", () => { value: 200, }), ).to.changeEtherBalance(provider, sender, -100); - } catch (e: any) { + } catch (e) { expect(util.inspect(e)).to.include( path.join("test", "changeEtherBalance.ts"), ); diff --git a/v-next/hardhat-chai-matchers/test/changeEtherBalances.ts b/v-next/hardhat-chai-matchers/test/changeEtherBalances.ts index 2f0cf0157e..74b9faaa8e 100644 --- a/v-next/hardhat-chai-matchers/test/changeEtherBalances.ts +++ b/v-next/hardhat-chai-matchers/test/changeEtherBalances.ts @@ -1,5 +1,4 @@ import type { ChangeEtherBalance } from "./contracts.js"; -import type { Token } from "../src/internal/changeTokenBalance.js"; import type { EthereumProvider } from "@ignored/hardhat-vnext/types/providers"; import type { HardhatEthers, @@ -35,7 +34,7 @@ describe("INTEGRATION: changeEtherBalances matcher", () => { let receiver: HardhatEthersSigner; let contract: ChangeEtherBalance; let txGasFees: number; - let mockToken: Token; + // let mockToken: Token; let provider: EthereumProvider; let ethers: HardhatEthers; @@ -69,8 +68,8 @@ describe("INTEGRATION: changeEtherBalances matcher", () => { params: ["0x0"], }); - const MockToken = await ethers.getContractFactory<[], Token>("MockToken"); - mockToken = await MockToken.deploy(); + // const MockToken = await ethers.getContractFactory<[], Token>("MockToken"); + // mockToken = await MockToken.deploy(); }); describe("Transaction Callback", () => { @@ -516,7 +515,7 @@ describe("INTEGRATION: changeEtherBalances matcher", () => { value: 200, }), ).to.changeEtherBalances(provider, [sender, receiver], [-100, 100]); - } catch (e: any) { + } catch (e) { expect(util.inspect(e)).to.include( path.join("test", "changeEtherBalances.ts"), ); diff --git a/v-next/hardhat-chai-matchers/test/changeTokenBalance.ts b/v-next/hardhat-chai-matchers/test/changeTokenBalance.ts index 4dda237773..fc11effc52 100644 --- a/v-next/hardhat-chai-matchers/test/changeTokenBalance.ts +++ b/v-next/hardhat-chai-matchers/test/changeTokenBalance.ts @@ -897,7 +897,7 @@ describe("INTEGRATION: changeTokenBalance and changeTokenBalances matchers", () await expect( mockToken.transfer(receiver.address, 50), ).to.changeTokenBalance(provider, mockToken, sender, -100); - } catch (e: any) { + } catch (e) { hasProperStackTrace = util .inspect(e) .includes(path.join("test", "changeTokenBalance.ts")); @@ -917,7 +917,7 @@ describe("INTEGRATION: changeTokenBalance and changeTokenBalances matchers", () [sender, receiver], [-100, 100], ); - } catch (e: any) { + } catch (e) { expect(util.inspect(e)).to.include( path.join("test", "changeTokenBalance.ts"), ); @@ -931,7 +931,7 @@ describe("INTEGRATION: changeTokenBalance and changeTokenBalances matchers", () }); function zip(a: T[], b: U[]): Array<[T, U]> { - assert(a.length === b.length); + assert(a.length === b.length, "lengths should match"); return a.map((x, i) => [x, b[i]]); } diff --git a/v-next/hardhat-chai-matchers/test/events.ts b/v-next/hardhat-chai-matchers/test/events.ts index 29b2a934ae..c0ee7569e6 100644 --- a/v-next/hardhat-chai-matchers/test/events.ts +++ b/v-next/hardhat-chai-matchers/test/events.ts @@ -5,7 +5,6 @@ import type { OverrideEventContract, } from "./contracts.js"; import "../src/internal/add-chai-matchers"; -import type { EthereumProvider } from "@ignored/hardhat-vnext/types/providers"; import type { HardhatEthers } from "@ignored/hardhat-vnext-ethers/types"; import { beforeEach, describe, it } from "node:test"; @@ -39,7 +38,6 @@ describe(".to.emit (contract events)", () => { // }); function runTests() { - let provider: EthereumProvider; let ethers: HardhatEthers; beforeEach(async () => { @@ -50,7 +48,7 @@ describe(".to.emit (contract events)", () => { plugins: [hardhatEthersPlugin], }); - ({ ethers, provider } = await hre.network.connect()); + ({ ethers } = await hre.network.connect()); otherContract = await ethers.deployContract("AnotherContract"); @@ -139,7 +137,7 @@ describe(".to.emit (contract events)", () => { it("should fail if withArgs is called on its own", async () => { expect(() => expect(contract.emitUint(1)) - // @ts-expect-error + // @ts-expect-error -- force "withArgs" to be called on its own .withArgs(1), ).to.throw( Error, diff --git a/v-next/hardhat-chai-matchers/test/properPrivateKey.ts b/v-next/hardhat-chai-matchers/test/properPrivateKey.ts index 18d8e10f6b..76d5619586 100644 --- a/v-next/hardhat-chai-matchers/test/properPrivateKey.ts +++ b/v-next/hardhat-chai-matchers/test/properPrivateKey.ts @@ -1,9 +1,10 @@ -import { expect, AssertionError } from "chai"; - import "../src/internal/add-chai-matchers"; + import { describe, it } from "node:test"; -/* eslint-disable @typescript-eslint/no-unused-expressions */ +import { expect, AssertionError } from "chai"; + +/* eslint-disable @typescript-eslint/no-unused-expressions -- allow all the expressions */ describe("Proper private key", () => { it("Expect to be proper private key", async () => { diff --git a/v-next/hardhat-chai-matchers/test/reverted/reverted.ts b/v-next/hardhat-chai-matchers/test/reverted/reverted.ts index e04c22b0fc..6ab026e2e1 100644 --- a/v-next/hardhat-chai-matchers/test/reverted/reverted.ts +++ b/v-next/hardhat-chai-matchers/test/reverted/reverted.ts @@ -323,9 +323,7 @@ describe("INTEGRATION: Reverted", () => { }); describe("calling a method that reverts without a reason", () => { - // depends on a bug being fixed on ethers.js - // see https://github.com/NomicFoundation/hardhat/issues/3446 - it.skip("successful asserts", async () => { + it("successful asserts", async () => { await runSuccessfulAsserts({ matchers, method: "revertsWithoutReason", @@ -334,9 +332,7 @@ describe("INTEGRATION: Reverted", () => { }); }); - // depends on a bug being fixed on ethers.js - // see https://github.com/NomicFoundation/hardhat/issues/3446 - it.skip("failed asserts", async () => { + it("failed asserts", async () => { await runFailedAsserts({ matchers, method: "revertsWithoutReason", @@ -426,6 +422,7 @@ describe("INTEGRATION: Reverted", () => { "0xc5c587cc6e48e9692aee0bf07474118e6d830c11905f7ec7ff32c09c99eba5f9"; const signer = new ethers.Wallet(randomPrivateKey, ethers.provider); + // eslint-disable-next-line @typescript-eslint/consistent-type-assertions -- the contract is of type MatchersContract const matchersFromSenderWithoutFunds = matchers.connect( signer, ) as MatchersContract; @@ -449,7 +446,7 @@ describe("INTEGRATION: Reverted", () => { it("includes test file", async () => { try { await expect(matchers.succeeds()).to.be.reverted(ethers); - } catch (e: any) { + } catch (e) { const errorString = util.inspect(e); expect(errorString).to.include("Expected transaction to be reverted"); expect(errorString).to.include( diff --git a/v-next/hardhat-chai-matchers/test/reverted/revertedWith.ts b/v-next/hardhat-chai-matchers/test/reverted/revertedWith.ts index 91b68e49c4..53cce97c06 100644 --- a/v-next/hardhat-chai-matchers/test/reverted/revertedWith.ts +++ b/v-next/hardhat-chai-matchers/test/reverted/revertedWith.ts @@ -89,9 +89,7 @@ describe("INTEGRATION: Reverted with", () => { }); }); - // depends on a bug being fixed on ethers.js - // see https://github.com/NomicFoundation/hardhat/issues/3446 - it.skip("failed asserts", async () => { + it("failed asserts", async () => { await runFailedAsserts({ matchers, method: "revertsWithoutReason", @@ -237,6 +235,8 @@ describe("INTEGRATION: Reverted with", () => { const randomPrivateKey = "0xc5c587cc6e48e9692aee0bf07474118e6d830c11905f7ec7ff32c09c99eba5f9"; const signer = new ethers.Wallet(randomPrivateKey, ethers.provider); + + // eslint-disable-next-line @typescript-eslint/consistent-type-assertions -- the contract is of type MatchersContract const matchersFromSenderWithoutFunds = matchers.connect( signer, ) as MatchersContract; @@ -260,7 +260,7 @@ describe("INTEGRATION: Reverted with", () => { it("includes test file", async () => { try { await expect(matchers.revertsWith("bar")).to.be.revertedWith("foo"); - } catch (e: any) { + } catch (e) { const errorString = util.inspect(e); expect(errorString).to.include( "Expected transaction to be reverted with reason 'foo', but it reverted with reason 'bar'", diff --git a/v-next/hardhat-chai-matchers/test/reverted/revertedWithCustomError.ts b/v-next/hardhat-chai-matchers/test/reverted/revertedWithCustomError.ts index 4551be2871..f5565ef3fa 100644 --- a/v-next/hardhat-chai-matchers/test/reverted/revertedWithCustomError.ts +++ b/v-next/hardhat-chai-matchers/test/reverted/revertedWithCustomError.ts @@ -101,9 +101,7 @@ describe("INTEGRATION: Reverted with custom error", () => { }); }); - // depends on a bug being fixed on ethers.js - // see https://github.com/NomicFoundation/hardhat/issues/3446 - it.skip("failed asserts", async () => { + it("failed asserts", async () => { await runFailedAsserts({ matchers, method: "revertsWithoutReason", @@ -402,24 +400,26 @@ describe("INTEGRATION: Reverted with custom error", () => { it("should fail if withArgs is called on its own", async () => { expect(() => - expect(matchers.revertWithCustomErrorWithUint(1)) - // @ts-expect-error - .withArgs(1), + // @ts-expect-error -- force "withArgs" to be called on its own + expect(matchers.revertWithCustomErrorWithUint(1)).withArgs(1), ).to.throw( Error, "withArgs can only be used in combination with a previous .emit or .revertedWithCustomError assertion", ); }); - // it("should fail if both emit and revertedWithCustomError are called", async ()=>{ - // expect(() => - // expect(matchers.revertWithSomeCustomError()) - // .to.emit(matchers, "SomeEvent") - // .and.to.be.revertedWithCustomError(matchers, "SomeCustomError") - // .withArgs(1), - // ).to.throw( - // Error, - // "The matcher 'revertedWithCustomError' cannot be chained after 'emit'.", + // it("should fail if both emit and revertedWithCustomError are called", async () => { + // await assertRejectsWithHardhatError( + // () => + // expect(matchers.revertWithSomeCustomError()) + // .to.emit(matchers, "SomeEvent") + // .and.to.be.revertedWithCustomError(matchers, "SomeCustomError") + // .withArgs(1), + // HardhatError.ERRORS.CHAI_MATCHERS.MATCHER_CANNOT_BE_CHAINED_AFTER, + // { + // matcher: "revertedWithCustomError", + // previousMatcher: "emit", + // }, // ); // }); @@ -505,6 +505,8 @@ describe("INTEGRATION: Reverted with custom error", () => { const randomPrivateKey = "0xc5c587cc6e48e9692aee0bf07474118e6d830c11905f7ec7ff32c09c99eba5f9"; const signer = new ethers.Wallet(randomPrivateKey, ethers.provider); + + // eslint-disable-next-line @typescript-eslint/consistent-type-assertions -- the contract is of type MatchersContract const matchersFromSenderWithoutFunds = matchers.connect( signer, ) as MatchersContract; @@ -545,7 +547,7 @@ describe("INTEGRATION: Reverted with custom error", () => { await expect( matchers.revertsWith("some reason"), ).to.be.revertedWithCustomError(matchers, "SomeCustomError"); - } catch (e: any) { + } catch (e) { const errorString = util.inspect(e); expect(errorString).to.include( "Expected transaction to be reverted with custom error 'SomeCustomError', but it reverted with reason 'some reason'", diff --git a/v-next/hardhat-chai-matchers/test/reverted/revertedWithPanic.ts b/v-next/hardhat-chai-matchers/test/reverted/revertedWithPanic.ts index 87b352e890..939984bff5 100644 --- a/v-next/hardhat-chai-matchers/test/reverted/revertedWithPanic.ts +++ b/v-next/hardhat-chai-matchers/test/reverted/revertedWithPanic.ts @@ -308,6 +308,8 @@ describe("INTEGRATION: Reverted with panic", () => { const randomPrivateKey = "0xc5c587cc6e48e9692aee0bf07474118e6d830c11905f7ec7ff32c09c99eba5f9"; const signer = new ethers.Wallet(randomPrivateKey, ethers.provider); + + // eslint-disable-next-line @typescript-eslint/consistent-type-assertions -- the contract is of type MatchersContract const matchersFromSenderWithoutFunds = matchers.connect( signer, ) as MatchersContract; @@ -331,7 +333,7 @@ describe("INTEGRATION: Reverted with panic", () => { it("includes test file", async () => { try { await expect(matchers.panicAssert()).to.not.be.revertedWithPanic(); - } catch (e: any) { + } catch (e) { const errorString = util.inspect(e); expect(errorString).to.include( "Expected transaction NOT to be reverted with some panic code, but it reverted with panic code 0x01 (Assertion error)", diff --git a/v-next/hardhat-chai-matchers/test/reverted/revertedWithoutReason.ts b/v-next/hardhat-chai-matchers/test/reverted/revertedWithoutReason.ts index 0f51e930c5..14750bafd0 100644 --- a/v-next/hardhat-chai-matchers/test/reverted/revertedWithoutReason.ts +++ b/v-next/hardhat-chai-matchers/test/reverted/revertedWithoutReason.ts @@ -1,5 +1,4 @@ import type { MatchersContract } from "../contracts.js"; -import type { EthereumProvider } from "@ignored/hardhat-vnext/types/providers"; import type { HardhatEthers } from "@ignored/hardhat-vnext-ethers/types"; import path from "node:path"; @@ -31,7 +30,6 @@ describe("INTEGRATION: Reverted without reason", () => { // deploy Matchers contract before each test let matchers: MatchersContract; - let provider: EthereumProvider; let ethers: HardhatEthers; beforeEach(async () => { @@ -42,7 +40,7 @@ describe("INTEGRATION: Reverted without reason", () => { plugins: [hardhatEthersPlugin], }); - ({ ethers, provider } = await hre.network.connect()); + ({ ethers } = await hre.network.connect()); const Matchers = await ethers.getContractFactory<[], MatchersContract>( "Matchers", @@ -72,9 +70,7 @@ describe("INTEGRATION: Reverted without reason", () => { }); }); - // depends on a bug being fixed on ethers.js - // see https://github.com/NomicFoundation/hardhat/issues/3446 - describe.skip("calling a method that reverts without a reason", () => { + describe("calling a method that reverts without a reason", () => { it("successful asserts", async () => { await runSuccessfulAsserts({ matchers, @@ -176,6 +172,8 @@ describe("INTEGRATION: Reverted without reason", () => { "0xc5c587cc6e48e9692aee0bf07474118e6d830c11905f7ec7ff32c09c99eba5f9"; const signer = new ethers.Wallet(randomPrivateKey, ethers.provider); + + // eslint-disable-next-line @typescript-eslint/consistent-type-assertions -- the contract is of type MatchersContract const matchersFromSenderWithoutFunds = matchers.connect( signer, ) as MatchersContract; @@ -201,7 +199,7 @@ describe("INTEGRATION: Reverted without reason", () => { await expect( matchers.revertsWithoutReason(), ).to.not.be.revertedWithoutReason(ethers); - } catch (e: any) { + } catch (e) { const errorString = util.inspect(e); expect(errorString).to.include( "Expected transaction NOT to be reverted without a reason, but it was", From a8a273ab4ea65a0a10aac1fad36bee02081d4d98 Mon Sep 17 00:00:00 2001 From: ChrisD <18092467+ChristopherDedominici@users.noreply.github.com> Date: Wed, 20 Nov 2024 11:50:20 +0100 Subject: [PATCH 14/61] fix types --- v-next/hardhat-chai-matchers/src/types.d.ts | 33 +++++++------------ .../test/changeTokenBalance.ts | 3 ++ v-next/hardhat-chai-matchers/test/events.ts | 1 + .../test/reverted/revertedWith.ts | 2 ++ .../test/reverted/revertedWithCustomError.ts | 3 ++ 5 files changed, 21 insertions(+), 21 deletions(-) diff --git a/v-next/hardhat-chai-matchers/src/types.d.ts b/v-next/hardhat-chai-matchers/src/types.d.ts index caa63854f5..9e3711df8e 100644 --- a/v-next/hardhat-chai-matchers/src/types.d.ts +++ b/v-next/hardhat-chai-matchers/src/types.d.ts @@ -3,51 +3,42 @@ declare namespace Chai { extends LanguageChains, NumericComparison, TypeComparison { - // TODO: is additional meant to be here? - emit(contract: any, eventName: string, additional?: number): EmitAssertion; - // TODO: this needs a refined type - reverted(ethers: any): AsyncAssertion; - // TODO: check that number is meant here - revertedWith(reason: string | RegExp | number): AsyncAssertion; - // TODO: refine this type - revertedWithoutReason(ethers: any): AsyncAssertion; + emit(contract: any, eventName: string): EmitAssertion; + reverted(ethers: HardhatEthers): AsyncAssertion; + revertedWith(reason: string | RegExp): AsyncAssertion; + revertedWithoutReason(ethers: HardhatEthers): AsyncAssertion; revertedWithPanic(code?: any): AsyncAssertion; - // TODO: is extraArgument meant to be here? Is contract really optional? revertedWithCustomError( - contract?: { interface: any } | string, - customErrorName?: string, - extraArgument?: string, + contract: { interface: any }, + customErrorName: string, ): CustomErrorAssertion; hexEqual(other: string): void; properPrivateKey: void; properAddress: void; properHex(length: number): void; - // TODO: give provider proper type changeEtherBalance( - provider: any, + provider: EthereumProvider, account: any, balance: any, options?: any, ): AsyncAssertion; - // TODO: give provider proper type changeEtherBalances( - provider: any, + provider: EthereumProvider, accounts: any[], balances: any[] | ((changes: bigint[]) => boolean), options?: any, ): AsyncAssertion; changeTokenBalance( - provider: any, + provider: EthereumProvider, token: any, account: any, - balance?: any, + balance: any, ): AsyncAssertion; - // TODO: is balance optional? changeTokenBalances( - provider: any, + provider: EthereumProvider, token: any, account: any[], - balance?: any[] | ((changes: bigint[]) => boolean), + balance: any[] | ((changes: bigint[]) => boolean), ): AsyncAssertion; } diff --git a/v-next/hardhat-chai-matchers/test/changeTokenBalance.ts b/v-next/hardhat-chai-matchers/test/changeTokenBalance.ts index fc11effc52..c06593b10a 100644 --- a/v-next/hardhat-chai-matchers/test/changeTokenBalance.ts +++ b/v-next/hardhat-chai-matchers/test/changeTokenBalance.ts @@ -681,6 +681,7 @@ describe("INTEGRATION: changeTokenBalance and changeTokenBalances matchers", () () => expect( mockToken.transfer(receiver.address, 50), + // @ts-expect-error -- force error scenario: token should be specified ).to.changeTokenBalance(provider, receiver, 50), HardhatError.ERRORS.CHAI_MATCHERS .FIRST_ARGUMENT_MUST_BE_A_CONTRACT_INSTANCE, @@ -694,6 +695,7 @@ describe("INTEGRATION: changeTokenBalance and changeTokenBalances matchers", () () => expect( mockToken.transfer(receiver.address, 50), + // @ts-expect-error -- force error scenario: token should be specified ).to.changeTokenBalance(provider, receiver.address, 50), HardhatError.ERRORS.CHAI_MATCHERS .FIRST_ARGUMENT_MUST_BE_A_CONTRACT_INSTANCE, @@ -759,6 +761,7 @@ describe("INTEGRATION: changeTokenBalance and changeTokenBalances matchers", () () => expect( mockToken.transfer(receiver.address, 50), + // @ts-expect-error -- force error scenario: token should be specified ).to.changeTokenBalances(provider, [sender, receiver], [-50, 50]), HardhatError.ERRORS.CHAI_MATCHERS .FIRST_ARGUMENT_MUST_BE_A_CONTRACT_INSTANCE, diff --git a/v-next/hardhat-chai-matchers/test/events.ts b/v-next/hardhat-chai-matchers/test/events.ts index c0ee7569e6..5e5f8f6e45 100644 --- a/v-next/hardhat-chai-matchers/test/events.ts +++ b/v-next/hardhat-chai-matchers/test/events.ts @@ -89,6 +89,7 @@ describe(".to.emit (contract events)", () => { it("should fail when matcher is called with too many arguments", async () => { await assertRejectsWithHardhatError( () => + // @ts-expect-error -- force error scenario: emit should not be called with more than two arguments expect(contract.emitUint(1)).not.to.emit(contract, "WithoutArgs", 1), HardhatError.ERRORS.CHAI_MATCHERS.EMIT_EXPECTS_TWO_ARGUMENTS, {}, diff --git a/v-next/hardhat-chai-matchers/test/reverted/revertedWith.ts b/v-next/hardhat-chai-matchers/test/reverted/revertedWith.ts index 53cce97c06..1fdac0f26a 100644 --- a/v-next/hardhat-chai-matchers/test/reverted/revertedWith.ts +++ b/v-next/hardhat-chai-matchers/test/reverted/revertedWith.ts @@ -212,6 +212,7 @@ describe("INTEGRATION: Reverted with", () => { const { hash } = await mineSuccessfulTransaction(provider, ethers); assertThrowsHardhatError( + // @ts-expect-error -- force error scenario: reason should be a string or a regular expression () => expect(hash).to.be.revertedWith(10), HardhatError.ERRORS.CHAI_MATCHERS .EXPECT_STRING_OR_REGEX_AS_REVERT_REASON, @@ -223,6 +224,7 @@ describe("INTEGRATION: Reverted with", () => { const tx = matchers.revertsWithoutReason(); assertThrowsHardhatError( + // @ts-expect-error -- force error scenario: reason should be a string or a regular expression () => expect(tx).to.be.revertedWith(10), HardhatError.ERRORS.CHAI_MATCHERS .EXPECT_STRING_OR_REGEX_AS_REVERT_REASON, diff --git a/v-next/hardhat-chai-matchers/test/reverted/revertedWithCustomError.ts b/v-next/hardhat-chai-matchers/test/reverted/revertedWithCustomError.ts index f5565ef3fa..2125eaa92b 100644 --- a/v-next/hardhat-chai-matchers/test/reverted/revertedWithCustomError.ts +++ b/v-next/hardhat-chai-matchers/test/reverted/revertedWithCustomError.ts @@ -471,6 +471,7 @@ describe("INTEGRATION: Reverted with custom error", () => { const { hash } = await mineSuccessfulTransaction(provider, ethers); assertThrowsHardhatError( + // @ts-expect-error -- force error scenario: reason should be a string or a regular expression () => expect(hash).to.be.revertedWith(10), HardhatError.ERRORS.CHAI_MATCHERS .EXPECT_STRING_OR_REGEX_AS_REVERT_REASON, @@ -483,6 +484,7 @@ describe("INTEGRATION: Reverted with custom error", () => { () => expect( matchers.revertWithSomeCustomError(), + // @ts-expect-error -- force error scenario: contract should be specified ).to.be.revertedWithCustomError("SomeCustomError"), HardhatError.ERRORS.CHAI_MATCHERS.FIRST_ARGUMENT_MUST_BE_A_CONTRACT, {}, @@ -532,6 +534,7 @@ describe("INTEGRATION: Reverted with custom error", () => { ).to.be.revertedWithCustomError( matchers, "SomeCustomError", + // @ts-expect-error -- force error scenario: extra arguments should not be specified "extraArgument", ), HardhatError.ERRORS.CHAI_MATCHERS.REVERT_INVALID_ARGUMENTS_LENGTH, From 938aaec48fc3fd5796179194db353bf7413551fe Mon Sep 17 00:00:00 2001 From: ChrisD <18092467+ChristopherDedominici@users.noreply.github.com> Date: Wed, 20 Nov 2024 12:00:44 +0100 Subject: [PATCH 15/61] remove missing unused packages --- pnpm-lock.yaml | 191 ------------------- v-next/hardhat-chai-matchers/package.json | 5 +- v-next/hardhat-chai-matchers/test/helpers.ts | 1 - 3 files changed, 1 insertion(+), 196 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8ae8974bd9..10ac9e7466 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1603,9 +1603,6 @@ importers: '@ignored/hardhat-vnext-utils': specifier: workspace:^3.0.0-next.15 version: link:../hardhat-utils - '@nomicfoundation/hardhat-ethers': - specifier: ^3.0.8 - version: 3.0.8(ethers@6.13.4)(hardhat@2.22.15(ts-node@10.9.2(@types/node@20.17.1)(typescript@5.5.4))(typescript@5.5.4)) '@types/chai-as-promised': specifier: ^8.0.1 version: 8.0.1 @@ -1615,9 +1612,6 @@ importers: chai-as-promised: specifier: ^8.0.0 version: 8.0.0(chai@5.1.2) - deep-eql: - specifier: ^4.0.1 - version: 4.1.4 ethers: specifier: ^6.13.4 version: 6.13.4 @@ -1637,9 +1631,6 @@ importers: '@types/debug': specifier: ^4.1.4 version: 4.1.12 - '@types/deep-eql': - specifier: ^4.0.2 - version: 4.0.2 '@types/node': specifier: ^20.14.9 version: 20.17.1 @@ -3205,66 +3196,34 @@ packages: resolution: {integrity: sha512-Gm4wOPKhbDjGTIRyFA2QUAPfCXA1AHxYOKt3yLSGJkQkdy9a5WW+qtqKeEKHc/+4wpJSLtsGQfpzyIzggFfo/A==} engines: {node: '>= 18'} - '@nomicfoundation/edr-darwin-arm64@0.6.4': - resolution: {integrity: sha512-QNQErISLgssV9+qia8sIjRANqtbW8snSDvjspixT/kSQ5ZSGxxctTg7x72wPSrcu8+EBEveIe5uqENIp5GH8HQ==} - engines: {node: '>= 18'} - '@nomicfoundation/edr-darwin-x64@0.5.2': resolution: {integrity: sha512-ClyABq2dFCsrYEED3/UIO0c7p4H1/4vvlswFlqUyBpOkJccr75qIYvahOSJRM62WgUFRhbSS0OJXFRwc/PwmVg==} engines: {node: '>= 18'} - '@nomicfoundation/edr-darwin-x64@0.6.4': - resolution: {integrity: sha512-cjVmREiwByyc9+oGfvAh49IAw+oVJHF9WWYRD+Tm/ZlSpnEVWxrGNBak2bd/JSYjn+mZE7gmWS4SMRi4nKaLUg==} - engines: {node: '>= 18'} - '@nomicfoundation/edr-linux-arm64-gnu@0.5.2': resolution: {integrity: sha512-HWMTVk1iOabfvU2RvrKLDgtFjJZTC42CpHiw2h6rfpsgRqMahvIlx2jdjWYzFNy1jZKPTN1AStQ/91MRrg5KnA==} engines: {node: '>= 18'} - '@nomicfoundation/edr-linux-arm64-gnu@0.6.4': - resolution: {integrity: sha512-96o9kRIVD6W5VkgKvUOGpWyUGInVQ5BRlME2Fa36YoNsRQMaKtmYJEU0ACosYES6ZTpYC8U5sjMulvPtVoEfOA==} - engines: {node: '>= 18'} - '@nomicfoundation/edr-linux-arm64-musl@0.5.2': resolution: {integrity: sha512-CwsQ10xFx/QAD5y3/g5alm9+jFVuhc7uYMhrZAu9UVF+KtVjeCvafj0PaVsZ8qyijjqVuVsJ8hD1x5ob7SMcGg==} engines: {node: '>= 18'} - '@nomicfoundation/edr-linux-arm64-musl@0.6.4': - resolution: {integrity: sha512-+JVEW9e5plHrUfQlSgkEj/UONrIU6rADTEk+Yp9pbe+mzNkJdfJYhs5JYiLQRP4OjxH4QOrXI97bKU6FcEbt5Q==} - engines: {node: '>= 18'} - '@nomicfoundation/edr-linux-x64-gnu@0.5.2': resolution: {integrity: sha512-CWVCEdhWJ3fmUpzWHCRnC0/VLBDbqtqTGTR6yyY1Ep3S3BOrHEAvt7h5gx85r2vLcztisu2vlDq51auie4IU1A==} engines: {node: '>= 18'} - '@nomicfoundation/edr-linux-x64-gnu@0.6.4': - resolution: {integrity: sha512-nzYWW+fO3EZItOeP4CrdMgDXfaGBIBkKg0Y/7ySpUxLqzut40O4Mb0/+quqLAFkacUSWMlFp8nsmypJfOH5zoA==} - engines: {node: '>= 18'} - '@nomicfoundation/edr-linux-x64-musl@0.5.2': resolution: {integrity: sha512-+aJDfwhkddy2pP5u1ISg3IZVAm0dO836tRlDTFWtvvSMQ5hRGqPcWwlsbobhDQsIxhPJyT7phL0orCg5W3WMeA==} engines: {node: '>= 18'} - '@nomicfoundation/edr-linux-x64-musl@0.6.4': - resolution: {integrity: sha512-QFRoE9qSQ2boRrVeQ1HdzU+XN7NUgwZ1SIy5DQt4d7jCP+5qTNsq8LBNcqhRBOATgO63nsweNUhxX/Suj5r1Sw==} - engines: {node: '>= 18'} - '@nomicfoundation/edr-win32-x64-msvc@0.5.2': resolution: {integrity: sha512-CcvvuA3sAv7liFNPsIR/68YlH6rrybKzYttLlMr80d4GKJjwJ5OKb3YgE6FdZZnOfP19HEHhsLcE0DPLtY3r0w==} engines: {node: '>= 18'} - '@nomicfoundation/edr-win32-x64-msvc@0.6.4': - resolution: {integrity: sha512-2yopjelNkkCvIjUgBGhrn153IBPLwnsDeNiq6oA0WkeM8tGmQi4td+PGi9jAriUDAkc59Yoi2q9hYA6efiY7Zw==} - engines: {node: '>= 18'} - '@nomicfoundation/edr@0.5.2': resolution: {integrity: sha512-hW/iLvUQZNTVjFyX/I40rtKvvDOqUEyIi96T28YaLfmPL+3LW2lxmYLUXEJ6MI14HzqxDqrLyhf6IbjAa2r3Dw==} engines: {node: '>= 18'} - '@nomicfoundation/edr@0.6.4': - resolution: {integrity: sha512-YgrSuT3yo5ZQkbvBGqQ7hG+RDvz3YygSkddg4tb1Z0Y6pLXFzwrcEwWaJCFAVeeZxdxGfCgGMUYgRVneK+WXkw==} - engines: {node: '>= 18'} - '@nomicfoundation/ethereumjs-block@5.0.4': resolution: {integrity: sha512-AcyacJ9eX/uPEvqsPiB+WO1ymE+kyH48qGGiGV+YTojdtas8itUTW5dehDSOXEEItWGbbzEJ4PRqnQZlWaPvDw==} engines: {node: '>=18'} @@ -3299,12 +3258,6 @@ packages: c-kzg: optional: true - '@nomicfoundation/hardhat-ethers@3.0.8': - resolution: {integrity: sha512-zhOZ4hdRORls31DTOqg+GmEZM0ujly8GGIuRY7t7szEk2zW/arY1qDug/py8AEktT00v5K+b6RvbVog+va51IA==} - peerDependencies: - ethers: ^6.1.0 - hardhat: ^2.0.0 - '@nomicfoundation/hardhat-ignition-ethers@0.15.7': resolution: {integrity: sha512-pUZWQeFNMwDe6F/yKIJsCo+87elk/M/Edjp6AnWWIBplRyPa13Nh63+yOqMSSd9Mx9lLuBaEGnYXoI2Uz2wYZA==} peerDependencies: @@ -3501,9 +3454,6 @@ packages: '@types/debug@4.1.12': resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} - '@types/deep-eql@4.0.2': - resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==} - '@types/events@3.0.3': resolution: {integrity: sha512-trOc4AAUThEz9hapPtSd7wf5tiQKvTtu5b371UxXdTuqzIh0ArcRspRP0i0Viu+LXstIQ1z96t1nsPxT9ol01g==} @@ -4231,10 +4181,6 @@ packages: resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} engines: {node: '>= 8.10.0'} - chokidar@4.0.1: - resolution: {integrity: sha512-n8enUVCED/KVRQlab1hr3MVpcVMvxtZjmEa956u+4YijlmQED223XMSYj2tLuKvr4jcCTzNNMpQDUer72MMmzA==} - engines: {node: '>= 14.16.0'} - chownr@1.1.4: resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} @@ -5130,18 +5076,6 @@ packages: peerDependencies: hardhat: ^2.0.2 - hardhat@2.22.15: - resolution: {integrity: sha512-BpTGa9PE/sKAaHi4s/S1e9WGv63DR1m7Lzfd60C8gSEchDPfAJssVRSq0MZ2v2k76ig9m0kHAwVLf5teYwu/Mw==} - hasBin: true - peerDependencies: - ts-node: '*' - typescript: '*' - peerDependenciesMeta: - ts-node: - optional: true - typescript: - optional: true - has-bigints@1.0.2: resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} @@ -5509,10 +5443,6 @@ packages: json-stable-stringify-without-jsonify@1.0.1: resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} - json-stream-stringify@3.1.6: - resolution: {integrity: sha512-x7fpwxOkbhFCaJDJ8vb1fBY3DdSa4AlITaz+HHILQJzdPMnHEFjxPwVUi1ALIbcIxDE0PNe/0i7frnY8QnBQog==} - engines: {node: '>=7.10.1'} - json-stringify-safe@5.0.1: resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} @@ -6143,10 +6073,6 @@ packages: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} engines: {node: '>=8.10.0'} - readdirp@4.0.2: - resolution: {integrity: sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==} - engines: {node: '>= 14.16.0'} - rechoir@0.6.2: resolution: {integrity: sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==} engines: {node: '>= 0.10'} @@ -7996,32 +7922,18 @@ snapshots: '@nomicfoundation/edr-darwin-arm64@0.5.2': {} - '@nomicfoundation/edr-darwin-arm64@0.6.4': {} - '@nomicfoundation/edr-darwin-x64@0.5.2': {} - '@nomicfoundation/edr-darwin-x64@0.6.4': {} - '@nomicfoundation/edr-linux-arm64-gnu@0.5.2': {} - '@nomicfoundation/edr-linux-arm64-gnu@0.6.4': {} - '@nomicfoundation/edr-linux-arm64-musl@0.5.2': {} - '@nomicfoundation/edr-linux-arm64-musl@0.6.4': {} - '@nomicfoundation/edr-linux-x64-gnu@0.5.2': {} - '@nomicfoundation/edr-linux-x64-gnu@0.6.4': {} - '@nomicfoundation/edr-linux-x64-musl@0.5.2': {} - '@nomicfoundation/edr-linux-x64-musl@0.6.4': {} - '@nomicfoundation/edr-win32-x64-msvc@0.5.2': {} - '@nomicfoundation/edr-win32-x64-msvc@0.6.4': {} - '@nomicfoundation/edr@0.5.2': dependencies: '@nomicfoundation/edr-darwin-arm64': 0.5.2 @@ -8032,16 +7944,6 @@ snapshots: '@nomicfoundation/edr-linux-x64-musl': 0.5.2 '@nomicfoundation/edr-win32-x64-msvc': 0.5.2 - '@nomicfoundation/edr@0.6.4': - dependencies: - '@nomicfoundation/edr-darwin-arm64': 0.6.4 - '@nomicfoundation/edr-darwin-x64': 0.6.4 - '@nomicfoundation/edr-linux-arm64-gnu': 0.6.4 - '@nomicfoundation/edr-linux-arm64-musl': 0.6.4 - '@nomicfoundation/edr-linux-x64-gnu': 0.6.4 - '@nomicfoundation/edr-linux-x64-musl': 0.6.4 - '@nomicfoundation/edr-win32-x64-msvc': 0.6.4 - '@nomicfoundation/ethereumjs-block@5.0.4': dependencies: '@nomicfoundation/ethereumjs-common': 4.0.4 @@ -8084,15 +7986,6 @@ snapshots: '@nomicfoundation/ethereumjs-rlp': 5.0.4 ethereum-cryptography: 0.1.3 - '@nomicfoundation/hardhat-ethers@3.0.8(ethers@6.13.4)(hardhat@2.22.15(ts-node@10.9.2(@types/node@20.17.1)(typescript@5.5.4))(typescript@5.5.4))': - dependencies: - debug: 4.3.7(supports-color@8.1.1) - ethers: 6.13.4 - hardhat: 2.22.15(ts-node@10.9.2(@types/node@20.17.1)(typescript@5.5.4))(typescript@5.5.4) - lodash.isequal: 4.5.0 - transitivePeerDependencies: - - supports-color - '@nomicfoundation/hardhat-ignition-ethers@0.15.7(@nomicfoundation/hardhat-ethers@packages+hardhat-ethers)(@nomicfoundation/hardhat-ignition@0.15.7(@nomicfoundation/hardhat-verify@packages+hardhat-verify)(hardhat@packages+hardhat-core))(@nomicfoundation/ignition-core@0.15.7)(ethers@6.13.4)(hardhat@packages+hardhat-core)': dependencies: '@nomicfoundation/hardhat-ethers': link:packages/hardhat-ethers @@ -8347,8 +8240,6 @@ snapshots: dependencies: '@types/ms': 0.7.34 - '@types/deep-eql@4.0.2': {} - '@types/events@3.0.3': {} '@types/find-up@2.1.1': {} @@ -9192,10 +9083,6 @@ snapshots: optionalDependencies: fsevents: 2.3.3 - chokidar@4.0.1: - dependencies: - readdirp: 4.0.2 - chownr@1.1.4: {} ci-info@2.0.0: {} @@ -10369,61 +10256,6 @@ snapshots: - debug - utf-8-validate - hardhat@2.22.15(ts-node@10.9.2(@types/node@20.17.1)(typescript@5.5.4))(typescript@5.5.4): - dependencies: - '@ethersproject/abi': 5.7.0 - '@metamask/eth-sig-util': 4.0.1 - '@nomicfoundation/edr': 0.6.4 - '@nomicfoundation/ethereumjs-common': 4.0.4 - '@nomicfoundation/ethereumjs-tx': 5.0.4 - '@nomicfoundation/ethereumjs-util': 9.0.4 - '@nomicfoundation/solidity-analyzer': 0.1.2 - '@sentry/node': 5.30.0 - '@types/bn.js': 5.1.6 - '@types/lru-cache': 5.1.1 - adm-zip: 0.4.16 - aggregate-error: 3.1.0 - ansi-escapes: 4.3.2 - boxen: 5.1.2 - chalk: 2.4.2 - chokidar: 4.0.1 - ci-info: 2.0.0 - debug: 4.3.7(supports-color@8.1.1) - enquirer: 2.4.1 - env-paths: 2.2.1 - ethereum-cryptography: 1.2.0 - ethereumjs-abi: 0.6.8 - find-up: 2.1.0 - fp-ts: 1.19.3 - fs-extra: 7.0.1 - glob: 7.2.0 - immutable: 4.3.7 - io-ts: 1.10.4 - json-stream-stringify: 3.1.6 - keccak: 3.0.4 - lodash: 4.17.21 - mnemonist: 0.38.5 - mocha: 10.7.3 - p-map: 4.0.0 - raw-body: 2.5.2 - resolve: 1.17.0 - semver: 6.3.1 - solc: 0.8.26(debug@4.3.7) - source-map-support: 0.5.21 - stacktrace-parser: 0.1.10 - tsort: 0.0.1 - undici: 5.28.4 - uuid: 8.3.2 - ws: 7.5.10 - optionalDependencies: - ts-node: 10.9.2(@types/node@20.17.1)(typescript@5.5.4) - typescript: 5.5.4 - transitivePeerDependencies: - - bufferutil - - c-kzg - - supports-color - - utf-8-validate - has-bigints@1.0.2: {} has-color@0.1.7: {} @@ -10767,8 +10599,6 @@ snapshots: json-stable-stringify-without-jsonify@1.0.1: {} - json-stream-stringify@3.1.6: {} - json-stringify-safe@5.0.1: {} json5@1.0.2: @@ -11423,8 +11253,6 @@ snapshots: dependencies: picomatch: 2.3.1 - readdirp@4.0.2: {} - rechoir@0.6.2: dependencies: resolve: 1.17.0 @@ -11966,25 +11794,6 @@ snapshots: v8-compile-cache-lib: 3.0.1 yn: 3.1.1 - ts-node@10.9.2(@types/node@20.17.1)(typescript@5.5.4): - dependencies: - '@cspotcode/source-map-support': 0.8.1 - '@tsconfig/node10': 1.0.11 - '@tsconfig/node12': 1.0.11 - '@tsconfig/node14': 1.0.3 - '@tsconfig/node16': 1.0.4 - '@types/node': 20.17.1 - acorn: 8.14.0 - acorn-walk: 8.3.4 - arg: 4.1.3 - create-require: 1.1.1 - diff: 4.0.2 - make-error: 1.3.6 - typescript: 5.5.4 - v8-compile-cache-lib: 3.0.1 - yn: 3.1.1 - optional: true - tsconfig-paths@3.15.0: dependencies: '@types/json5': 0.0.29 diff --git a/v-next/hardhat-chai-matchers/package.json b/v-next/hardhat-chai-matchers/package.json index 917ae46469..ed2af1a224 100644 --- a/v-next/hardhat-chai-matchers/package.json +++ b/v-next/hardhat-chai-matchers/package.json @@ -49,7 +49,6 @@ "@nomicfoundation/hardhat-test-utils": "workspace:^", "@types/chai": "^4.2.0", "@types/debug": "^4.1.4", - "@types/deep-eql": "^4.0.2", "@types/node": "^20.14.9", "@typescript-eslint/eslint-plugin": "^7.7.1", "@typescript-eslint/parser": "^7.7.1", @@ -69,10 +68,8 @@ "dependencies": { "@ignored/hardhat-vnext-errors": "workspace:^3.0.0-next.15", "@ignored/hardhat-vnext-utils": "workspace:^3.0.0-next.15", - "@nomicfoundation/hardhat-ethers": "^3.0.8", "@types/chai-as-promised": "^8.0.1", - "chai-as-promised": "^8.0.0", - "deep-eql": "^4.0.1" + "chai-as-promised": "^8.0.0" }, "peerDependencies": { "@ignored/hardhat-vnext": "workspace:^3.0.0-next.16", diff --git a/v-next/hardhat-chai-matchers/test/helpers.ts b/v-next/hardhat-chai-matchers/test/helpers.ts index 321e458799..3cff01e7ba 100644 --- a/v-next/hardhat-chai-matchers/test/helpers.ts +++ b/v-next/hardhat-chai-matchers/test/helpers.ts @@ -1,5 +1,4 @@ import type { MatchersContract } from "./contracts.js"; -import "@nomicfoundation/hardhat-ethers/internal/type-extensions"; import type { EthereumProvider } from "@ignored/hardhat-vnext/types/providers"; import type { HardhatEthers } from "@ignored/hardhat-vnext-ethers/types"; import type { ContractTransactionResponse } from "ethers/contract"; From d521555477caafba4b6861ad6aa9a4ba6b48ba8a Mon Sep 17 00:00:00 2001 From: ChrisD <18092467+ChristopherDedominici@users.noreply.github.com> Date: Wed, 20 Nov 2024 16:33:59 +0100 Subject: [PATCH 16/61] add mocha hook logic --- pnpm-lock.yaml | 3 +++ v-next/hardhat-chai-matchers/package.json | 1 + v-next/hardhat-chai-matchers/src/index.ts | 11 ++++++-- .../src/internal/hook-handlers/mocha.ts | 25 +++++++++++++++++++ v-next/hardhat-chai-matchers/src/panic.ts | 1 - .../src/type-extensions.ts | 0 .../test-project/hardhat.config.ts | 11 ++++++++ .../test-project/test/test.ts | 15 +++++++++++ v-next/hardhat-chai-matchers/test/index.ts | 24 ++++++++++++++++++ .../src/task-action.ts | 6 +++++ .../src/type-extensions.ts | 13 ++++++++++ 11 files changed, 107 insertions(+), 3 deletions(-) create mode 100644 v-next/hardhat-chai-matchers/src/internal/hook-handlers/mocha.ts delete mode 100644 v-next/hardhat-chai-matchers/src/type-extensions.ts create mode 100644 v-next/hardhat-chai-matchers/test/fixture-projects/test-project/hardhat.config.ts create mode 100644 v-next/hardhat-chai-matchers/test/fixture-projects/test-project/test/test.ts diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 10ac9e7466..4456ec8c89 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1600,6 +1600,9 @@ importers: '@ignored/hardhat-vnext-ethers': specifier: workspace:^3.0.0-next.12 version: link:../hardhat-ethers + '@ignored/hardhat-vnext-mocha-test-runner': + specifier: workspace:^3.0.0-next.12 + version: link:../hardhat-mocha-test-runner '@ignored/hardhat-vnext-utils': specifier: workspace:^3.0.0-next.15 version: link:../hardhat-utils diff --git a/v-next/hardhat-chai-matchers/package.json b/v-next/hardhat-chai-matchers/package.json index ed2af1a224..a781a4a9f1 100644 --- a/v-next/hardhat-chai-matchers/package.json +++ b/v-next/hardhat-chai-matchers/package.json @@ -74,6 +74,7 @@ "peerDependencies": { "@ignored/hardhat-vnext": "workspace:^3.0.0-next.16", "@ignored/hardhat-vnext-ethers": "workspace:^3.0.0-next.12", + "@ignored/hardhat-vnext-mocha-test-runner": "workspace:^3.0.0-next.12", "chai": "^5.1.2", "ethers": "^6.13.4" } diff --git a/v-next/hardhat-chai-matchers/src/index.ts b/v-next/hardhat-chai-matchers/src/index.ts index 59670731b6..3b87f57d46 100644 --- a/v-next/hardhat-chai-matchers/src/index.ts +++ b/v-next/hardhat-chai-matchers/src/index.ts @@ -1,3 +1,10 @@ -import "./types.js"; +import type { HardhatPlugin } from "@ignored/hardhat-vnext/types/plugins"; -import "./internal/add-chai-matchers.js"; +const hardhatChaiMatchersPlugin: HardhatPlugin = { + id: "hardhat-chai-matchers", + hookHandlers: { + mocha: import.meta.resolve("./internal/hook-handlers/mocha.js"), + }, +}; + +export default hardhatChaiMatchersPlugin; diff --git a/v-next/hardhat-chai-matchers/src/internal/hook-handlers/mocha.ts b/v-next/hardhat-chai-matchers/src/internal/hook-handlers/mocha.ts new file mode 100644 index 0000000000..89a11e5f2c --- /dev/null +++ b/v-next/hardhat-chai-matchers/src/internal/hook-handlers/mocha.ts @@ -0,0 +1,25 @@ +import type { + HookContext, + MochaHooks, +} from "@ignored/hardhat-vnext/types/hooks"; + +import { use } from "chai"; +import chaiAsPromised from "chai-as-promised"; + +import { hardhatChaiMatchers } from "../hardhatChaiMatchers.js"; + +export default async (): Promise> => { + const handlers: Partial = { + initialize( + _context: HookContext, + _next: (context: HookContext) => Promise, + ): Promise { + use(hardhatChaiMatchers); + use(chaiAsPromised); + + return Promise.resolve(); + }, + }; + + return handlers; +}; diff --git a/v-next/hardhat-chai-matchers/src/panic.ts b/v-next/hardhat-chai-matchers/src/panic.ts index dc8fcbc3a4..892b650f6a 100644 --- a/v-next/hardhat-chai-matchers/src/panic.ts +++ b/v-next/hardhat-chai-matchers/src/panic.ts @@ -1,2 +1 @@ -// re-export here so users can import from "@nomicfoundation/hardhat-chai-matchers/panic" export { PANIC_CODES } from "./internal/reverted/panic.js"; diff --git a/v-next/hardhat-chai-matchers/src/type-extensions.ts b/v-next/hardhat-chai-matchers/src/type-extensions.ts deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/v-next/hardhat-chai-matchers/test/fixture-projects/test-project/hardhat.config.ts b/v-next/hardhat-chai-matchers/test/fixture-projects/test-project/hardhat.config.ts new file mode 100644 index 0000000000..82072d7817 --- /dev/null +++ b/v-next/hardhat-chai-matchers/test/fixture-projects/test-project/hardhat.config.ts @@ -0,0 +1,11 @@ +import type { HardhatUserConfig } from "@ignored/hardhat-vnext/config"; + +import HardhatMochaPlugin from "@ignored/hardhat-vnext-mocha-test-runner"; + +import hardhatChaiMatchersPlugin from "../../../src/index.js"; + +const config: HardhatUserConfig = { + plugins: [HardhatMochaPlugin, hardhatChaiMatchersPlugin], +}; + +export default config; diff --git a/v-next/hardhat-chai-matchers/test/fixture-projects/test-project/test/test.ts b/v-next/hardhat-chai-matchers/test/fixture-projects/test-project/test/test.ts new file mode 100644 index 0000000000..9405f75459 --- /dev/null +++ b/v-next/hardhat-chai-matchers/test/fixture-projects/test-project/test/test.ts @@ -0,0 +1,15 @@ +import { AssertionError, expect } from "chai"; + +describe("chai-matcher-test", () => { + it("should pass", () => { + expect("0x0000010AB").to.not.hexEqual("0x0010abc"); + + expect( + () => + expect("0x28FAA621c3348823D6c6548981a19716bcDc740").to.be.properAddress, + ).to.throw( + AssertionError, + 'Expected "0x28FAA621c3348823D6c6548981a19716bcDc740" to be a proper address', + ); + }); +}); diff --git a/v-next/hardhat-chai-matchers/test/index.ts b/v-next/hardhat-chai-matchers/test/index.ts index e69de29bb2..74d4bb32c8 100644 --- a/v-next/hardhat-chai-matchers/test/index.ts +++ b/v-next/hardhat-chai-matchers/test/index.ts @@ -0,0 +1,24 @@ +import assert from "node:assert/strict"; +import { describe, it } from "node:test"; + +import { createHardhatRuntimeEnvironment } from "@ignored/hardhat-vnext/hre"; +import { useFixtureProject } from "@nomicfoundation/hardhat-test-utils"; + +describe("hardhat-chai-matchers plugin correctly initialized", () => { + useFixtureProject("test-project"); + + it("should load the plugin via hook and use the functionalities in a mocha test", async () => { + const hardhatConfig = await import( + "./fixture-projects/test-project/hardhat.config.js" + ); + + const hre = await createHardhatRuntimeEnvironment(hardhatConfig.default); + + const result = await hre.tasks.getTask(["test", "mocha"]).run({ + testFiles: ["./test/test.ts"], + noCompile: true, + }); + + assert.equal(result, 0); + }); +}); diff --git a/v-next/hardhat-mocha-test-runner/src/task-action.ts b/v-next/hardhat-mocha-test-runner/src/task-action.ts index e0c5f5182c..62a92049c4 100644 --- a/v-next/hardhat-mocha-test-runner/src/task-action.ts +++ b/v-next/hardhat-mocha-test-runner/src/task-action.ts @@ -60,6 +60,12 @@ const testWithHardhat: NewTaskActionFunction = async ( const tsx = fileURLToPath(import.meta.resolve("tsx/esm")); process.env.NODE_OPTIONS = `--import ${tsx}`; + // This allows other plugins to hook into the mocha initialization. + // E.g.: hardhat-chai-matchers + await hre.hooks.runHandlerChain("mocha", "initialize", [], async () => { + return undefined; + }); + const { default: Mocha } = await import("mocha"); const mochaConfig: MochaOptions = { ...hre.config.mocha }; diff --git a/v-next/hardhat-mocha-test-runner/src/type-extensions.ts b/v-next/hardhat-mocha-test-runner/src/type-extensions.ts index 7c81ef6a7a..f2b15c1d46 100644 --- a/v-next/hardhat-mocha-test-runner/src/type-extensions.ts +++ b/v-next/hardhat-mocha-test-runner/src/type-extensions.ts @@ -19,3 +19,16 @@ declare module "@ignored/hardhat-vnext/types/config" { mocha: string; } } + +declare module "@ignored/hardhat-vnext/types/hooks" { + export interface HardhatHooks { + mocha: MochaHooks; + } + + export interface MochaHooks { + initialize( + context: HookContext, + next: (context: HookContext) => Promise, + ): Promise; + } +} From 975e58ac23237961ba4ff9f12ce9ebbad3edaa65 Mon Sep 17 00:00:00 2001 From: ChrisD <18092467+ChristopherDedominici@users.noreply.github.com> Date: Wed, 20 Nov 2024 16:37:59 +0100 Subject: [PATCH 17/61] fix tests with pending async code --- .../test/changeEtherBalance.ts | 45 +++--- .../test/changeEtherBalances.ts | 63 ++++---- .../test/changeTokenBalance.ts | 69 +++++---- .../test/reverted/reverted.ts | 134 ++++++++++-------- .../test/reverted/revertedWithCustomError.ts | 22 ++- 5 files changed, 194 insertions(+), 139 deletions(-) diff --git a/v-next/hardhat-chai-matchers/test/changeEtherBalance.ts b/v-next/hardhat-chai-matchers/test/changeEtherBalance.ts index 2caec06cc4..978ec6d83e 100644 --- a/v-next/hardhat-chai-matchers/test/changeEtherBalance.ts +++ b/v-next/hardhat-chai-matchers/test/changeEtherBalance.ts @@ -1,4 +1,5 @@ import type { ChangeEtherBalance } from "./contracts.js"; +import type { Token } from "../src/internal/changeTokenBalance.js"; import type { EthereumProvider } from "@ignored/hardhat-vnext/types/providers"; import type { HardhatEthers, @@ -10,8 +11,12 @@ import { before, beforeEach, describe, it } from "node:test"; import util from "node:util"; import { createHardhatRuntimeEnvironment } from "@ignored/hardhat-vnext/hre"; +import { HardhatError } from "@ignored/hardhat-vnext-errors"; import hardhatEthersPlugin from "@ignored/hardhat-vnext-ethers"; -import { useFixtureProject } from "@nomicfoundation/hardhat-test-utils"; +import { + assertThrowsHardhatError, + useFixtureProject, +} from "@nomicfoundation/hardhat-test-utils"; import { expect, AssertionError } from "chai"; import "../src/internal/add-chai-matchers"; @@ -33,7 +38,7 @@ describe("INTEGRATION: changeEtherBalance matcher", () => { let receiver: HardhatEthersSigner; let contract: ChangeEtherBalance; let txGasFees: number; - // let mockToken: Token; + let mockToken: Token; let provider: EthereumProvider; let ethers: HardhatEthers; @@ -67,8 +72,8 @@ describe("INTEGRATION: changeEtherBalance matcher", () => { params: ["0x0"], }); - // const MockToken = await ethers.getContractFactory<[], Token>("MockToken"); - // mockToken = await MockToken.deploy(); + const MockToken = await ethers.getContractFactory<[], Token>("MockToken"); + mockToken = await MockToken.deploy(); }); describe("Transaction Callback (legacy tx)", () => { @@ -627,20 +632,24 @@ describe("INTEGRATION: changeEtherBalance matcher", () => { ); }); - // it("should throw if chained to another non-chainable method", () => { - // expect(() => - // expect( - // sender.sendTransaction({ - // to: receiver.address, - // value: 200, - // }), - // ) - // .to.changeTokenBalance(provider, mockToken, receiver, 50) - // .and.to.changeEtherBalance(provider, sender, "-200"), - // ).to.throw( - // /The matcher 'changeEtherBalance' cannot be chained after 'changeTokenBalance'./, - // ); - // }); + it("should throw if chained to another non-chainable method", () => { + assertThrowsHardhatError( + () => + expect( + sender.sendTransaction({ + to: receiver.address, + value: 200, + }), + ) + .to.changeTokenBalance(provider, mockToken, receiver, 0) + .and.to.changeEtherBalance(provider, sender, "-200"), + HardhatError.ERRORS.CHAI_MATCHERS.MATCHER_CANNOT_BE_CHAINED_AFTER, + { + matcher: "changeEtherBalance", + previousMatcher: "changeTokenBalance", + }, + ); + }); }); }); diff --git a/v-next/hardhat-chai-matchers/test/changeEtherBalances.ts b/v-next/hardhat-chai-matchers/test/changeEtherBalances.ts index 74b9faaa8e..d88a82717b 100644 --- a/v-next/hardhat-chai-matchers/test/changeEtherBalances.ts +++ b/v-next/hardhat-chai-matchers/test/changeEtherBalances.ts @@ -1,4 +1,5 @@ import type { ChangeEtherBalance } from "./contracts.js"; +import type { Token } from "../src/internal/changeTokenBalance.js"; import type { EthereumProvider } from "@ignored/hardhat-vnext/types/providers"; import type { HardhatEthers, @@ -10,8 +11,12 @@ import { before, beforeEach, describe, it } from "node:test"; import util from "node:util"; import { createHardhatRuntimeEnvironment } from "@ignored/hardhat-vnext/hre"; +import { HardhatError } from "@ignored/hardhat-vnext-errors"; import hardhatEthersPlugin from "@ignored/hardhat-vnext-ethers"; -import { useFixtureProject } from "@nomicfoundation/hardhat-test-utils"; +import { + assertThrowsHardhatError, + useFixtureProject, +} from "@nomicfoundation/hardhat-test-utils"; import { expect, AssertionError } from "chai"; import "../src/internal/add-chai-matchers"; @@ -34,7 +39,7 @@ describe("INTEGRATION: changeEtherBalances matcher", () => { let receiver: HardhatEthersSigner; let contract: ChangeEtherBalance; let txGasFees: number; - // let mockToken: Token; + let mockToken: Token; let provider: EthereumProvider; let ethers: HardhatEthers; @@ -68,8 +73,8 @@ describe("INTEGRATION: changeEtherBalances matcher", () => { params: ["0x0"], }); - // const MockToken = await ethers.getContractFactory<[], Token>("MockToken"); - // mockToken = await MockToken.deploy(); + const MockToken = await ethers.getContractFactory<[], Token>("MockToken"); + mockToken = await MockToken.deploy(); }); describe("Transaction Callback", () => { @@ -356,29 +361,33 @@ describe("INTEGRATION: changeEtherBalances matcher", () => { }); }); - // it("should throw if chained to another non-chainable method", () => { - // expect(() => - // expect( - // sender.sendTransaction({ - // to: contract, - // value: 200, - // }), - // ) - // .to.changeTokenBalances( - // provider, - // mockToken, - // [sender, receiver], - // [-50, 100], - // ) - // .and.to.changeEtherBalances( - // provider, - // [sender, contract], - // [-200, 200], - // ), - // ).to.throw( - // /The matcher 'changeEtherBalances' cannot be chained after 'changeTokenBalances'./, - // ); - // }); + it("should throw if chained to another non-chainable method", () => { + assertThrowsHardhatError( + () => + expect( + sender.sendTransaction({ + to: contract, + value: 200, + }), + ) + .to.changeTokenBalances( + provider, + mockToken, + [sender, receiver], + [0, 0], + ) + .and.to.changeEtherBalances( + provider, + [sender, contract], + [-200, 200], + ), + HardhatError.ERRORS.CHAI_MATCHERS.MATCHER_CANNOT_BE_CHAINED_AFTER, + { + matcher: "changeEtherBalances", + previousMatcher: "changeTokenBalances", + }, + ); + }); describe("Change balance, multiple accounts", () => { it("should pass when all expected balance changes are equal to actual values", async () => { diff --git a/v-next/hardhat-chai-matchers/test/changeTokenBalance.ts b/v-next/hardhat-chai-matchers/test/changeTokenBalance.ts index c06593b10a..1ed344d1f9 100644 --- a/v-next/hardhat-chai-matchers/test/changeTokenBalance.ts +++ b/v-next/hardhat-chai-matchers/test/changeTokenBalance.ts @@ -1,4 +1,8 @@ -import type { MatchersContract } from "./contracts.js"; +import type { + AnotherContract, + EventsContract, + MatchersContract, +} from "./contracts.js"; import type { Token } from "../src/internal/changeTokenBalance.js"; import type { EthereumProvider } from "@ignored/hardhat-vnext/types/providers"; import type { @@ -49,6 +53,8 @@ describe("INTEGRATION: changeTokenBalance and changeTokenBalances matchers", () let receiver: HardhatEthersSigner; let mockToken: Token; let matchers: MatchersContract; + let otherContract: AnotherContract; + let contract: EventsContract; let provider: EthereumProvider; let ethers: HardhatEthers; @@ -76,6 +82,11 @@ describe("INTEGRATION: changeTokenBalance and changeTokenBalances matchers", () "Matchers", ); matchers = await Matchers.deploy(); + + otherContract = await ethers.deployContract("AnotherContract"); + contract = await ( + await ethers.getContractFactory<[string], EventsContract>("Events") + ).deploy(await otherContract.getAddress()); }); describe("transaction that doesn't move tokens", () => { @@ -647,30 +658,38 @@ describe("INTEGRATION: changeTokenBalance and changeTokenBalances matchers", () ); }); - // it("changeTokenBalance: Should throw if chained to another non-chainable method", () => { - // expect(() => - // expect(mockToken.transfer(receiver.address, 50)) - // .to.emit(mockToken, "SomeEvent") - // .and.to.changeTokenBalance(mockToken, receiver, 50), - // ).to.throw( - // /The matcher 'changeTokenBalance' cannot be chained after 'emit'./, - // ); - // }); - - // it("changeTokenBalances: should throw if chained to another non-chainable method", () => { - // expect(() => - // expect(mockToken.transfer(provider, receiver.address, 50)) - // .to.be.reverted(ethers) - // .and.to.changeTokenBalances( - // provider, - // mockToken, - // [sender, receiver], - // [-50, 100], - // ), - // ).to.throw( - // /The matcher 'changeTokenBalances' cannot be chained after 'reverted'./, - // ); - // }); + it("changeTokenBalance: Should throw if chained to another non-chainable method", () => { + assertThrowsHardhatError( + () => + expect(contract.emitWithoutArgs()) + .to.emit(contract, "WithoutArgs") + .and.to.changeTokenBalance(provider, mockToken, receiver, 0), + HardhatError.ERRORS.CHAI_MATCHERS.MATCHER_CANNOT_BE_CHAINED_AFTER, + { + matcher: "changeTokenBalance", + previousMatcher: "emit", + }, + ); + }); + + it("changeTokenBalances: should throw if chained to another non-chainable method", () => { + assertThrowsHardhatError( + () => + expect(matchers.revertWithCustomErrorWithInt(1)) + .to.be.reverted(ethers) + .and.to.changeTokenBalances( + provider, + mockToken, + [sender, receiver], + [-50, 100], + ), + HardhatError.ERRORS.CHAI_MATCHERS.MATCHER_CANNOT_BE_CHAINED_AFTER, + { + matcher: "changeTokenBalances", + previousMatcher: "reverted", + }, + ); + }); }); }); diff --git a/v-next/hardhat-chai-matchers/test/reverted/reverted.ts b/v-next/hardhat-chai-matchers/test/reverted/reverted.ts index 6ab026e2e1..4dfb029ca8 100644 --- a/v-next/hardhat-chai-matchers/test/reverted/reverted.ts +++ b/v-next/hardhat-chai-matchers/test/reverted/reverted.ts @@ -11,6 +11,7 @@ import { HardhatError } from "@ignored/hardhat-vnext-errors"; import hardhatEthersPlugin from "@ignored/hardhat-vnext-ethers"; import { assertRejectsWithHardhatError, + assertThrowsHardhatError, useFixtureProject, } from "@nomicfoundation/hardhat-test-utils"; import { AssertionError, expect } from "chai"; @@ -196,63 +197,82 @@ describe("INTEGRATION: Reverted", () => { ); }); - // it("reverted: should throw if chained to another non-chainable method", ()=>{ - // const txPromise = mineRevertedTransaction(provider, ethers, matchers); - - // expect(() => - // expect(txPromise) - // .to.be.revertedWith("an error message") - // .and.to.be.reverted(ethers), - // ).to.throw( - // /The matcher 'reverted' cannot be chained after 'revertedWith'./, - // ); - // }); - - // it("revertedWith: should throw if chained to another non-chainable method", ()=>{ - // const txPromise = mineRevertedTransaction(provider, ethers, matchers); - - // expect(() => - // expect(txPromise) - // .to.be.revertedWithCustomError(matchers, "SomeCustomError") - // .and.to.be.revertedWith("an error message"), - // ).to.throw( - // /The matcher 'revertedWith' cannot be chained after 'revertedWithCustomError'./, - // ); - // }); - - // it("revertedWithCustomError: should throw if chained to another non-chainable method", ()=>{ - // const txPromise = mineRevertedTransaction(provider, ethers, matchers); - // expect(() => - // expect(txPromise) - // .to.be.revertedWithoutReason() - // .and.to.be.revertedWithCustomError(matchers, "SomeCustomError"), - // ).to.throw( - // /The matcher 'revertedWithCustomError' cannot be chained after 'revertedWithoutReason'./, - // ); - // }); - - // it("revertedWithoutReason: should throw if chained to another non-chainable method", ()=>{ - // const txPromise = mineRevertedTransaction(provider, ethers, matchers); - // expect(() => - // expect(txPromise) - // .to.be.revertedWithPanic() - // .and.to.be.revertedWithoutReason(), - // ).to.throw( - // /The matcher 'revertedWithoutReason' cannot be chained after 'revertedWithPanic'./, - // ); - // }); - - // it("revertedWithPanic: should throw if chained to another non-chainable method", async ()=>{ - // const [sender] = await ethers.getSigners(); - // const txPromise = mineRevertedTransaction(provider, ethers, matchers); - // expect(() => - // expect(txPromise) - // .to.changeEtherBalance(sender, "-200") - // .and.to.be.revertedWithPanic(), - // ).to.throw( - // /The matcher 'revertedWithPanic' cannot be chained after 'changeEtherBalance'./, - // ); - // }); + it("reverted: should throw if chained to another non-chainable method", () => { + assertThrowsHardhatError( + () => + expect(matchers.revertsWith("bar")) + .to.be.revertedWith("bar") + .and.to.be.reverted(ethers), + HardhatError.ERRORS.CHAI_MATCHERS.MATCHER_CANNOT_BE_CHAINED_AFTER, + { + matcher: "reverted", + previousMatcher: "revertedWith", + }, + ); + }); + + it("revertedWith: should throw if chained to another non-chainable method", () => { + assertThrowsHardhatError( + () => + expect(matchers.revertWithCustomErrorWithInt(1)) + .to.be.revertedWithCustomError(matchers, "CustomErrorWithInt") + .and.to.be.revertedWith("an error message"), + HardhatError.ERRORS.CHAI_MATCHERS.MATCHER_CANNOT_BE_CHAINED_AFTER, + { + matcher: "revertedWith", + previousMatcher: "revertedWithCustomError", + }, + ); + }); + + it("revertedWithCustomError: should throw if chained to another non-chainable method", () => { + assertThrowsHardhatError( + () => + expect(matchers.revertsWithoutReason()) + .to.be.revertedWithoutReason(ethers) + .and.to.be.revertedWithCustomError(matchers, "SomeCustomError"), + HardhatError.ERRORS.CHAI_MATCHERS.MATCHER_CANNOT_BE_CHAINED_AFTER, + { + matcher: "revertedWithCustomError", + previousMatcher: "revertedWithoutReason", + }, + ); + }); + + it("revertedWithoutReason: should throw if chained to another non-chainable method", () => { + assertThrowsHardhatError( + () => + expect(matchers.panicAssert()) + .to.be.revertedWithPanic() + .and.to.be.revertedWithoutReason(ethers), + HardhatError.ERRORS.CHAI_MATCHERS.MATCHER_CANNOT_BE_CHAINED_AFTER, + { + matcher: "revertedWithoutReason", + previousMatcher: "revertedWithPanic", + }, + ); + }); + + it("revertedWithPanic: should throw if chained to another non-chainable method", async () => { + const [sender, receiver] = await ethers.getSigners(); + + assertThrowsHardhatError( + () => + expect(() => + sender.sendTransaction({ + to: receiver, + value: 200, + }), + ) + .to.changeEtherBalance(provider, sender, "-200") + .and.to.be.revertedWithPanic(), + HardhatError.ERRORS.CHAI_MATCHERS.MATCHER_CANNOT_BE_CHAINED_AFTER, + { + matcher: "revertedWithPanic", + previousMatcher: "changeEtherBalance", + }, + ); + }); }); describe("with a TxReceipt as its subject", () => { diff --git a/v-next/hardhat-chai-matchers/test/reverted/revertedWithCustomError.ts b/v-next/hardhat-chai-matchers/test/reverted/revertedWithCustomError.ts index 2125eaa92b..06cda04627 100644 --- a/v-next/hardhat-chai-matchers/test/reverted/revertedWithCustomError.ts +++ b/v-next/hardhat-chai-matchers/test/reverted/revertedWithCustomError.ts @@ -408,18 +408,16 @@ describe("INTEGRATION: Reverted with custom error", () => { ); }); - // it("should fail if both emit and revertedWithCustomError are called", async () => { - // await assertRejectsWithHardhatError( - // () => - // expect(matchers.revertWithSomeCustomError()) - // .to.emit(matchers, "SomeEvent") - // .and.to.be.revertedWithCustomError(matchers, "SomeCustomError") - // .withArgs(1), - // HardhatError.ERRORS.CHAI_MATCHERS.MATCHER_CANNOT_BE_CHAINED_AFTER, - // { - // matcher: "revertedWithCustomError", - // previousMatcher: "emit", - // }, + // See https://github.com/NomicFoundation/hardhat/issues/4235 + // it.skip("should fail if both emit and revertedWithCustomError are called", async () => { + // expect(() => + // expect(matchers.revertWithSomeCustomError()) + // .to.emit(matchers, "SomeEvent") + // .and.to.be.revertedWithCustomError(matchers, "SomeCustomError") + // .withArgs(1), + // ).to.throw( + // Error, + // "withArgs called with both .emit and .revertedWithCustomError, but these assertions cannot be combined", // ); // }); From 0080dec9d0bd117fc9d2856fdc4017a87f604da3 Mon Sep 17 00:00:00 2001 From: ChrisD <18092467+ChristopherDedominici@users.noreply.github.com> Date: Wed, 20 Nov 2024 16:59:32 +0100 Subject: [PATCH 18/61] rename fixture-folder --- .../{test-project => hook-initialization}/hardhat.config.ts | 0 .../{test-project => hook-initialization}/test/test.ts | 0 v-next/hardhat-chai-matchers/test/index.ts | 4 ++-- 3 files changed, 2 insertions(+), 2 deletions(-) rename v-next/hardhat-chai-matchers/test/fixture-projects/{test-project => hook-initialization}/hardhat.config.ts (100%) rename v-next/hardhat-chai-matchers/test/fixture-projects/{test-project => hook-initialization}/test/test.ts (100%) diff --git a/v-next/hardhat-chai-matchers/test/fixture-projects/test-project/hardhat.config.ts b/v-next/hardhat-chai-matchers/test/fixture-projects/hook-initialization/hardhat.config.ts similarity index 100% rename from v-next/hardhat-chai-matchers/test/fixture-projects/test-project/hardhat.config.ts rename to v-next/hardhat-chai-matchers/test/fixture-projects/hook-initialization/hardhat.config.ts diff --git a/v-next/hardhat-chai-matchers/test/fixture-projects/test-project/test/test.ts b/v-next/hardhat-chai-matchers/test/fixture-projects/hook-initialization/test/test.ts similarity index 100% rename from v-next/hardhat-chai-matchers/test/fixture-projects/test-project/test/test.ts rename to v-next/hardhat-chai-matchers/test/fixture-projects/hook-initialization/test/test.ts diff --git a/v-next/hardhat-chai-matchers/test/index.ts b/v-next/hardhat-chai-matchers/test/index.ts index 74d4bb32c8..e446295bb4 100644 --- a/v-next/hardhat-chai-matchers/test/index.ts +++ b/v-next/hardhat-chai-matchers/test/index.ts @@ -5,11 +5,11 @@ import { createHardhatRuntimeEnvironment } from "@ignored/hardhat-vnext/hre"; import { useFixtureProject } from "@nomicfoundation/hardhat-test-utils"; describe("hardhat-chai-matchers plugin correctly initialized", () => { - useFixtureProject("test-project"); + useFixtureProject("hook-initialization"); it("should load the plugin via hook and use the functionalities in a mocha test", async () => { const hardhatConfig = await import( - "./fixture-projects/test-project/hardhat.config.js" + "./fixture-projects/hook-initialization/hardhat.config.js" ); const hre = await createHardhatRuntimeEnvironment(hardhatConfig.default); From 80d5913e5c86822814e8e5100d97c3f23eaba065 Mon Sep 17 00:00:00 2001 From: ChrisD <18092467+ChristopherDedominici@users.noreply.github.com> Date: Thu, 21 Nov 2024 11:04:11 +0100 Subject: [PATCH 19/61] add plugin to example project --- pnpm-lock.yaml | 9 +++++++++ v-next/example-project/hardhat.config.ts | 2 ++ v-next/example-project/package.json | 7 +++++-- v-next/example-project/test/mocha/mocha-test.ts | 16 ++++++++++++++++ v-next/hardhat-chai-matchers/package.json | 5 +++-- v-next/hardhat-chai-matchers/src/index.ts | 2 ++ .../src/{types.d.ts => type-extensions.d.ts} | 0 7 files changed, 37 insertions(+), 4 deletions(-) rename v-next/hardhat-chai-matchers/src/{types.d.ts => type-extensions.d.ts} (100%) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4456ec8c89..843689cf3a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1428,6 +1428,9 @@ importers: '@ignored/hardhat-vnext': specifier: workspace:^3.0.0-next.16 version: link:../hardhat + '@ignored/hardhat-vnext-chai-matchers': + specifier: workspace:^3.0.0-next.12 + version: link:../hardhat-chai-matchers '@ignored/hardhat-vnext-ethers': specifier: workspace:^3.0.0-next.12 version: link:../hardhat-ethers @@ -1449,12 +1452,18 @@ importers: '@openzeppelin/contracts': specifier: 5.1.0 version: 5.1.0 + '@types/chai': + specifier: ^4.2.0 + version: 4.3.20 '@types/mocha': specifier: '>=9.1.0' version: 10.0.9 '@types/node': specifier: ^20.14.9 version: 20.17.1 + chai: + specifier: ^5.1.2 + version: 5.1.2 forge-std: specifier: foundry-rs/forge-std#v1.9.4 version: https://codeload.github.com/foundry-rs/forge-std/tar.gz/1eea5bae12ae557d589f9f0f0edae2faa47cb262 diff --git a/v-next/example-project/hardhat.config.ts b/v-next/example-project/hardhat.config.ts index b65dca7018..3c284b0186 100644 --- a/v-next/example-project/hardhat.config.ts +++ b/v-next/example-project/hardhat.config.ts @@ -15,6 +15,7 @@ import HardhatKeystore from "@ignored/hardhat-vnext-keystore"; import HardhatViem from "@ignored/hardhat-vnext-viem"; import hardhatNetworkHelpersPlugin from "@ignored/hardhat-vnext-network-helpers"; import hardhatEthersPlugin from "@ignored/hardhat-vnext-ethers"; +import hardhatChaiMatchersPlugin from "@ignored/hardhat-vnext-chai-matchers"; util.inspect.defaultOptions.depth = null; @@ -156,6 +157,7 @@ const config: HardhatUserConfig = { hardhatNetworkHelpersPlugin, HardhatNodeTestRunner, HardhatViem, + hardhatChaiMatchersPlugin, ], paths: { tests: { diff --git a/v-next/example-project/package.json b/v-next/example-project/package.json index d882252ffe..d91a1ff113 100644 --- a/v-next/example-project/package.json +++ b/v-next/example-project/package.json @@ -21,6 +21,7 @@ }, "devDependencies": { "@ignored/hardhat-vnext": "workspace:^3.0.0-next.16", + "@ignored/hardhat-vnext-chai-matchers": "workspace:^3.0.0-next.12", "@ignored/hardhat-vnext-ethers": "workspace:^3.0.0-next.12", "@ignored/hardhat-vnext-keystore": "workspace:^3.0.0-next.12", "@ignored/hardhat-vnext-mocha-test-runner": "workspace:^3.0.0-next.12", @@ -28,13 +29,15 @@ "@ignored/hardhat-vnext-node-test-runner": "workspace:^3.0.0-next.12", "@ignored/hardhat-vnext-viem": "workspace:^3.0.0-next.11", "@openzeppelin/contracts": "5.1.0", + "@types/chai": "^4.2.0", "@types/mocha": ">=9.1.0", "@types/node": "^20.14.9", + "chai": "^5.1.2", + "forge-std": "foundry-rs/forge-std#v1.9.4", "mocha": "^10.0.0", "prettier": "3.2.5", "rimraf": "^5.0.5", "typescript": "~5.5.0", - "viem": "^2.21.42", - "forge-std": "foundry-rs/forge-std#v1.9.4" + "viem": "^2.21.42" } } diff --git a/v-next/example-project/test/mocha/mocha-test.ts b/v-next/example-project/test/mocha/mocha-test.ts index e9e35fd3d0..2251b827b4 100644 --- a/v-next/example-project/test/mocha/mocha-test.ts +++ b/v-next/example-project/test/mocha/mocha-test.ts @@ -1,8 +1,24 @@ import assert from "node:assert/strict"; import { describe, it } from "mocha"; +import { expect } from "chai"; + +import { anyUint } from "@ignored/hardhat-vnext-chai-matchers/withArgs"; +import { PANIC_CODES } from "@ignored/hardhat-vnext-chai-matchers/panic"; + describe("Mocha test", () => { it("should work", () => { assert.equal(1 + 1, 2); }); }); + +describe("Mocha test with chai-matchers", () => { + it("should import variables from the chai-matchers package", () => { + expect(anyUint).to.be.a("function"); + expect(PANIC_CODES.ASSERTION_ERROR).to.be.a("number"); + }); + + it("should have the hardhat additional matchers", () => { + expect("0x0000010AB").to.not.hexEqual("0x0010abc"); + }); +}); diff --git a/v-next/hardhat-chai-matchers/package.json b/v-next/hardhat-chai-matchers/package.json index a781a4a9f1..bfbeda2afb 100644 --- a/v-next/hardhat-chai-matchers/package.json +++ b/v-next/hardhat-chai-matchers/package.json @@ -14,7 +14,8 @@ "types": "dist/src/index.d.ts", "exports": { ".": "./dist/src/index.js", - "./types": "./dist/src/types.js" + "./panic": "./dist/src/panic.js", + "./withArgs": "./dist/src/withArgs.js" }, "keywords": [ "ethereum", @@ -32,7 +33,7 @@ "test:coverage": "c8 --reporter html --reporter text --all --exclude test --exclude src/internal/types.ts --exclude src/internal/ui/direct-user-interruption-manager.ts --src src node --import tsx/esm --test --test-reporter=@ignored/hardhat-vnext-node-test-reporter \"test/!(fixture-projects|helpers)/**/*.ts\"", "pretest": "pnpm build", "pretest:only": "pnpm build", - "build": "tsc --build .", + "build": "tsc --build . && cp src/type-extensions.d.ts dist/src/type-extensions.d.ts", "prepublishOnly": "pnpm build", "clean": "rimraf dist" }, diff --git a/v-next/hardhat-chai-matchers/src/index.ts b/v-next/hardhat-chai-matchers/src/index.ts index 3b87f57d46..d100005b49 100644 --- a/v-next/hardhat-chai-matchers/src/index.ts +++ b/v-next/hardhat-chai-matchers/src/index.ts @@ -1,5 +1,7 @@ import type { HardhatPlugin } from "@ignored/hardhat-vnext/types/plugins"; +import "./type-extensions.d.js"; + const hardhatChaiMatchersPlugin: HardhatPlugin = { id: "hardhat-chai-matchers", hookHandlers: { diff --git a/v-next/hardhat-chai-matchers/src/types.d.ts b/v-next/hardhat-chai-matchers/src/type-extensions.d.ts similarity index 100% rename from v-next/hardhat-chai-matchers/src/types.d.ts rename to v-next/hardhat-chai-matchers/src/type-extensions.d.ts From aac4389a1650a8fc619c341c9a71891aab447559 Mon Sep 17 00:00:00 2001 From: ChrisD <18092467+ChristopherDedominici@users.noreply.github.com> Date: Thu, 21 Nov 2024 11:22:41 +0100 Subject: [PATCH 20/61] fix ethers version --- pnpm-lock.yaml | 5 ++++- v-next/example-project/package.json | 1 + v-next/hardhat-chai-matchers/package.json | 2 +- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 843689cf3a..893f90df83 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1464,6 +1464,9 @@ importers: chai: specifier: ^5.1.2 version: 5.1.2 + ethers: + specifier: ^6.13.2 + version: 6.13.4 forge-std: specifier: foundry-rs/forge-std#v1.9.4 version: https://codeload.github.com/foundry-rs/forge-std/tar.gz/1eea5bae12ae557d589f9f0f0edae2faa47cb262 @@ -1625,7 +1628,7 @@ importers: specifier: ^8.0.0 version: 8.0.0(chai@5.1.2) ethers: - specifier: ^6.13.4 + specifier: ^6.13.2 version: 6.13.4 devDependencies: '@eslint-community/eslint-plugin-eslint-comments': diff --git a/v-next/example-project/package.json b/v-next/example-project/package.json index d91a1ff113..9f04f620fa 100644 --- a/v-next/example-project/package.json +++ b/v-next/example-project/package.json @@ -33,6 +33,7 @@ "@types/mocha": ">=9.1.0", "@types/node": "^20.14.9", "chai": "^5.1.2", + "ethers": "^6.13.2", "forge-std": "foundry-rs/forge-std#v1.9.4", "mocha": "^10.0.0", "prettier": "3.2.5", diff --git a/v-next/hardhat-chai-matchers/package.json b/v-next/hardhat-chai-matchers/package.json index bfbeda2afb..7b9cfd0a8f 100644 --- a/v-next/hardhat-chai-matchers/package.json +++ b/v-next/hardhat-chai-matchers/package.json @@ -77,6 +77,6 @@ "@ignored/hardhat-vnext-ethers": "workspace:^3.0.0-next.12", "@ignored/hardhat-vnext-mocha-test-runner": "workspace:^3.0.0-next.12", "chai": "^5.1.2", - "ethers": "^6.13.4" + "ethers": "^6.13.2" } } From b9f39be5765ae3b1611f27ebb6e1d8bde183eb4b Mon Sep 17 00:00:00 2001 From: ChrisD <18092467+ChristopherDedominici@users.noreply.github.com> Date: Thu, 21 Nov 2024 11:23:54 +0100 Subject: [PATCH 21/61] move dep from peer to dependencies --- v-next/hardhat-chai-matchers/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/v-next/hardhat-chai-matchers/package.json b/v-next/hardhat-chai-matchers/package.json index 7b9cfd0a8f..0f63c9fbd9 100644 --- a/v-next/hardhat-chai-matchers/package.json +++ b/v-next/hardhat-chai-matchers/package.json @@ -68,13 +68,13 @@ }, "dependencies": { "@ignored/hardhat-vnext-errors": "workspace:^3.0.0-next.15", + "@ignored/hardhat-vnext-ethers": "workspace:^3.0.0-next.12", "@ignored/hardhat-vnext-utils": "workspace:^3.0.0-next.15", "@types/chai-as-promised": "^8.0.1", "chai-as-promised": "^8.0.0" }, "peerDependencies": { "@ignored/hardhat-vnext": "workspace:^3.0.0-next.16", - "@ignored/hardhat-vnext-ethers": "workspace:^3.0.0-next.12", "@ignored/hardhat-vnext-mocha-test-runner": "workspace:^3.0.0-next.12", "chai": "^5.1.2", "ethers": "^6.13.2" From 7b2fe02bdb95688dccfec0b52b3bb7e447af7fd1 Mon Sep 17 00:00:00 2001 From: ChrisD <18092467+ChristopherDedominici@users.noreply.github.com> Date: Thu, 21 Nov 2024 11:48:28 +0100 Subject: [PATCH 22/61] update tsconfig with dependencies --- v-next/hardhat-chai-matchers/tsconfig.json | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/v-next/hardhat-chai-matchers/tsconfig.json b/v-next/hardhat-chai-matchers/tsconfig.json index 47b339df71..75e99c964a 100644 --- a/v-next/hardhat-chai-matchers/tsconfig.json +++ b/v-next/hardhat-chai-matchers/tsconfig.json @@ -7,6 +7,13 @@ { "path": "../hardhat-errors" }, + { + "path": "../hardhat-ethers" + }, + + { + "path": "../hardhat-mocha-test-runner" + }, { "path": "../hardhat-node-test-reporter" }, From d8c8b3b90f1423dd32bd3da4d3e61d1a996cd178 Mon Sep 17 00:00:00 2001 From: ChrisD <18092467+ChristopherDedominici@users.noreply.github.com> Date: Thu, 21 Nov 2024 17:30:57 +0100 Subject: [PATCH 23/61] cleaning: rename files and clean code --- .../src/internal/add-chai-matchers.ts | 45 ++++- .../src/internal/deep-equal.ts | 11 - .../src/internal/hardhatChaiMatchers.ts | 38 ---- .../src/internal/hook-handlers/mocha.ts | 8 +- .../internal/{ => matchers}/addressable.ts | 2 +- .../src/internal/{ => matchers}/big-number.ts | 50 +++-- .../{ => matchers}/changeEtherBalance.ts | 13 +- .../{ => matchers}/changeEtherBalances.ts | 16 +- .../{ => matchers}/changeTokenBalance.ts | 10 +- .../src/internal/{ => matchers}/emit.ts | 14 +- .../src/internal/{ => matchers}/hexEqual.ts | 0 .../internal/{ => matchers}/properAddress.ts | 0 .../src/internal/{ => matchers}/properHex.ts | 0 .../{ => matchers}/properPrivateKey.ts | 0 .../internal/{ => matchers}/reverted/panic.ts | 0 .../{ => matchers}/reverted/reverted.ts | 7 +- .../{ => matchers}/reverted/revertedWith.ts | 6 +- .../reverted/revertedWithCustomError.ts | 13 +- .../reverted/revertedWithPanic.ts | 6 +- .../reverted/revertedWithoutReason.ts | 6 +- .../internal/{ => matchers}/reverted/utils.ts | 0 .../src/internal/{ => matchers}/withArgs.ts | 10 +- .../src/internal/{misc => utils}/account.ts | 0 .../internal/{utils.ts => utils/asserts.ts} | 61 +----- .../src/internal/{misc => utils}/balance.ts | 3 +- .../src/internal/utils/bigint.ts | 3 + .../src/internal/utils/deep-equal.ts | 17 ++ .../src/internal/{ => utils}/ordinal.ts | 0 .../src/internal/utils/prevent-chaining.ts | 33 +++ .../src/internal/{ => utils}/typed.ts | 0 v-next/hardhat-chai-matchers/src/panic.ts | 2 +- v-next/hardhat-chai-matchers/src/withArgs.ts | 2 +- .../hardhat-chai-matchers/test/addressable.ts | 4 +- .../hardhat-chai-matchers/test/big-number.ts | 189 ++++++------------ .../test/changeEtherBalance.ts | 6 +- .../test/changeEtherBalances.ts | 6 +- .../test/changeTokenBalance.ts | 8 +- v-next/hardhat-chai-matchers/test/events.ts | 4 +- v-next/hardhat-chai-matchers/test/hexEqual.ts | 4 +- v-next/hardhat-chai-matchers/test/panic.ts | 2 +- .../test/properAddress.ts | 4 +- .../hardhat-chai-matchers/test/properHex.ts | 4 +- .../test/properPrivateKey.ts | 6 +- .../test/reverted/reverted.ts | 4 +- .../test/reverted/revertedWith.ts | 3 +- .../test/reverted/revertedWithCustomError.ts | 3 +- .../test/reverted/revertedWithPanic.ts | 4 +- .../test/reverted/revertedWithoutReason.ts | 3 +- 48 files changed, 283 insertions(+), 347 deletions(-) delete mode 100644 v-next/hardhat-chai-matchers/src/internal/deep-equal.ts delete mode 100644 v-next/hardhat-chai-matchers/src/internal/hardhatChaiMatchers.ts rename v-next/hardhat-chai-matchers/src/internal/{ => matchers}/addressable.ts (97%) rename v-next/hardhat-chai-matchers/src/internal/{ => matchers}/big-number.ts (86%) rename v-next/hardhat-chai-matchers/src/internal/{ => matchers}/changeEtherBalance.ts (92%) rename v-next/hardhat-chai-matchers/src/internal/{ => matchers}/changeEtherBalances.ts (92%) rename v-next/hardhat-chai-matchers/src/internal/{ => matchers}/changeTokenBalance.ts (97%) rename v-next/hardhat-chai-matchers/src/internal/{ => matchers}/emit.ts (94%) rename v-next/hardhat-chai-matchers/src/internal/{ => matchers}/hexEqual.ts (100%) rename v-next/hardhat-chai-matchers/src/internal/{ => matchers}/properAddress.ts (100%) rename v-next/hardhat-chai-matchers/src/internal/{ => matchers}/properHex.ts (100%) rename v-next/hardhat-chai-matchers/src/internal/{ => matchers}/properPrivateKey.ts (100%) rename v-next/hardhat-chai-matchers/src/internal/{ => matchers}/reverted/panic.ts (100%) rename v-next/hardhat-chai-matchers/src/internal/{ => matchers}/reverted/reverted.ts (95%) rename v-next/hardhat-chai-matchers/src/internal/{ => matchers}/reverted/revertedWith.ts (94%) rename v-next/hardhat-chai-matchers/src/internal/{ => matchers}/reverted/revertedWithCustomError.ts (96%) rename v-next/hardhat-chai-matchers/src/internal/{ => matchers}/reverted/revertedWithPanic.ts (95%) rename v-next/hardhat-chai-matchers/src/internal/{ => matchers}/reverted/revertedWithoutReason.ts (91%) rename v-next/hardhat-chai-matchers/src/internal/{ => matchers}/reverted/utils.ts (100%) rename v-next/hardhat-chai-matchers/src/internal/{ => matchers}/withArgs.ts (94%) rename v-next/hardhat-chai-matchers/src/internal/{misc => utils}/account.ts (100%) rename v-next/hardhat-chai-matchers/src/internal/{utils.ts => utils/asserts.ts} (70%) rename v-next/hardhat-chai-matchers/src/internal/{misc => utils}/balance.ts (94%) create mode 100644 v-next/hardhat-chai-matchers/src/internal/utils/bigint.ts create mode 100644 v-next/hardhat-chai-matchers/src/internal/utils/deep-equal.ts rename v-next/hardhat-chai-matchers/src/internal/{ => utils}/ordinal.ts (100%) create mode 100644 v-next/hardhat-chai-matchers/src/internal/utils/prevent-chaining.ts rename v-next/hardhat-chai-matchers/src/internal/{ => utils}/typed.ts (100%) diff --git a/v-next/hardhat-chai-matchers/src/internal/add-chai-matchers.ts b/v-next/hardhat-chai-matchers/src/internal/add-chai-matchers.ts index a61ae0779a..b7512fcc39 100644 --- a/v-next/hardhat-chai-matchers/src/internal/add-chai-matchers.ts +++ b/v-next/hardhat-chai-matchers/src/internal/add-chai-matchers.ts @@ -1,7 +1,46 @@ import { use } from "chai"; import chaiAsPromised from "chai-as-promised"; -import { hardhatChaiMatchers } from "./hardhatChaiMatchers.js"; +import { supportAddressable } from "./matchers/addressable.js"; +import { supportBigNumber } from "./matchers/big-number.js"; +import { supportChangeEtherBalance } from "./matchers/changeEtherBalance.js"; +import { supportChangeEtherBalances } from "./matchers/changeEtherBalances.js"; +import { supportChangeTokenBalance } from "./matchers/changeTokenBalance.js"; +import { supportEmit } from "./matchers/emit.js"; +import { supportHexEqual } from "./matchers/hexEqual.js"; +import { supportProperAddress } from "./matchers/properAddress.js"; +import { supportProperHex } from "./matchers/properHex.js"; +import { supportProperPrivateKey } from "./matchers/properPrivateKey.js"; +import { supportReverted } from "./matchers/reverted/reverted.js"; +import { supportRevertedWith } from "./matchers/reverted/revertedWith.js"; +import { supportRevertedWithCustomError } from "./matchers/reverted/revertedWithCustomError.js"; +import { supportRevertedWithPanic } from "./matchers/reverted/revertedWithPanic.js"; +import { supportRevertedWithoutReason } from "./matchers/reverted/revertedWithoutReason.js"; +import { supportWithArgs } from "./matchers/withArgs.js"; -use(hardhatChaiMatchers); -use(chaiAsPromised); +export function addChaiMatchers(): void { + use(hardhatChaiMatchers); + use(chaiAsPromised); +} + +function hardhatChaiMatchers( + chai: Chai.ChaiStatic, + chaiUtils: Chai.ChaiUtils, +): void { + supportAddressable(chai.Assertion, chaiUtils); + supportBigNumber(chai.Assertion, chaiUtils); + supportEmit(chai.Assertion, chaiUtils); + supportHexEqual(chai.Assertion); + supportProperAddress(chai.Assertion); + supportProperHex(chai.Assertion); + supportProperPrivateKey(chai.Assertion); + supportChangeEtherBalance(chai.Assertion, chaiUtils); + supportChangeEtherBalances(chai.Assertion, chaiUtils); + supportChangeTokenBalance(chai.Assertion, chaiUtils); + supportReverted(chai.Assertion, chaiUtils); + supportRevertedWith(chai.Assertion, chaiUtils); + supportRevertedWithCustomError(chai.Assertion, chaiUtils); + supportRevertedWithPanic(chai.Assertion, chaiUtils); + supportRevertedWithoutReason(chai.Assertion, chaiUtils); + supportWithArgs(chai.Assertion, chaiUtils); +} diff --git a/v-next/hardhat-chai-matchers/src/internal/deep-equal.ts b/v-next/hardhat-chai-matchers/src/internal/deep-equal.ts deleted file mode 100644 index e0c0b3bada..0000000000 --- a/v-next/hardhat-chai-matchers/src/internal/deep-equal.ts +++ /dev/null @@ -1,11 +0,0 @@ -// eslint-disable-next-line no-restricted-imports -- we want to cases like: 1n === 1 -import assert from "node:assert"; - -export function deepEqual(a: unknown, b: unknown): boolean { - try { - assert.deepEqual(a, b); - return true; - } catch (e) { - return false; - } -} diff --git a/v-next/hardhat-chai-matchers/src/internal/hardhatChaiMatchers.ts b/v-next/hardhat-chai-matchers/src/internal/hardhatChaiMatchers.ts deleted file mode 100644 index 29a4155731..0000000000 --- a/v-next/hardhat-chai-matchers/src/internal/hardhatChaiMatchers.ts +++ /dev/null @@ -1,38 +0,0 @@ -import { supportAddressable } from "./addressable.js"; -import { supportBigNumber } from "./big-number.js"; -import { supportChangeEtherBalance } from "./changeEtherBalance.js"; -import { supportChangeEtherBalances } from "./changeEtherBalances.js"; -import { supportChangeTokenBalance } from "./changeTokenBalance.js"; -import { supportEmit } from "./emit.js"; -import { supportHexEqual } from "./hexEqual.js"; -import { supportProperAddress } from "./properAddress.js"; -import { supportProperHex } from "./properHex.js"; -import { supportProperPrivateKey } from "./properPrivateKey.js"; -import { supportReverted } from "./reverted/reverted.js"; -import { supportRevertedWith } from "./reverted/revertedWith.js"; -import { supportRevertedWithCustomError } from "./reverted/revertedWithCustomError.js"; -import { supportRevertedWithPanic } from "./reverted/revertedWithPanic.js"; -import { supportRevertedWithoutReason } from "./reverted/revertedWithoutReason.js"; -import { supportWithArgs } from "./withArgs.js"; - -export function hardhatChaiMatchers( - chai: Chai.ChaiStatic, - chaiUtils: Chai.ChaiUtils, -): void { - supportAddressable(chai.Assertion, chaiUtils); - supportBigNumber(chai.Assertion, chaiUtils); - supportEmit(chai.Assertion, chaiUtils); - supportHexEqual(chai.Assertion); - supportProperAddress(chai.Assertion); - supportProperHex(chai.Assertion); - supportProperPrivateKey(chai.Assertion); - supportChangeEtherBalance(chai.Assertion, chaiUtils); - supportChangeEtherBalances(chai.Assertion, chaiUtils); - supportChangeTokenBalance(chai.Assertion, chaiUtils); - supportReverted(chai.Assertion, chaiUtils); - supportRevertedWith(chai.Assertion, chaiUtils); - supportRevertedWithCustomError(chai.Assertion, chaiUtils); - supportRevertedWithPanic(chai.Assertion, chaiUtils); - supportRevertedWithoutReason(chai.Assertion, chaiUtils); - supportWithArgs(chai.Assertion, chaiUtils); -} diff --git a/v-next/hardhat-chai-matchers/src/internal/hook-handlers/mocha.ts b/v-next/hardhat-chai-matchers/src/internal/hook-handlers/mocha.ts index 89a11e5f2c..d7ebaa14a9 100644 --- a/v-next/hardhat-chai-matchers/src/internal/hook-handlers/mocha.ts +++ b/v-next/hardhat-chai-matchers/src/internal/hook-handlers/mocha.ts @@ -3,10 +3,7 @@ import type { MochaHooks, } from "@ignored/hardhat-vnext/types/hooks"; -import { use } from "chai"; -import chaiAsPromised from "chai-as-promised"; - -import { hardhatChaiMatchers } from "../hardhatChaiMatchers.js"; +import { addChaiMatchers } from "../add-chai-matchers.js"; export default async (): Promise> => { const handlers: Partial = { @@ -14,8 +11,7 @@ export default async (): Promise> => { _context: HookContext, _next: (context: HookContext) => Promise, ): Promise { - use(hardhatChaiMatchers); - use(chaiAsPromised); + addChaiMatchers(); return Promise.resolve(); }, diff --git a/v-next/hardhat-chai-matchers/src/internal/addressable.ts b/v-next/hardhat-chai-matchers/src/internal/matchers/addressable.ts similarity index 97% rename from v-next/hardhat-chai-matchers/src/internal/addressable.ts rename to v-next/hardhat-chai-matchers/src/internal/matchers/addressable.ts index f5fa327228..d046d6a283 100644 --- a/v-next/hardhat-chai-matchers/src/internal/addressable.ts +++ b/v-next/hardhat-chai-matchers/src/internal/matchers/addressable.ts @@ -1,7 +1,7 @@ import { assertHardhatInvariant } from "@ignored/hardhat-vnext-errors"; import { isAddress, isAddressable } from "ethers"; -import { tryDereference } from "./typed.js"; +import { tryDereference } from "../utils/typed.js"; export function supportAddressable( Assertion: Chai.AssertionStatic, diff --git a/v-next/hardhat-chai-matchers/src/internal/big-number.ts b/v-next/hardhat-chai-matchers/src/internal/matchers/big-number.ts similarity index 86% rename from v-next/hardhat-chai-matchers/src/internal/big-number.ts rename to v-next/hardhat-chai-matchers/src/internal/matchers/big-number.ts index a43898a2a1..c653e45118 100644 --- a/v-next/hardhat-chai-matchers/src/internal/big-number.ts +++ b/v-next/hardhat-chai-matchers/src/internal/matchers/big-number.ts @@ -1,10 +1,11 @@ import util from "node:util"; import { HardhatError } from "@ignored/hardhat-vnext-errors"; +import { toBigInt } from "@ignored/hardhat-vnext-utils/bigint"; import { AssertionError } from "chai"; -import { deepEqual } from "./deep-equal.js"; -import { isBigNumber, normalizeToBigInt } from "./utils.js"; +import { isBigInt } from "../utils/bigint.js"; +import { deepEqual } from "../utils/deep-equal.js"; export function supportBigNumber( Assertion: Chai.AssertionStatic, @@ -53,12 +54,12 @@ function createLengthOverride( return function (this: Chai.AssertionPrototype, value: any) { const actual = this._obj; - if (isBigNumber(value)) { + if (isBigInt(value)) { const sizeOrLength = actual instanceof Map || actual instanceof Set ? "size" : "length"; - const actualLength = normalizeToBigInt(actual[sizeOrLength]); - const expectedLength = normalizeToBigInt(value); + const actualLength = toBigInt(actual[sizeOrLength]); + const expectedLength = toBigInt(value); this.assert( actualLength === expectedLength, @@ -128,7 +129,7 @@ function overwriteBigNumberFunction( } } - if (Boolean(chaiUtils.flag(this, "doLength")) && isBigNumber(actualArg)) { + if (Boolean(chaiUtils.flag(this, "doLength")) && isBigInt(actualArg)) { const sizeOrLength = expectedFlag instanceof Map || expectedFlag instanceof Set ? "size" @@ -139,8 +140,8 @@ function overwriteBigNumberFunction( return; } - const expected = normalizeToBigInt(expectedFlag[sizeOrLength]); - const actual = normalizeToBigInt(actualArg); + const expected = toBigInt(expectedFlag[sizeOrLength]); + const actual = toBigInt(actualArg); this.assert( compare(functionName, expected, actual), @@ -172,9 +173,9 @@ function overwriteBigNumberFunction( ); chaiUtils.flag(this, "lockSsfi", prevLockSsfi); - } else if (isBigNumber(expectedFlag) || isBigNumber(actualArg)) { - const expected = normalizeToBigInt(expectedFlag); - const actual = normalizeToBigInt(actualArg); + } else if (isBigInt(expectedFlag) || isBigInt(actualArg)) { + const expected = toBigInt(expectedFlag); + const actual = toBigInt(actualArg); this.assert( compare(functionName, expected, actual), @@ -202,14 +203,10 @@ function overwriteBigNumberWithin( const [startArg, finishArg] = args; const expectedFlag = chaiUtils.flag(this, "object"); - if ( - isBigNumber(expectedFlag) || - isBigNumber(startArg) || - isBigNumber(finishArg) - ) { - const expected = normalizeToBigInt(expectedFlag); - const start = normalizeToBigInt(startArg); - const finish = normalizeToBigInt(finishArg); + if (isBigInt(expectedFlag) || isBigInt(startArg) || isBigInt(finishArg)) { + const expected = toBigInt(expectedFlag); + const start = toBigInt(startArg); + const finish = toBigInt(finishArg); this.assert( start <= expected && expected <= finish, `expected ${expected} to be within ${start}..${finish}`, @@ -237,11 +234,10 @@ function overwriteBigNumberCloseTo( const expectedFlag = chaiUtils.flag(this, "object"); if ( - isBigNumber(expectedFlag) || - typeof expectedFlag === "number" || // TODO - isBigNumber(actualArg) || - typeof actualArg === "number" || - isBigNumber(deltaArg) + isBigInt(expectedFlag) || + isBigInt(actualArg) || + isBigInt(deltaArg) || + typeof actualArg === "number" ) { if (deltaArg === undefined) { // eslint-disable-next-line no-restricted-syntax -- keep the original chai error structure @@ -250,9 +246,9 @@ function overwriteBigNumberCloseTo( ); } - const expected = normalizeToBigInt(expectedFlag); - const actual = normalizeToBigInt(actualArg); - const delta = normalizeToBigInt(deltaArg); + const expected = toBigInt(expectedFlag); + const actual = toBigInt(actualArg); + const delta = toBigInt(deltaArg); function abs(i: bigint): bigint { return i < 0 ? BigInt(-1) * i : i; diff --git a/v-next/hardhat-chai-matchers/src/internal/changeEtherBalance.ts b/v-next/hardhat-chai-matchers/src/internal/matchers/changeEtherBalance.ts similarity index 92% rename from v-next/hardhat-chai-matchers/src/internal/changeEtherBalance.ts rename to v-next/hardhat-chai-matchers/src/internal/matchers/changeEtherBalance.ts index b4d3322412..4e1100d891 100644 --- a/v-next/hardhat-chai-matchers/src/internal/changeEtherBalance.ts +++ b/v-next/hardhat-chai-matchers/src/internal/matchers/changeEtherBalance.ts @@ -1,4 +1,4 @@ -import type { BalanceChangeOptions } from "./misc/balance.js"; +import type { BalanceChangeOptions } from "../utils/balance.js"; import type { EthereumProvider } from "@ignored/hardhat-vnext/types/providers"; import type { Addressable } from "ethers/address"; import type { TransactionResponse } from "ethers/providers"; @@ -8,15 +8,14 @@ import { assertHardhatInvariant } from "@ignored/hardhat-vnext-errors"; import { isObject } from "@ignored/hardhat-vnext-utils/lang"; import { toBigInt } from "ethers/utils"; -import { buildAssert } from "../utils.js"; - -import { CHANGE_ETHER_BALANCE_MATCHER } from "./constants.js"; -import { getAddressOf } from "./misc/account.js"; +import { buildAssert } from "../../utils.js"; +import { CHANGE_ETHER_BALANCE_MATCHER } from "../constants.js"; +import { getAddressOf } from "../utils/account.js"; import { assertCanBeConvertedToBigint, assertIsNotNull, - preventAsyncMatcherChaining, -} from "./utils.js"; +} from "../utils/asserts.js"; +import { preventAsyncMatcherChaining } from "../utils/prevent-chaining.js"; export function supportChangeEtherBalance( Assertion: Chai.AssertionStatic, diff --git a/v-next/hardhat-chai-matchers/src/internal/changeEtherBalances.ts b/v-next/hardhat-chai-matchers/src/internal/matchers/changeEtherBalances.ts similarity index 92% rename from v-next/hardhat-chai-matchers/src/internal/changeEtherBalances.ts rename to v-next/hardhat-chai-matchers/src/internal/matchers/changeEtherBalances.ts index c649c10469..c274652f49 100644 --- a/v-next/hardhat-chai-matchers/src/internal/changeEtherBalances.ts +++ b/v-next/hardhat-chai-matchers/src/internal/matchers/changeEtherBalances.ts @@ -1,4 +1,4 @@ -import type { BalanceChangeOptions } from "./misc/balance.js"; +import type { BalanceChangeOptions } from "../utils/balance.js"; import type { EthereumProvider } from "@ignored/hardhat-vnext/types/providers"; import type { Addressable } from "ethers/address"; import type { TransactionResponse } from "ethers/providers"; @@ -6,13 +6,13 @@ import type { TransactionResponse } from "ethers/providers"; import { HardhatError } from "@ignored/hardhat-vnext-errors"; import { toBigInt } from "ethers/utils"; -import { buildAssert } from "../utils.js"; - -import { CHANGE_ETHER_BALANCES_MATCHER } from "./constants.js"; -import { getAddressOf } from "./misc/account.js"; -import { getAddresses, getBalances } from "./misc/balance.js"; -import { ordinal } from "./ordinal.js"; -import { assertIsNotNull, preventAsyncMatcherChaining } from "./utils.js"; +import { buildAssert } from "../../utils.js"; +import { CHANGE_ETHER_BALANCES_MATCHER } from "../constants.js"; +import { getAddressOf } from "../utils/account.js"; +import { assertIsNotNull } from "../utils/asserts.js"; +import { getAddresses, getBalances } from "../utils/balance.js"; +import { ordinal } from "../utils/ordinal.js"; +import { preventAsyncMatcherChaining } from "../utils/prevent-chaining.js"; export function supportChangeEtherBalances( Assertion: Chai.AssertionStatic, diff --git a/v-next/hardhat-chai-matchers/src/internal/changeTokenBalance.ts b/v-next/hardhat-chai-matchers/src/internal/matchers/changeTokenBalance.ts similarity index 97% rename from v-next/hardhat-chai-matchers/src/internal/changeTokenBalance.ts rename to v-next/hardhat-chai-matchers/src/internal/matchers/changeTokenBalance.ts index 2018502373..78e8202b81 100644 --- a/v-next/hardhat-chai-matchers/src/internal/changeTokenBalance.ts +++ b/v-next/hardhat-chai-matchers/src/internal/matchers/changeTokenBalance.ts @@ -15,14 +15,14 @@ import { import { isObject } from "@ignored/hardhat-vnext-utils/lang"; import { toBigInt } from "ethers/utils"; -import { buildAssert } from "../utils.js"; - +import { buildAssert } from "../../utils.js"; import { CHANGE_TOKEN_BALANCES_MATCHER, CHANGE_TOKEN_BALANCE_MATCHER, -} from "./constants.js"; -import { getAddressOf } from "./misc/account.js"; -import { assertIsNotNull, preventAsyncMatcherChaining } from "./utils.js"; +} from "../constants.js"; +import { getAddressOf } from "../utils/account.js"; +import { assertIsNotNull } from "../utils/asserts.js"; +import { preventAsyncMatcherChaining } from "../utils/prevent-chaining.js"; export type Token = BaseContract & { balanceOf: BaseContractMethod<[string], bigint, bigint>; diff --git a/v-next/hardhat-chai-matchers/src/internal/emit.ts b/v-next/hardhat-chai-matchers/src/internal/matchers/emit.ts similarity index 94% rename from v-next/hardhat-chai-matchers/src/internal/emit.ts rename to v-next/hardhat-chai-matchers/src/internal/matchers/emit.ts index 5e43bca647..6d680db019 100644 --- a/v-next/hardhat-chai-matchers/src/internal/emit.ts +++ b/v-next/hardhat-chai-matchers/src/internal/matchers/emit.ts @@ -1,4 +1,4 @@ -import type { AssertWithSsfi, Ssfi } from "../utils.js"; +import type { AssertWithSsfi, Ssfi } from "../../utils.js"; import type { EventFragment } from "ethers/abi"; import type { Contract } from "ethers/contract"; import type { Provider, TransactionReceipt } from "ethers/providers"; @@ -9,14 +9,10 @@ import util from "node:util"; import { HardhatError } from "@ignored/hardhat-vnext-errors"; import { AssertionError } from "chai"; -import { buildAssert } from "../utils.js"; - -import { ASSERTION_ABORTED, EMIT_MATCHER } from "./constants.js"; -import { - assertArgsArraysEqual, - assertIsNotNull, - preventAsyncMatcherChaining, -} from "./utils.js"; +import { buildAssert } from "../../utils.js"; +import { ASSERTION_ABORTED, EMIT_MATCHER } from "../constants.js"; +import { assertArgsArraysEqual, assertIsNotNull } from "../utils/asserts.js"; +import { preventAsyncMatcherChaining } from "../utils/prevent-chaining.js"; export const EMIT_CALLED = "emitAssertionCalled"; diff --git a/v-next/hardhat-chai-matchers/src/internal/hexEqual.ts b/v-next/hardhat-chai-matchers/src/internal/matchers/hexEqual.ts similarity index 100% rename from v-next/hardhat-chai-matchers/src/internal/hexEqual.ts rename to v-next/hardhat-chai-matchers/src/internal/matchers/hexEqual.ts diff --git a/v-next/hardhat-chai-matchers/src/internal/properAddress.ts b/v-next/hardhat-chai-matchers/src/internal/matchers/properAddress.ts similarity index 100% rename from v-next/hardhat-chai-matchers/src/internal/properAddress.ts rename to v-next/hardhat-chai-matchers/src/internal/matchers/properAddress.ts diff --git a/v-next/hardhat-chai-matchers/src/internal/properHex.ts b/v-next/hardhat-chai-matchers/src/internal/matchers/properHex.ts similarity index 100% rename from v-next/hardhat-chai-matchers/src/internal/properHex.ts rename to v-next/hardhat-chai-matchers/src/internal/matchers/properHex.ts diff --git a/v-next/hardhat-chai-matchers/src/internal/properPrivateKey.ts b/v-next/hardhat-chai-matchers/src/internal/matchers/properPrivateKey.ts similarity index 100% rename from v-next/hardhat-chai-matchers/src/internal/properPrivateKey.ts rename to v-next/hardhat-chai-matchers/src/internal/matchers/properPrivateKey.ts diff --git a/v-next/hardhat-chai-matchers/src/internal/reverted/panic.ts b/v-next/hardhat-chai-matchers/src/internal/matchers/reverted/panic.ts similarity index 100% rename from v-next/hardhat-chai-matchers/src/internal/reverted/panic.ts rename to v-next/hardhat-chai-matchers/src/internal/matchers/reverted/panic.ts diff --git a/v-next/hardhat-chai-matchers/src/internal/reverted/reverted.ts b/v-next/hardhat-chai-matchers/src/internal/matchers/reverted/reverted.ts similarity index 95% rename from v-next/hardhat-chai-matchers/src/internal/reverted/reverted.ts rename to v-next/hardhat-chai-matchers/src/internal/matchers/reverted/reverted.ts index ff003cc9bb..043ecb6a09 100644 --- a/v-next/hardhat-chai-matchers/src/internal/reverted/reverted.ts +++ b/v-next/hardhat-chai-matchers/src/internal/matchers/reverted/reverted.ts @@ -3,9 +3,10 @@ import type { HardhatEthers } from "@ignored/hardhat-vnext-ethers/types"; import { HardhatError } from "@ignored/hardhat-vnext-errors"; import { toBeHex } from "ethers/utils"; -import { buildAssert } from "../../utils.js"; -import { REVERTED_MATCHER } from "../constants.js"; -import { assertIsNotNull, preventAsyncMatcherChaining } from "../utils.js"; +import { buildAssert } from "../../../utils.js"; +import { REVERTED_MATCHER } from "../../constants.js"; +import { assertIsNotNull } from "../../utils/asserts.js"; +import { preventAsyncMatcherChaining } from "../../utils/prevent-chaining.js"; import { decodeReturnData, diff --git a/v-next/hardhat-chai-matchers/src/internal/reverted/revertedWith.ts b/v-next/hardhat-chai-matchers/src/internal/matchers/reverted/revertedWith.ts similarity index 94% rename from v-next/hardhat-chai-matchers/src/internal/reverted/revertedWith.ts rename to v-next/hardhat-chai-matchers/src/internal/matchers/reverted/revertedWith.ts index 9a8b9c862d..880eb605d5 100644 --- a/v-next/hardhat-chai-matchers/src/internal/reverted/revertedWith.ts +++ b/v-next/hardhat-chai-matchers/src/internal/matchers/reverted/revertedWith.ts @@ -1,9 +1,9 @@ import { HardhatError } from "@ignored/hardhat-vnext-errors"; import { toBeHex } from "ethers/utils"; -import { buildAssert } from "../../utils.js"; -import { REVERTED_WITH_MATCHER } from "../constants.js"; -import { preventAsyncMatcherChaining } from "../utils.js"; +import { buildAssert } from "../../../utils.js"; +import { REVERTED_WITH_MATCHER } from "../../constants.js"; +import { preventAsyncMatcherChaining } from "../../utils/prevent-chaining.js"; import { decodeReturnData, getReturnDataFromError } from "./utils.js"; diff --git a/v-next/hardhat-chai-matchers/src/internal/reverted/revertedWithCustomError.ts b/v-next/hardhat-chai-matchers/src/internal/matchers/reverted/revertedWithCustomError.ts similarity index 96% rename from v-next/hardhat-chai-matchers/src/internal/reverted/revertedWithCustomError.ts rename to v-next/hardhat-chai-matchers/src/internal/matchers/reverted/revertedWithCustomError.ts index 3e9b4624de..ef985a2820 100644 --- a/v-next/hardhat-chai-matchers/src/internal/reverted/revertedWithCustomError.ts +++ b/v-next/hardhat-chai-matchers/src/internal/matchers/reverted/revertedWithCustomError.ts @@ -1,20 +1,17 @@ -import type { Ssfi } from "../../utils.js"; +import type { Ssfi } from "../../../utils.js"; import type { ErrorFragment, Interface } from "ethers/abi"; import type { BaseContract } from "ethers/contract"; import { HardhatError } from "@ignored/hardhat-vnext-errors"; import { toBeHex } from "ethers/utils"; -import { buildAssert } from "../../utils.js"; +import { buildAssert } from "../../../utils.js"; import { ASSERTION_ABORTED, REVERTED_WITH_CUSTOM_ERROR_MATCHER, -} from "../constants.js"; -import { - assertArgsArraysEqual, - assertIsNotNull, - preventAsyncMatcherChaining, -} from "../utils.js"; +} from "../../constants.js"; +import { assertArgsArraysEqual, assertIsNotNull } from "../../utils/asserts.js"; +import { preventAsyncMatcherChaining } from "../../utils/prevent-chaining.js"; import { decodeReturnData, diff --git a/v-next/hardhat-chai-matchers/src/internal/reverted/revertedWithPanic.ts b/v-next/hardhat-chai-matchers/src/internal/matchers/reverted/revertedWithPanic.ts similarity index 95% rename from v-next/hardhat-chai-matchers/src/internal/reverted/revertedWithPanic.ts rename to v-next/hardhat-chai-matchers/src/internal/matchers/reverted/revertedWithPanic.ts index 3067568eec..85dad5f7a9 100644 --- a/v-next/hardhat-chai-matchers/src/internal/reverted/revertedWithPanic.ts +++ b/v-next/hardhat-chai-matchers/src/internal/matchers/reverted/revertedWithPanic.ts @@ -2,9 +2,9 @@ import { HardhatError } from "@ignored/hardhat-vnext-errors"; import { toBigInt } from "@ignored/hardhat-vnext-utils/bigint"; import { toBeHex } from "ethers/utils"; -import { buildAssert } from "../../utils.js"; -import { REVERTED_WITH_PANIC_MATCHER } from "../constants.js"; -import { preventAsyncMatcherChaining } from "../utils.js"; +import { buildAssert } from "../../../utils.js"; +import { REVERTED_WITH_PANIC_MATCHER } from "../../constants.js"; +import { preventAsyncMatcherChaining } from "../../utils/prevent-chaining.js"; import { panicErrorCodeToReason } from "./panic.js"; import { decodeReturnData, getReturnDataFromError } from "./utils.js"; diff --git a/v-next/hardhat-chai-matchers/src/internal/reverted/revertedWithoutReason.ts b/v-next/hardhat-chai-matchers/src/internal/matchers/reverted/revertedWithoutReason.ts similarity index 91% rename from v-next/hardhat-chai-matchers/src/internal/reverted/revertedWithoutReason.ts rename to v-next/hardhat-chai-matchers/src/internal/matchers/reverted/revertedWithoutReason.ts index 810967f777..bed9f0d382 100644 --- a/v-next/hardhat-chai-matchers/src/internal/reverted/revertedWithoutReason.ts +++ b/v-next/hardhat-chai-matchers/src/internal/matchers/reverted/revertedWithoutReason.ts @@ -1,8 +1,8 @@ import { toBeHex } from "ethers/utils"; -import { buildAssert } from "../../utils.js"; -import { REVERTED_WITHOUT_REASON_MATCHER } from "../constants.js"; -import { preventAsyncMatcherChaining } from "../utils.js"; +import { buildAssert } from "../../../utils.js"; +import { REVERTED_WITHOUT_REASON_MATCHER } from "../../constants.js"; +import { preventAsyncMatcherChaining } from "../../utils/prevent-chaining.js"; import { decodeReturnData, getReturnDataFromError } from "./utils.js"; diff --git a/v-next/hardhat-chai-matchers/src/internal/reverted/utils.ts b/v-next/hardhat-chai-matchers/src/internal/matchers/reverted/utils.ts similarity index 100% rename from v-next/hardhat-chai-matchers/src/internal/reverted/utils.ts rename to v-next/hardhat-chai-matchers/src/internal/matchers/reverted/utils.ts diff --git a/v-next/hardhat-chai-matchers/src/internal/withArgs.ts b/v-next/hardhat-chai-matchers/src/internal/matchers/withArgs.ts similarity index 94% rename from v-next/hardhat-chai-matchers/src/internal/withArgs.ts rename to v-next/hardhat-chai-matchers/src/internal/matchers/withArgs.ts index 4bc17642c5..6db6ac820e 100644 --- a/v-next/hardhat-chai-matchers/src/internal/withArgs.ts +++ b/v-next/hardhat-chai-matchers/src/internal/matchers/withArgs.ts @@ -1,14 +1,16 @@ import { HardhatError } from "@ignored/hardhat-vnext-errors"; +import { toBigInt } from "@ignored/hardhat-vnext-utils/bigint"; import { AssertionError } from "chai"; import { isAddressable } from "ethers/address"; -import { ASSERTION_ABORTED } from "./constants.js"; +import { ASSERTION_ABORTED } from "../constants.js"; +import { isBigInt } from "../utils/bigint.js"; + import { emitWithArgs, EMIT_CALLED } from "./emit.js"; import { revertedWithCustomErrorWithArgs, REVERTED_WITH_CUSTOM_ERROR_CALLED, } from "./reverted/revertedWithCustomError.js"; -import { isBigNumber, normalizeToBigInt } from "./utils.js"; /** * A predicate for use with .withArgs(...), to induce chai to accept any value @@ -36,8 +38,8 @@ export function anyUint(i: any): boolean { } return true; - } else if (isBigNumber(i)) { - const bigInt = normalizeToBigInt(i); + } else if (isBigInt(i)) { + const bigInt = toBigInt(i); if (bigInt < 0) { // eslint-disable-next-line no-restricted-syntax -- keep the original chai error structure diff --git a/v-next/hardhat-chai-matchers/src/internal/misc/account.ts b/v-next/hardhat-chai-matchers/src/internal/utils/account.ts similarity index 100% rename from v-next/hardhat-chai-matchers/src/internal/misc/account.ts rename to v-next/hardhat-chai-matchers/src/internal/utils/account.ts diff --git a/v-next/hardhat-chai-matchers/src/internal/utils.ts b/v-next/hardhat-chai-matchers/src/internal/utils/asserts.ts similarity index 70% rename from v-next/hardhat-chai-matchers/src/internal/utils.ts rename to v-next/hardhat-chai-matchers/src/internal/utils/asserts.ts index 6ac55821c0..ba2b2f86b9 100644 --- a/v-next/hardhat-chai-matchers/src/internal/utils.ts +++ b/v-next/hardhat-chai-matchers/src/internal/utils/asserts.ts @@ -1,4 +1,4 @@ -import type { AssertWithSsfi, Ssfi } from "../utils.js"; +import type { AssertWithSsfi, Ssfi } from "../../utils.js"; import { assertHardhatInvariant, @@ -8,7 +8,6 @@ import { ensureError } from "@ignored/hardhat-vnext-utils/error"; import { keccak256 } from "ethers/crypto"; import { getBytes, hexlify, isHexString, toUtf8Bytes } from "ethers/utils"; -import { PREVIOUS_MATCHER_NAME } from "./constants.js"; import { ordinal } from "./ordinal.js"; export function assertIsNotNull( @@ -18,36 +17,6 @@ export function assertIsNotNull( assertHardhatInvariant(value !== null, `${valueName} should not be null`); } -export function preventAsyncMatcherChaining( - context: object, - matcherName: string, - chaiUtils: Chai.ChaiUtils, - allowSelfChaining: boolean = false, -): void { - const previousMatcherName: string | undefined = chaiUtils.flag( - context, - PREVIOUS_MATCHER_NAME, - ); - - if (previousMatcherName === undefined) { - chaiUtils.flag(context, PREVIOUS_MATCHER_NAME, matcherName); - - return; - } - - if (previousMatcherName === matcherName && allowSelfChaining) { - return; - } - - throw new HardhatError( - HardhatError.ERRORS.CHAI_MATCHERS.MATCHER_CANNOT_BE_CHAINED_AFTER, - { - matcher: matcherName, - previousMatcher: previousMatcherName, - }, - ); -} - export function assertArgsArraysEqual( Assertion: Chai.AssertionStatic, expectedArgs: any[], @@ -185,31 +154,3 @@ export function assertCanBeConvertedToBigint( "value should be of type string, number or bigint", ); } - -export function isBigNumber(source: any): boolean { - return typeof source === "bigint"; -} - -export function normalizeToBigInt(source: number | bigint | string): bigint { - switch (typeof source) { - case "number": - if (!Number.isInteger(source)) { - throw new HardhatError(HardhatError.ERRORS.GENERAL.INVALID_BIG_NUMBER, { - message: `${source} is not an integer`, - }); - } - if (!Number.isSafeInteger(source)) { - throw new HardhatError(HardhatError.ERRORS.GENERAL.INVALID_BIG_NUMBER, { - message: `Integer ${source} is unsafe. Consider using ${source}n instead. For more details, see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isSafeInteger`, - }); - } - // `break;` intentionally omitted. fallthrough desired. - case "string": - case "bigint": - return BigInt(source); - default: - throw new HardhatError(HardhatError.ERRORS.GENERAL.INVALID_BIG_NUMBER, { - message: `Unsupported type ${typeof source}`, - }); - } -} diff --git a/v-next/hardhat-chai-matchers/src/internal/misc/balance.ts b/v-next/hardhat-chai-matchers/src/internal/utils/balance.ts similarity index 94% rename from v-next/hardhat-chai-matchers/src/internal/misc/balance.ts rename to v-next/hardhat-chai-matchers/src/internal/utils/balance.ts index 1616dec936..0c7283ffa8 100644 --- a/v-next/hardhat-chai-matchers/src/internal/misc/balance.ts +++ b/v-next/hardhat-chai-matchers/src/internal/utils/balance.ts @@ -4,9 +4,8 @@ import type { Addressable } from "ethers"; import { toBigInt } from "@ignored/hardhat-vnext-utils/bigint"; import { numberToHexString } from "@ignored/hardhat-vnext-utils/hex"; -import { assertCanBeConvertedToBigint } from "../utils.js"; - import { getAddressOf } from "./account.js"; +import { assertCanBeConvertedToBigint } from "./asserts.js"; export interface BalanceChangeOptions { includeFee?: boolean; diff --git a/v-next/hardhat-chai-matchers/src/internal/utils/bigint.ts b/v-next/hardhat-chai-matchers/src/internal/utils/bigint.ts new file mode 100644 index 0000000000..2792bba765 --- /dev/null +++ b/v-next/hardhat-chai-matchers/src/internal/utils/bigint.ts @@ -0,0 +1,3 @@ +export function isBigInt(source: any): boolean { + return typeof source === "bigint"; +} diff --git a/v-next/hardhat-chai-matchers/src/internal/utils/deep-equal.ts b/v-next/hardhat-chai-matchers/src/internal/utils/deep-equal.ts new file mode 100644 index 0000000000..4d06b20903 --- /dev/null +++ b/v-next/hardhat-chai-matchers/src/internal/utils/deep-equal.ts @@ -0,0 +1,17 @@ +// eslint-disable-next-line no-restricted-imports -- we want to cases like: 1n === 1 +import assert from "node:assert"; + +/** + * We cannot use the "deepEqual" method from "hardhat-utils" because it requires the compared values to be strictly identical. + * For example, `1n === 1` evaluates to false. + * In the V2 code, the values were normalized to BigInts before comparison because it was possible to pass a "comparator" function to the "deepEqual" method (this method came from the "deep-eql" package, which is now removed). + * The current solution is to use the "assert.deepEqual" method from "node:assert" with a relaxed comparison (non-strict), allowing `1n === 1` to evaluate as true. + */ +export function deepEqual(a: unknown, b: unknown): boolean { + try { + assert.deepEqual(a, b); + return true; + } catch (e) { + return false; + } +} diff --git a/v-next/hardhat-chai-matchers/src/internal/ordinal.ts b/v-next/hardhat-chai-matchers/src/internal/utils/ordinal.ts similarity index 100% rename from v-next/hardhat-chai-matchers/src/internal/ordinal.ts rename to v-next/hardhat-chai-matchers/src/internal/utils/ordinal.ts diff --git a/v-next/hardhat-chai-matchers/src/internal/utils/prevent-chaining.ts b/v-next/hardhat-chai-matchers/src/internal/utils/prevent-chaining.ts new file mode 100644 index 0000000000..e8df98b871 --- /dev/null +++ b/v-next/hardhat-chai-matchers/src/internal/utils/prevent-chaining.ts @@ -0,0 +1,33 @@ +import { HardhatError } from "@ignored/hardhat-vnext-errors"; + +import { PREVIOUS_MATCHER_NAME } from "../constants.js"; + +export function preventAsyncMatcherChaining( + context: object, + matcherName: string, + chaiUtils: Chai.ChaiUtils, + allowSelfChaining: boolean = false, +): void { + const previousMatcherName: string | undefined = chaiUtils.flag( + context, + PREVIOUS_MATCHER_NAME, + ); + + if (previousMatcherName === undefined) { + chaiUtils.flag(context, PREVIOUS_MATCHER_NAME, matcherName); + + return; + } + + if (previousMatcherName === matcherName && allowSelfChaining) { + return; + } + + throw new HardhatError( + HardhatError.ERRORS.CHAI_MATCHERS.MATCHER_CANNOT_BE_CHAINED_AFTER, + { + matcher: matcherName, + previousMatcher: previousMatcherName, + }, + ); +} diff --git a/v-next/hardhat-chai-matchers/src/internal/typed.ts b/v-next/hardhat-chai-matchers/src/internal/utils/typed.ts similarity index 100% rename from v-next/hardhat-chai-matchers/src/internal/typed.ts rename to v-next/hardhat-chai-matchers/src/internal/utils/typed.ts diff --git a/v-next/hardhat-chai-matchers/src/panic.ts b/v-next/hardhat-chai-matchers/src/panic.ts index 892b650f6a..f750be7bf8 100644 --- a/v-next/hardhat-chai-matchers/src/panic.ts +++ b/v-next/hardhat-chai-matchers/src/panic.ts @@ -1 +1 @@ -export { PANIC_CODES } from "./internal/reverted/panic.js"; +export { PANIC_CODES } from "./internal/matchers/reverted/panic.js"; diff --git a/v-next/hardhat-chai-matchers/src/withArgs.ts b/v-next/hardhat-chai-matchers/src/withArgs.ts index 75d876169b..30aefb5c28 100644 --- a/v-next/hardhat-chai-matchers/src/withArgs.ts +++ b/v-next/hardhat-chai-matchers/src/withArgs.ts @@ -1 +1 @@ -export { anyUint, anyValue } from "./internal/withArgs.js"; +export { anyUint, anyValue } from "./internal/matchers/withArgs.js"; diff --git a/v-next/hardhat-chai-matchers/test/addressable.ts b/v-next/hardhat-chai-matchers/test/addressable.ts index 848858053e..2a25c6d8b3 100644 --- a/v-next/hardhat-chai-matchers/test/addressable.ts +++ b/v-next/hardhat-chai-matchers/test/addressable.ts @@ -3,7 +3,9 @@ import { describe, it } from "node:test"; import { AssertionError, expect } from "chai"; import { ethers } from "ethers"; -import "../src/internal/add-chai-matchers"; +import { addChaiMatchers } from "../src/internal/add-chai-matchers.js"; + +addChaiMatchers(); describe("Addressable matcher", () => { const signer = ethers.Wallet.createRandom(); diff --git a/v-next/hardhat-chai-matchers/test/big-number.ts b/v-next/hardhat-chai-matchers/test/big-number.ts index 248f52e389..79a282c909 100644 --- a/v-next/hardhat-chai-matchers/test/big-number.ts +++ b/v-next/hardhat-chai-matchers/test/big-number.ts @@ -1,15 +1,16 @@ import { describe, it } from "node:test"; -import "../src/internal/add-chai-matchers"; - -import { HardhatError } from "@ignored/hardhat-vnext-errors"; -import { assertThrowsHardhatError } from "@nomicfoundation/hardhat-test-utils"; +import { InvalidParameterError } from "@ignored/hardhat-vnext-utils/common-errors"; import { AssertionError, expect } from "chai"; +import { addChaiMatchers } from "../src/internal/add-chai-matchers.js"; + type SupportedNumber = number | bigint; const numberToBigNumberConversions = [(n: number) => BigInt(n)]; +addChaiMatchers(); + describe("BigNumber matchers", () => { function typestr(n: string | SupportedNumber): string { return typeof n; @@ -779,48 +780,36 @@ describe("BigNumber matchers", () => { it(`with .to.${operator} comparing float vs ${typestr( converted, )}`, () => { - assertThrowsHardhatError( - () => expect(1.1).to[operator](converted), - HardhatError.ERRORS.GENERAL.INVALID_BIG_NUMBER, - { - message: msg, - }, + expect(() => expect(1.1).to[operator](converted)).to.throw( + InvalidParameterError, + msg, ); }); it(`with .to.${operator} comparing ${typestr( converted, )} vs float`, () => { - assertThrowsHardhatError( - () => expect(converted).to[operator](1.1), - HardhatError.ERRORS.GENERAL.INVALID_BIG_NUMBER, - { - message: msg, - }, + expect(() => expect(converted).to[operator](1.1)).to.throw( + InvalidParameterError, + msg, ); }); it(`with .not.to.${operator} comparing float vs ${typestr( converted, )}`, () => { - assertThrowsHardhatError( - () => expect(1.1).not.to[operator](converted), - HardhatError.ERRORS.GENERAL.INVALID_BIG_NUMBER, - { - message: msg, - }, + expect(() => expect(1.1).not.to[operator](converted)).to.throw( + InvalidParameterError, + msg, ); }); it(`with .not.to.${operator} comparing ${typestr( converted, )} vs float`, () => { - assertThrowsHardhatError( - () => expect(converted).not.to[operator](1.1), - HardhatError.ERRORS.GENERAL.INVALID_BIG_NUMBER, - { - message: msg, - }, + expect(() => expect(converted).not.to[operator](1.1)).to.throw( + InvalidParameterError, + msg, ); }); } @@ -832,43 +821,31 @@ describe("BigNumber matchers", () => { describe(`when using .to.${operator}`, () => { it("with an unsafe int as the first param", () => { - assertThrowsHardhatError( - () => expect(unsafeInt).to[operator](1n), - HardhatError.ERRORS.GENERAL.INVALID_BIG_NUMBER, - { - message: msg, - }, + expect(() => expect(unsafeInt).to[operator](1n)).to.throw( + InvalidParameterError, + msg, ); }); it("with an unsafe int as the second param", () => { - assertThrowsHardhatError( - () => expect(1n).to[operator](unsafeInt), - HardhatError.ERRORS.GENERAL.INVALID_BIG_NUMBER, - { - message: msg, - }, + expect(() => expect(1n).to[operator](unsafeInt)).to.throw( + InvalidParameterError, + msg, ); }); }); describe(`when using .not.to.${operator}`, () => { it("with an unsafe int as the first param", () => { - assertThrowsHardhatError( - () => expect(unsafeInt).not.to[operator](1n), - HardhatError.ERRORS.GENERAL.INVALID_BIG_NUMBER, - { - message: msg, - }, + expect(() => expect(unsafeInt).not.to[operator](1n)).to.throw( + InvalidParameterError, + msg, ); }); it("with an unsafe int as the second param", () => { - assertThrowsHardhatError( - () => expect(1n).not.to[operator](unsafeInt), - HardhatError.ERRORS.GENERAL.INVALID_BIG_NUMBER, - { - message: msg, - }, + expect(() => expect(1n).not.to[operator](unsafeInt)).to.throw( + InvalidParameterError, + msg, ); }); }); @@ -1117,64 +1094,46 @@ describe("BigNumber matchers", () => { describe(`with .to.${operator}`, () => { it(`with float, ${typestr(a)}, ${typestr(a)}`, () => { - assertThrowsHardhatError( - () => expect(1.1).to[operator](a, b), - HardhatError.ERRORS.GENERAL.INVALID_BIG_NUMBER, - { - message: msg, - }, + expect(() => expect(1.1).to[operator](a, b)).to.throw( + InvalidParameterError, + msg, ); }); it(`with ${typestr(a)}, float, ${typestr(b)}`, () => { - assertThrowsHardhatError( - () => expect(a).to[operator](1.1, b), - HardhatError.ERRORS.GENERAL.INVALID_BIG_NUMBER, - { - message: msg, - }, + expect(() => expect(a).to[operator](1.1, b)).to.throw( + InvalidParameterError, + msg, ); }); it(`with ${typestr(a)}, ${typestr(b)}, float`, () => { - assertThrowsHardhatError( - () => expect(a).to[operator](b, 1.1), - HardhatError.ERRORS.GENERAL.INVALID_BIG_NUMBER, - { - message: msg, - }, + expect(() => expect(a).to[operator](b, 1.1)).to.throw( + InvalidParameterError, + msg, ); }); }); describe(`with not.to.${operator}`, () => { it(`with float, ${typestr(a)}, ${typestr(a)}`, () => { - assertThrowsHardhatError( - () => expect(1.1).not.to[operator](a, b), - HardhatError.ERRORS.GENERAL.INVALID_BIG_NUMBER, - { - message: msg, - }, + expect(() => expect(1.1).not.to[operator](a, b)).to.throw( + InvalidParameterError, + msg, ); }); it(`with ${typestr(a)}, float, ${typestr(b)}`, () => { - assertThrowsHardhatError( - () => expect(a).not.to[operator](1.1, b), - HardhatError.ERRORS.GENERAL.INVALID_BIG_NUMBER, - { - message: msg, - }, + expect(() => expect(a).not.to[operator](1.1, b)).to.throw( + InvalidParameterError, + msg, ); }); it(`with ${typestr(a)}, ${typestr(b)}, float`, () => { - assertThrowsHardhatError( - () => expect(a).not.to[operator](b, 1.1), - HardhatError.ERRORS.GENERAL.INVALID_BIG_NUMBER, - { - message: msg, - }, + expect(() => expect(a).not.to[operator](b, 1.1)).to.throw( + InvalidParameterError, + msg, ); }); }); @@ -1188,64 +1147,46 @@ describe("BigNumber matchers", () => { describe(`when using .to.${operator}`, () => { it("with an unsafe int as the first param", () => { - assertThrowsHardhatError( - () => expect(unsafeInt).to[operator](1n, 1n), - HardhatError.ERRORS.GENERAL.INVALID_BIG_NUMBER, - { - message: msg, - }, + expect(() => expect(unsafeInt).to[operator](1n, 1n)).to.throw( + InvalidParameterError, + msg, ); }); it("with an unsafe int as the second param", () => { - assertThrowsHardhatError( - () => expect(1n).to[operator](unsafeInt, 1n), - HardhatError.ERRORS.GENERAL.INVALID_BIG_NUMBER, - { - message: msg, - }, + expect(() => expect(1n).to[operator](unsafeInt, 1n)).to.throw( + InvalidParameterError, + msg, ); }); it("with an unsafe int as the third param", () => { - assertThrowsHardhatError( - () => expect(1n).to[operator](1n, unsafeInt), - HardhatError.ERRORS.GENERAL.INVALID_BIG_NUMBER, - { - message: msg, - }, + expect(() => expect(1n).to[operator](1n, unsafeInt)).to.throw( + InvalidParameterError, + msg, ); }); }); describe(`when using not.to.${operator}`, () => { it("with an unsafe int as the first param", () => { - assertThrowsHardhatError( - () => expect(unsafeInt).not.to[operator](1n, 1n), - HardhatError.ERRORS.GENERAL.INVALID_BIG_NUMBER, - { - message: msg, - }, + expect(() => expect(unsafeInt).not.to[operator](1n, 1n)).to.throw( + InvalidParameterError, + msg, ); }); it("with an unsafe int as the second param", () => { - assertThrowsHardhatError( - () => expect(1n).not.to[operator](unsafeInt, 1n), - HardhatError.ERRORS.GENERAL.INVALID_BIG_NUMBER, - { - message: msg, - }, + expect(() => expect(1n).not.to[operator](unsafeInt, 1n)).to.throw( + InvalidParameterError, + msg, ); }); it("with an unsafe int as the third param", () => { - assertThrowsHardhatError( - () => expect(1n).not.to[operator](1n, unsafeInt), - HardhatError.ERRORS.GENERAL.INVALID_BIG_NUMBER, - { - message: msg, - }, + expect(() => expect(1n).not.to[operator](1n, unsafeInt)).to.throw( + InvalidParameterError, + msg, ); }); }); diff --git a/v-next/hardhat-chai-matchers/test/changeEtherBalance.ts b/v-next/hardhat-chai-matchers/test/changeEtherBalance.ts index 978ec6d83e..510a7cc896 100644 --- a/v-next/hardhat-chai-matchers/test/changeEtherBalance.ts +++ b/v-next/hardhat-chai-matchers/test/changeEtherBalance.ts @@ -1,5 +1,5 @@ import type { ChangeEtherBalance } from "./contracts.js"; -import type { Token } from "../src/internal/changeTokenBalance.js"; +import type { Token } from "../src/internal/matchers/changeTokenBalance.js"; import type { EthereumProvider } from "@ignored/hardhat-vnext/types/providers"; import type { HardhatEthers, @@ -19,7 +19,9 @@ import { } from "@nomicfoundation/hardhat-test-utils"; import { expect, AssertionError } from "chai"; -import "../src/internal/add-chai-matchers"; +import { addChaiMatchers } from "../src/internal/add-chai-matchers.js"; + +addChaiMatchers(); describe("INTEGRATION: changeEtherBalance matcher", () => { describe("with the in-process hardhat network", () => { diff --git a/v-next/hardhat-chai-matchers/test/changeEtherBalances.ts b/v-next/hardhat-chai-matchers/test/changeEtherBalances.ts index d88a82717b..95fe142ee6 100644 --- a/v-next/hardhat-chai-matchers/test/changeEtherBalances.ts +++ b/v-next/hardhat-chai-matchers/test/changeEtherBalances.ts @@ -1,5 +1,5 @@ import type { ChangeEtherBalance } from "./contracts.js"; -import type { Token } from "../src/internal/changeTokenBalance.js"; +import type { Token } from "../src/internal/matchers/changeTokenBalance.js"; import type { EthereumProvider } from "@ignored/hardhat-vnext/types/providers"; import type { HardhatEthers, @@ -19,7 +19,9 @@ import { } from "@nomicfoundation/hardhat-test-utils"; import { expect, AssertionError } from "chai"; -import "../src/internal/add-chai-matchers"; +import { addChaiMatchers } from "../src/internal/add-chai-matchers.js"; + +addChaiMatchers(); describe("INTEGRATION: changeEtherBalances matcher", () => { describe("with the in-process hardhat network", () => { diff --git a/v-next/hardhat-chai-matchers/test/changeTokenBalance.ts b/v-next/hardhat-chai-matchers/test/changeTokenBalance.ts index 1ed344d1f9..649968f7c3 100644 --- a/v-next/hardhat-chai-matchers/test/changeTokenBalance.ts +++ b/v-next/hardhat-chai-matchers/test/changeTokenBalance.ts @@ -3,7 +3,7 @@ import type { EventsContract, MatchersContract, } from "./contracts.js"; -import type { Token } from "../src/internal/changeTokenBalance.js"; +import type { Token } from "../src/internal/matchers/changeTokenBalance.js"; import type { EthereumProvider } from "@ignored/hardhat-vnext/types/providers"; import type { HardhatEthers, @@ -25,12 +25,14 @@ import { } from "@nomicfoundation/hardhat-test-utils"; import { AssertionError, expect } from "chai"; -import "../src/internal/add-chai-matchers"; -import { clearTokenDescriptionsCache } from "../src/internal/changeTokenBalance.js"; +import { addChaiMatchers } from "../src/internal/add-chai-matchers.js"; import { CHANGE_TOKEN_BALANCE_MATCHER, CHANGE_TOKEN_BALANCES_MATCHER, } from "../src/internal/constants.js"; +import { clearTokenDescriptionsCache } from "../src/internal/matchers/changeTokenBalance.js"; + +addChaiMatchers(); describe("INTEGRATION: changeTokenBalance and changeTokenBalances matchers", () => { describe("with the in-process hardhat network", () => { diff --git a/v-next/hardhat-chai-matchers/test/events.ts b/v-next/hardhat-chai-matchers/test/events.ts index 5e5f8f6e45..ddaf49f93b 100644 --- a/v-next/hardhat-chai-matchers/test/events.ts +++ b/v-next/hardhat-chai-matchers/test/events.ts @@ -4,7 +4,6 @@ import type { MatchersContract, OverrideEventContract, } from "./contracts.js"; -import "../src/internal/add-chai-matchers"; import type { HardhatEthers } from "@ignored/hardhat-vnext-ethers/types"; import { beforeEach, describe, it } from "node:test"; @@ -18,8 +17,11 @@ import { id } from "ethers/hash"; import { hexlify, toUtf8Bytes, zeroPadValue } from "ethers/utils"; import { Wallet } from "ethers/wallet"; +import { addChaiMatchers } from "../src/internal/add-chai-matchers.js"; import { anyUint, anyValue } from "../src/withArgs.js"; +addChaiMatchers(); + describe(".to.emit (contract events)", () => { let contract: EventsContract; let otherContract: AnotherContract; diff --git a/v-next/hardhat-chai-matchers/test/hexEqual.ts b/v-next/hardhat-chai-matchers/test/hexEqual.ts index 724b4354bb..1db4ecccc4 100644 --- a/v-next/hardhat-chai-matchers/test/hexEqual.ts +++ b/v-next/hardhat-chai-matchers/test/hexEqual.ts @@ -2,7 +2,9 @@ import { describe, it } from "node:test"; import { AssertionError, expect } from "chai"; -import "../src/internal/add-chai-matchers"; +import { addChaiMatchers } from "../src/internal/add-chai-matchers.js"; + +addChaiMatchers(); describe("UNIT: hexEqual", () => { it("0xAB equals 0xab", () => { diff --git a/v-next/hardhat-chai-matchers/test/panic.ts b/v-next/hardhat-chai-matchers/test/panic.ts index f2bd31ab18..3d165864ff 100644 --- a/v-next/hardhat-chai-matchers/test/panic.ts +++ b/v-next/hardhat-chai-matchers/test/panic.ts @@ -6,7 +6,7 @@ import { toBigInt } from "ethers"; import { PANIC_CODES, panicErrorCodeToReason, -} from "../src/internal/reverted/panic.js"; +} from "../src/internal/matchers/reverted/panic.js"; describe("panic codes", () => { it("all exported panic codes should have a description", async () => { diff --git a/v-next/hardhat-chai-matchers/test/properAddress.ts b/v-next/hardhat-chai-matchers/test/properAddress.ts index cc3a1204c0..53cc98eb2b 100644 --- a/v-next/hardhat-chai-matchers/test/properAddress.ts +++ b/v-next/hardhat-chai-matchers/test/properAddress.ts @@ -4,7 +4,9 @@ import { describe, it } from "node:test"; import { expect, AssertionError } from "chai"; -import "../src/internal/add-chai-matchers"; +import { addChaiMatchers } from "../src/internal/add-chai-matchers.js"; + +addChaiMatchers(); describe("Proper address", () => { it("Expect to be proper address", async () => { diff --git a/v-next/hardhat-chai-matchers/test/properHex.ts b/v-next/hardhat-chai-matchers/test/properHex.ts index b7c7cdd52c..6704dabfad 100644 --- a/v-next/hardhat-chai-matchers/test/properHex.ts +++ b/v-next/hardhat-chai-matchers/test/properHex.ts @@ -2,7 +2,9 @@ import { describe, it } from "node:test"; import { AssertionError, expect } from "chai"; -import "../src/internal/add-chai-matchers"; +import { addChaiMatchers } from "../src/internal/add-chai-matchers.js"; + +addChaiMatchers(); describe("properHex", () => { it("should handle a successful positive case", () => { diff --git a/v-next/hardhat-chai-matchers/test/properPrivateKey.ts b/v-next/hardhat-chai-matchers/test/properPrivateKey.ts index 76d5619586..69405dc3a6 100644 --- a/v-next/hardhat-chai-matchers/test/properPrivateKey.ts +++ b/v-next/hardhat-chai-matchers/test/properPrivateKey.ts @@ -1,11 +1,13 @@ -import "../src/internal/add-chai-matchers"; - import { describe, it } from "node:test"; import { expect, AssertionError } from "chai"; +import { addChaiMatchers } from "../src/internal/add-chai-matchers.js"; + /* eslint-disable @typescript-eslint/no-unused-expressions -- allow all the expressions */ +addChaiMatchers(); + describe("Proper private key", () => { it("Expect to be proper private key", async () => { expect("0x706618637b8ca922f6290ce1ecd4c31247e9ab75cf0530a0ac95c0332173d7c5") diff --git a/v-next/hardhat-chai-matchers/test/reverted/reverted.ts b/v-next/hardhat-chai-matchers/test/reverted/reverted.ts index 4dfb029ca8..240a131621 100644 --- a/v-next/hardhat-chai-matchers/test/reverted/reverted.ts +++ b/v-next/hardhat-chai-matchers/test/reverted/reverted.ts @@ -16,7 +16,7 @@ import { } from "@nomicfoundation/hardhat-test-utils"; import { AssertionError, expect } from "chai"; -import "../../src/internal/add-chai-matchers"; +import { addChaiMatchers } from "../../src/internal/add-chai-matchers.js"; import { runSuccessfulAsserts, runFailedAsserts, @@ -24,6 +24,8 @@ import { mineRevertedTransaction, } from "../helpers.js"; +addChaiMatchers(); + describe("INTEGRATION: Reverted", () => { describe("with the in-process hardhat network", () => { useFixtureProject("hardhat-project"); diff --git a/v-next/hardhat-chai-matchers/test/reverted/revertedWith.ts b/v-next/hardhat-chai-matchers/test/reverted/revertedWith.ts index 1fdac0f26a..43533d0db6 100644 --- a/v-next/hardhat-chai-matchers/test/reverted/revertedWith.ts +++ b/v-next/hardhat-chai-matchers/test/reverted/revertedWith.ts @@ -15,13 +15,14 @@ import { } from "@nomicfoundation/hardhat-test-utils"; import { AssertionError, expect } from "chai"; +import { addChaiMatchers } from "../../src/internal/add-chai-matchers.js"; import { runSuccessfulAsserts, runFailedAsserts, mineSuccessfulTransaction, } from "../helpers.js"; -import "../../src/internal/add-chai-matchers"; +addChaiMatchers(); describe("INTEGRATION: Reverted with", () => { describe("with the in-process hardhat network", () => { diff --git a/v-next/hardhat-chai-matchers/test/reverted/revertedWithCustomError.ts b/v-next/hardhat-chai-matchers/test/reverted/revertedWithCustomError.ts index 06cda04627..f2dadb37f0 100644 --- a/v-next/hardhat-chai-matchers/test/reverted/revertedWithCustomError.ts +++ b/v-next/hardhat-chai-matchers/test/reverted/revertedWithCustomError.ts @@ -15,6 +15,7 @@ import { } from "@nomicfoundation/hardhat-test-utils"; import { AssertionError, expect } from "chai"; +import { addChaiMatchers } from "../../src/internal/add-chai-matchers.js"; import { anyUint, anyValue } from "../../src/withArgs.js"; import { runSuccessfulAsserts, @@ -22,7 +23,7 @@ import { mineSuccessfulTransaction, } from "../helpers.js"; -import "../../src/internal/add-chai-matchers"; +addChaiMatchers(); describe("INTEGRATION: Reverted with custom error", () => { describe("with the in-process hardhat network", () => { diff --git a/v-next/hardhat-chai-matchers/test/reverted/revertedWithPanic.ts b/v-next/hardhat-chai-matchers/test/reverted/revertedWithPanic.ts index 939984bff5..ae1a1b8101 100644 --- a/v-next/hardhat-chai-matchers/test/reverted/revertedWithPanic.ts +++ b/v-next/hardhat-chai-matchers/test/reverted/revertedWithPanic.ts @@ -15,7 +15,7 @@ import { } from "@nomicfoundation/hardhat-test-utils"; import { AssertionError, expect } from "chai"; -import "../../src/internal/add-chai-matchers"; +import { addChaiMatchers } from "../../src/internal/add-chai-matchers.js"; import { PANIC_CODES } from "../../src/panic.js"; import { runSuccessfulAsserts, @@ -23,6 +23,8 @@ import { mineSuccessfulTransaction, } from "../helpers.js"; +addChaiMatchers(); + describe("INTEGRATION: Reverted with panic", () => { describe("with the in-process hardhat network", () => { useFixtureProject("hardhat-project"); diff --git a/v-next/hardhat-chai-matchers/test/reverted/revertedWithoutReason.ts b/v-next/hardhat-chai-matchers/test/reverted/revertedWithoutReason.ts index 14750bafd0..afd165bd11 100644 --- a/v-next/hardhat-chai-matchers/test/reverted/revertedWithoutReason.ts +++ b/v-next/hardhat-chai-matchers/test/reverted/revertedWithoutReason.ts @@ -10,9 +10,10 @@ import hardhatEthersPlugin from "@ignored/hardhat-vnext-ethers"; import { useFixtureProject } from "@nomicfoundation/hardhat-test-utils"; import { AssertionError, expect } from "chai"; +import { addChaiMatchers } from "../../src/internal/add-chai-matchers.js"; import { runSuccessfulAsserts, runFailedAsserts } from "../helpers.js"; -import "../../src/internal/add-chai-matchers"; +addChaiMatchers(); describe("INTEGRATION: Reverted without reason", () => { describe("with the in-process hardhat network", () => { From 8d92af9ac08ea6a07b0a06fec1c83af280969411 Mon Sep 17 00:00:00 2001 From: ChrisD <18092467+ChristopherDedominici@users.noreply.github.com> Date: Thu, 21 Nov 2024 18:09:59 +0100 Subject: [PATCH 24/61] cleaning: move helpers file and remove unused files --- .../hardhat-project/hardhat.config.js | 13 ------------- .../hardhat-project/hardhat.config.ts | 5 +++++ .../fixture-projects/hardhat-project/start-node.js | 14 -------------- .../test/{ => helpers}/helpers.ts | 2 +- .../test/reverted/reverted.ts | 2 +- .../test/reverted/revertedWith.ts | 2 +- .../test/reverted/revertedWithCustomError.ts | 2 +- .../test/reverted/revertedWithPanic.ts | 2 +- .../test/reverted/revertedWithoutReason.ts | 2 +- 9 files changed, 11 insertions(+), 33 deletions(-) delete mode 100644 v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/hardhat.config.js create mode 100644 v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/hardhat.config.ts delete mode 100644 v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/start-node.js rename v-next/hardhat-chai-matchers/test/{ => helpers}/helpers.ts (98%) diff --git a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/hardhat.config.js b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/hardhat.config.js deleted file mode 100644 index d8edfc19ae..0000000000 --- a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/hardhat.config.js +++ /dev/null @@ -1,13 +0,0 @@ -require("@nomicfoundation/hardhat-ethers"); - -module.exports = { - solidity: "0.8.4", - networks: { - hardhat: { - chainId: Number(process.env.CHAIN_ID ?? "31337"), - }, - localhost: { - url: `http://127.0.0.1:${process.env.HARDHAT_NODE_PORT}`, - }, - }, -}; diff --git a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/hardhat.config.ts b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/hardhat.config.ts new file mode 100644 index 0000000000..83ba902b6e --- /dev/null +++ b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/hardhat.config.ts @@ -0,0 +1,5 @@ +import type { HardhatUserConfig } from "@ignored/hardhat-vnext/config"; + +const config: HardhatUserConfig = {}; + +export default config; diff --git a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/start-node.js b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/start-node.js deleted file mode 100644 index 4a470dfae2..0000000000 --- a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/start-node.js +++ /dev/null @@ -1,14 +0,0 @@ -const hre = require("hardhat"); - -async function main() { - await hre.run("node", { - port: +process.env.HARDHAT_NODE_PORT, - }); -} - -main() - .then(() => process.exit(0)) - .catch((error) => { - console.error(error); - process.exit(1); - }); diff --git a/v-next/hardhat-chai-matchers/test/helpers.ts b/v-next/hardhat-chai-matchers/test/helpers/helpers.ts similarity index 98% rename from v-next/hardhat-chai-matchers/test/helpers.ts rename to v-next/hardhat-chai-matchers/test/helpers/helpers.ts index 3cff01e7ba..6fb6c8060d 100644 --- a/v-next/hardhat-chai-matchers/test/helpers.ts +++ b/v-next/hardhat-chai-matchers/test/helpers/helpers.ts @@ -1,4 +1,4 @@ -import type { MatchersContract } from "./contracts.js"; +import type { MatchersContract } from "../contracts.js"; import type { EthereumProvider } from "@ignored/hardhat-vnext/types/providers"; import type { HardhatEthers } from "@ignored/hardhat-vnext-ethers/types"; import type { ContractTransactionResponse } from "ethers/contract"; diff --git a/v-next/hardhat-chai-matchers/test/reverted/reverted.ts b/v-next/hardhat-chai-matchers/test/reverted/reverted.ts index 240a131621..338d1e3172 100644 --- a/v-next/hardhat-chai-matchers/test/reverted/reverted.ts +++ b/v-next/hardhat-chai-matchers/test/reverted/reverted.ts @@ -22,7 +22,7 @@ import { runFailedAsserts, mineSuccessfulTransaction, mineRevertedTransaction, -} from "../helpers.js"; +} from "../helpers/helpers.js"; addChaiMatchers(); diff --git a/v-next/hardhat-chai-matchers/test/reverted/revertedWith.ts b/v-next/hardhat-chai-matchers/test/reverted/revertedWith.ts index 43533d0db6..e52e0f6436 100644 --- a/v-next/hardhat-chai-matchers/test/reverted/revertedWith.ts +++ b/v-next/hardhat-chai-matchers/test/reverted/revertedWith.ts @@ -20,7 +20,7 @@ import { runSuccessfulAsserts, runFailedAsserts, mineSuccessfulTransaction, -} from "../helpers.js"; +} from "../helpers/helpers.js"; addChaiMatchers(); diff --git a/v-next/hardhat-chai-matchers/test/reverted/revertedWithCustomError.ts b/v-next/hardhat-chai-matchers/test/reverted/revertedWithCustomError.ts index f2dadb37f0..7d6e0b4943 100644 --- a/v-next/hardhat-chai-matchers/test/reverted/revertedWithCustomError.ts +++ b/v-next/hardhat-chai-matchers/test/reverted/revertedWithCustomError.ts @@ -21,7 +21,7 @@ import { runSuccessfulAsserts, runFailedAsserts, mineSuccessfulTransaction, -} from "../helpers.js"; +} from "../helpers/helpers.js"; addChaiMatchers(); diff --git a/v-next/hardhat-chai-matchers/test/reverted/revertedWithPanic.ts b/v-next/hardhat-chai-matchers/test/reverted/revertedWithPanic.ts index ae1a1b8101..693477d4d1 100644 --- a/v-next/hardhat-chai-matchers/test/reverted/revertedWithPanic.ts +++ b/v-next/hardhat-chai-matchers/test/reverted/revertedWithPanic.ts @@ -21,7 +21,7 @@ import { runSuccessfulAsserts, runFailedAsserts, mineSuccessfulTransaction, -} from "../helpers.js"; +} from "../helpers/helpers.js"; addChaiMatchers(); diff --git a/v-next/hardhat-chai-matchers/test/reverted/revertedWithoutReason.ts b/v-next/hardhat-chai-matchers/test/reverted/revertedWithoutReason.ts index afd165bd11..4a14b4d067 100644 --- a/v-next/hardhat-chai-matchers/test/reverted/revertedWithoutReason.ts +++ b/v-next/hardhat-chai-matchers/test/reverted/revertedWithoutReason.ts @@ -11,7 +11,7 @@ import { useFixtureProject } from "@nomicfoundation/hardhat-test-utils"; import { AssertionError, expect } from "chai"; import { addChaiMatchers } from "../../src/internal/add-chai-matchers.js"; -import { runSuccessfulAsserts, runFailedAsserts } from "../helpers.js"; +import { runSuccessfulAsserts, runFailedAsserts } from "../helpers/helpers.js"; addChaiMatchers(); From 2024a81af8b823c3b13a598aa644b5546429a719 Mon Sep 17 00:00:00 2001 From: ChrisD <18092467+ChristopherDedominici@users.noreply.github.com> Date: Thu, 21 Nov 2024 18:13:00 +0100 Subject: [PATCH 25/61] cleaning: move contract file in helpers folder --- v-next/hardhat-chai-matchers/test/changeEtherBalance.ts | 2 +- v-next/hardhat-chai-matchers/test/changeEtherBalances.ts | 2 +- v-next/hardhat-chai-matchers/test/changeTokenBalance.ts | 2 +- v-next/hardhat-chai-matchers/test/events.ts | 2 +- v-next/hardhat-chai-matchers/test/{ => helpers}/contracts.ts | 0 v-next/hardhat-chai-matchers/test/helpers/helpers.ts | 2 +- v-next/hardhat-chai-matchers/test/reverted/reverted.ts | 2 +- v-next/hardhat-chai-matchers/test/reverted/revertedWith.ts | 2 +- .../test/reverted/revertedWithCustomError.ts | 2 +- v-next/hardhat-chai-matchers/test/reverted/revertedWithPanic.ts | 2 +- .../test/reverted/revertedWithoutReason.ts | 2 +- 11 files changed, 10 insertions(+), 10 deletions(-) rename v-next/hardhat-chai-matchers/test/{ => helpers}/contracts.ts (100%) diff --git a/v-next/hardhat-chai-matchers/test/changeEtherBalance.ts b/v-next/hardhat-chai-matchers/test/changeEtherBalance.ts index 510a7cc896..e0809f7ed1 100644 --- a/v-next/hardhat-chai-matchers/test/changeEtherBalance.ts +++ b/v-next/hardhat-chai-matchers/test/changeEtherBalance.ts @@ -1,4 +1,4 @@ -import type { ChangeEtherBalance } from "./contracts.js"; +import type { ChangeEtherBalance } from "./helpers/contracts.js"; import type { Token } from "../src/internal/matchers/changeTokenBalance.js"; import type { EthereumProvider } from "@ignored/hardhat-vnext/types/providers"; import type { diff --git a/v-next/hardhat-chai-matchers/test/changeEtherBalances.ts b/v-next/hardhat-chai-matchers/test/changeEtherBalances.ts index 95fe142ee6..41a7fe283f 100644 --- a/v-next/hardhat-chai-matchers/test/changeEtherBalances.ts +++ b/v-next/hardhat-chai-matchers/test/changeEtherBalances.ts @@ -1,4 +1,4 @@ -import type { ChangeEtherBalance } from "./contracts.js"; +import type { ChangeEtherBalance } from "./helpers/contracts.js"; import type { Token } from "../src/internal/matchers/changeTokenBalance.js"; import type { EthereumProvider } from "@ignored/hardhat-vnext/types/providers"; import type { diff --git a/v-next/hardhat-chai-matchers/test/changeTokenBalance.ts b/v-next/hardhat-chai-matchers/test/changeTokenBalance.ts index 649968f7c3..8f99eeb303 100644 --- a/v-next/hardhat-chai-matchers/test/changeTokenBalance.ts +++ b/v-next/hardhat-chai-matchers/test/changeTokenBalance.ts @@ -2,7 +2,7 @@ import type { AnotherContract, EventsContract, MatchersContract, -} from "./contracts.js"; +} from "./helpers/contracts.js"; import type { Token } from "../src/internal/matchers/changeTokenBalance.js"; import type { EthereumProvider } from "@ignored/hardhat-vnext/types/providers"; import type { diff --git a/v-next/hardhat-chai-matchers/test/events.ts b/v-next/hardhat-chai-matchers/test/events.ts index ddaf49f93b..9a5e7b7f18 100644 --- a/v-next/hardhat-chai-matchers/test/events.ts +++ b/v-next/hardhat-chai-matchers/test/events.ts @@ -3,7 +3,7 @@ import type { EventsContract, MatchersContract, OverrideEventContract, -} from "./contracts.js"; +} from "./helpers/contracts.js"; import type { HardhatEthers } from "@ignored/hardhat-vnext-ethers/types"; import { beforeEach, describe, it } from "node:test"; diff --git a/v-next/hardhat-chai-matchers/test/contracts.ts b/v-next/hardhat-chai-matchers/test/helpers/contracts.ts similarity index 100% rename from v-next/hardhat-chai-matchers/test/contracts.ts rename to v-next/hardhat-chai-matchers/test/helpers/contracts.ts diff --git a/v-next/hardhat-chai-matchers/test/helpers/helpers.ts b/v-next/hardhat-chai-matchers/test/helpers/helpers.ts index 6fb6c8060d..3cff01e7ba 100644 --- a/v-next/hardhat-chai-matchers/test/helpers/helpers.ts +++ b/v-next/hardhat-chai-matchers/test/helpers/helpers.ts @@ -1,4 +1,4 @@ -import type { MatchersContract } from "../contracts.js"; +import type { MatchersContract } from "./contracts.js"; import type { EthereumProvider } from "@ignored/hardhat-vnext/types/providers"; import type { HardhatEthers } from "@ignored/hardhat-vnext-ethers/types"; import type { ContractTransactionResponse } from "ethers/contract"; diff --git a/v-next/hardhat-chai-matchers/test/reverted/reverted.ts b/v-next/hardhat-chai-matchers/test/reverted/reverted.ts index 338d1e3172..e3743c4cca 100644 --- a/v-next/hardhat-chai-matchers/test/reverted/reverted.ts +++ b/v-next/hardhat-chai-matchers/test/reverted/reverted.ts @@ -1,4 +1,4 @@ -import type { MatchersContract } from "../contracts.js"; +import type { MatchersContract } from "../helpers/contracts.js"; import type { EthereumProvider } from "@ignored/hardhat-vnext/types/providers"; import type { HardhatEthers } from "@ignored/hardhat-vnext-ethers/types"; diff --git a/v-next/hardhat-chai-matchers/test/reverted/revertedWith.ts b/v-next/hardhat-chai-matchers/test/reverted/revertedWith.ts index e52e0f6436..e98202a404 100644 --- a/v-next/hardhat-chai-matchers/test/reverted/revertedWith.ts +++ b/v-next/hardhat-chai-matchers/test/reverted/revertedWith.ts @@ -1,4 +1,4 @@ -import type { MatchersContract } from "../contracts.js"; +import type { MatchersContract } from "../helpers/contracts.js"; import type { EthereumProvider } from "@ignored/hardhat-vnext/types/providers"; import type { HardhatEthers } from "@ignored/hardhat-vnext-ethers/types"; diff --git a/v-next/hardhat-chai-matchers/test/reverted/revertedWithCustomError.ts b/v-next/hardhat-chai-matchers/test/reverted/revertedWithCustomError.ts index 7d6e0b4943..c237df3f43 100644 --- a/v-next/hardhat-chai-matchers/test/reverted/revertedWithCustomError.ts +++ b/v-next/hardhat-chai-matchers/test/reverted/revertedWithCustomError.ts @@ -1,4 +1,4 @@ -import type { MatchersContract } from "../contracts.js"; +import type { MatchersContract } from "../helpers/contracts.js"; import type { EthereumProvider } from "@ignored/hardhat-vnext/types/providers"; import type { HardhatEthers } from "@ignored/hardhat-vnext-ethers/types"; diff --git a/v-next/hardhat-chai-matchers/test/reverted/revertedWithPanic.ts b/v-next/hardhat-chai-matchers/test/reverted/revertedWithPanic.ts index 693477d4d1..1e6936544f 100644 --- a/v-next/hardhat-chai-matchers/test/reverted/revertedWithPanic.ts +++ b/v-next/hardhat-chai-matchers/test/reverted/revertedWithPanic.ts @@ -1,4 +1,4 @@ -import type { MatchersContract } from "../contracts.js"; +import type { MatchersContract } from "../helpers/contracts.js"; import type { EthereumProvider } from "@ignored/hardhat-vnext/types/providers"; import type { HardhatEthers } from "@ignored/hardhat-vnext-ethers/types"; diff --git a/v-next/hardhat-chai-matchers/test/reverted/revertedWithoutReason.ts b/v-next/hardhat-chai-matchers/test/reverted/revertedWithoutReason.ts index 4a14b4d067..121da7ca3a 100644 --- a/v-next/hardhat-chai-matchers/test/reverted/revertedWithoutReason.ts +++ b/v-next/hardhat-chai-matchers/test/reverted/revertedWithoutReason.ts @@ -1,4 +1,4 @@ -import type { MatchersContract } from "../contracts.js"; +import type { MatchersContract } from "../helpers/contracts.js"; import type { HardhatEthers } from "@ignored/hardhat-vnext-ethers/types"; import path from "node:path"; From 5224c909dd4ba0f777220303129436c6ec43b54c Mon Sep 17 00:00:00 2001 From: ChrisD <18092467+ChristopherDedominici@users.noreply.github.com> Date: Thu, 21 Nov 2024 18:37:35 +0100 Subject: [PATCH 26/61] cleaning: move matchers tests in matcher folder --- .../test/{ => matchers}/addressable.ts | 2 +- .../test/{ => matchers}/big-number.ts | 2 +- .../test/{ => matchers}/changeEtherBalance.ts | 8 ++++---- .../test/{ => matchers}/changeEtherBalances.ts | 8 ++++---- .../test/{ => matchers}/changeTokenBalance.ts | 14 +++++++------- .../test/{ => matchers}/events.ts | 6 +++--- .../test/{ => matchers}/hexEqual.ts | 2 +- .../test/{ => matchers}/panic.ts | 2 +- .../test/{ => matchers}/properAddress.ts | 2 +- .../test/{ => matchers}/properHex.ts | 2 +- .../test/{ => matchers}/properPrivateKey.ts | 2 +- .../test/{ => matchers}/reverted/reverted.ts | 8 ++++---- .../test/{ => matchers}/reverted/revertedWith.ts | 8 ++++---- .../reverted/revertedWithCustomError.ts | 15 ++++++++++----- .../{ => matchers}/reverted/revertedWithPanic.ts | 10 +++++----- .../reverted/revertedWithoutReason.ts | 16 ++++++++++++---- 16 files changed, 60 insertions(+), 47 deletions(-) rename v-next/hardhat-chai-matchers/test/{ => matchers}/addressable.ts (97%) rename v-next/hardhat-chai-matchers/test/{ => matchers}/big-number.ts (99%) rename v-next/hardhat-chai-matchers/test/{ => matchers}/changeEtherBalance.ts (98%) rename v-next/hardhat-chai-matchers/test/{ => matchers}/changeEtherBalances.ts (98%) rename v-next/hardhat-chai-matchers/test/{ => matchers}/changeTokenBalance.ts (98%) rename v-next/hardhat-chai-matchers/test/{ => matchers}/events.ts (99%) rename v-next/hardhat-chai-matchers/test/{ => matchers}/hexEqual.ts (97%) rename v-next/hardhat-chai-matchers/test/{ => matchers}/panic.ts (89%) rename v-next/hardhat-chai-matchers/test/{ => matchers}/properAddress.ts (95%) rename v-next/hardhat-chai-matchers/test/{ => matchers}/properHex.ts (96%) rename v-next/hardhat-chai-matchers/test/{ => matchers}/properPrivateKey.ts (95%) rename v-next/hardhat-chai-matchers/test/{ => matchers}/reverted/reverted.ts (98%) rename v-next/hardhat-chai-matchers/test/{ => matchers}/reverted/revertedWith.ts (97%) rename v-next/hardhat-chai-matchers/test/{ => matchers}/reverted/revertedWithCustomError.ts (98%) rename v-next/hardhat-chai-matchers/test/{ => matchers}/reverted/revertedWithPanic.ts (97%) rename v-next/hardhat-chai-matchers/test/{ => matchers}/reverted/revertedWithoutReason.ts (94%) diff --git a/v-next/hardhat-chai-matchers/test/addressable.ts b/v-next/hardhat-chai-matchers/test/matchers/addressable.ts similarity index 97% rename from v-next/hardhat-chai-matchers/test/addressable.ts rename to v-next/hardhat-chai-matchers/test/matchers/addressable.ts index 2a25c6d8b3..30fc8a1bb9 100644 --- a/v-next/hardhat-chai-matchers/test/addressable.ts +++ b/v-next/hardhat-chai-matchers/test/matchers/addressable.ts @@ -3,7 +3,7 @@ import { describe, it } from "node:test"; import { AssertionError, expect } from "chai"; import { ethers } from "ethers"; -import { addChaiMatchers } from "../src/internal/add-chai-matchers.js"; +import { addChaiMatchers } from "../../src/internal/add-chai-matchers.js"; addChaiMatchers(); diff --git a/v-next/hardhat-chai-matchers/test/big-number.ts b/v-next/hardhat-chai-matchers/test/matchers/big-number.ts similarity index 99% rename from v-next/hardhat-chai-matchers/test/big-number.ts rename to v-next/hardhat-chai-matchers/test/matchers/big-number.ts index 79a282c909..4a8d39c37f 100644 --- a/v-next/hardhat-chai-matchers/test/big-number.ts +++ b/v-next/hardhat-chai-matchers/test/matchers/big-number.ts @@ -3,7 +3,7 @@ import { describe, it } from "node:test"; import { InvalidParameterError } from "@ignored/hardhat-vnext-utils/common-errors"; import { AssertionError, expect } from "chai"; -import { addChaiMatchers } from "../src/internal/add-chai-matchers.js"; +import { addChaiMatchers } from "../../src/internal/add-chai-matchers.js"; type SupportedNumber = number | bigint; diff --git a/v-next/hardhat-chai-matchers/test/changeEtherBalance.ts b/v-next/hardhat-chai-matchers/test/matchers/changeEtherBalance.ts similarity index 98% rename from v-next/hardhat-chai-matchers/test/changeEtherBalance.ts rename to v-next/hardhat-chai-matchers/test/matchers/changeEtherBalance.ts index e0809f7ed1..dd539c78f4 100644 --- a/v-next/hardhat-chai-matchers/test/changeEtherBalance.ts +++ b/v-next/hardhat-chai-matchers/test/matchers/changeEtherBalance.ts @@ -1,5 +1,5 @@ -import type { ChangeEtherBalance } from "./helpers/contracts.js"; -import type { Token } from "../src/internal/matchers/changeTokenBalance.js"; +import type { Token } from "../../src/internal/matchers/changeTokenBalance.js"; +import type { ChangeEtherBalance } from "../helpers/contracts.js"; import type { EthereumProvider } from "@ignored/hardhat-vnext/types/providers"; import type { HardhatEthers, @@ -19,7 +19,7 @@ import { } from "@nomicfoundation/hardhat-test-utils"; import { expect, AssertionError } from "chai"; -import { addChaiMatchers } from "../src/internal/add-chai-matchers.js"; +import { addChaiMatchers } from "../../src/internal/add-chai-matchers.js"; addChaiMatchers(); @@ -667,7 +667,7 @@ describe("INTEGRATION: changeEtherBalance matcher", () => { ).to.changeEtherBalance(provider, sender, -100); } catch (e) { expect(util.inspect(e)).to.include( - path.join("test", "changeEtherBalance.ts"), + path.join("test", "matchers", "changeEtherBalance.ts"), ); return; } diff --git a/v-next/hardhat-chai-matchers/test/changeEtherBalances.ts b/v-next/hardhat-chai-matchers/test/matchers/changeEtherBalances.ts similarity index 98% rename from v-next/hardhat-chai-matchers/test/changeEtherBalances.ts rename to v-next/hardhat-chai-matchers/test/matchers/changeEtherBalances.ts index 41a7fe283f..05d12bc934 100644 --- a/v-next/hardhat-chai-matchers/test/changeEtherBalances.ts +++ b/v-next/hardhat-chai-matchers/test/matchers/changeEtherBalances.ts @@ -1,5 +1,5 @@ -import type { ChangeEtherBalance } from "./helpers/contracts.js"; -import type { Token } from "../src/internal/matchers/changeTokenBalance.js"; +import type { Token } from "../../src/internal/matchers/changeTokenBalance.js"; +import type { ChangeEtherBalance } from "../helpers/contracts.js"; import type { EthereumProvider } from "@ignored/hardhat-vnext/types/providers"; import type { HardhatEthers, @@ -19,7 +19,7 @@ import { } from "@nomicfoundation/hardhat-test-utils"; import { expect, AssertionError } from "chai"; -import { addChaiMatchers } from "../src/internal/add-chai-matchers.js"; +import { addChaiMatchers } from "../../src/internal/add-chai-matchers.js"; addChaiMatchers(); @@ -528,7 +528,7 @@ describe("INTEGRATION: changeEtherBalances matcher", () => { ).to.changeEtherBalances(provider, [sender, receiver], [-100, 100]); } catch (e) { expect(util.inspect(e)).to.include( - path.join("test", "changeEtherBalances.ts"), + path.join("test", "matchers", "changeEtherBalances.ts"), ); return; } diff --git a/v-next/hardhat-chai-matchers/test/changeTokenBalance.ts b/v-next/hardhat-chai-matchers/test/matchers/changeTokenBalance.ts similarity index 98% rename from v-next/hardhat-chai-matchers/test/changeTokenBalance.ts rename to v-next/hardhat-chai-matchers/test/matchers/changeTokenBalance.ts index 8f99eeb303..3e003b644b 100644 --- a/v-next/hardhat-chai-matchers/test/changeTokenBalance.ts +++ b/v-next/hardhat-chai-matchers/test/matchers/changeTokenBalance.ts @@ -1,9 +1,9 @@ +import type { Token } from "../../src/internal/matchers/changeTokenBalance.js"; import type { AnotherContract, EventsContract, MatchersContract, -} from "./helpers/contracts.js"; -import type { Token } from "../src/internal/matchers/changeTokenBalance.js"; +} from "../helpers/contracts.js"; import type { EthereumProvider } from "@ignored/hardhat-vnext/types/providers"; import type { HardhatEthers, @@ -25,12 +25,12 @@ import { } from "@nomicfoundation/hardhat-test-utils"; import { AssertionError, expect } from "chai"; -import { addChaiMatchers } from "../src/internal/add-chai-matchers.js"; +import { addChaiMatchers } from "../../src/internal/add-chai-matchers.js"; import { CHANGE_TOKEN_BALANCE_MATCHER, CHANGE_TOKEN_BALANCES_MATCHER, -} from "../src/internal/constants.js"; -import { clearTokenDescriptionsCache } from "../src/internal/matchers/changeTokenBalance.js"; +} from "../../src/internal/constants.js"; +import { clearTokenDescriptionsCache } from "../../src/internal/matchers/changeTokenBalance.js"; addChaiMatchers(); @@ -924,7 +924,7 @@ describe("INTEGRATION: changeTokenBalance and changeTokenBalances matchers", () } catch (e) { hasProperStackTrace = util .inspect(e) - .includes(path.join("test", "changeTokenBalance.ts")); + .includes(path.join("test", "matchers", "changeTokenBalance.ts")); } expect(hasProperStackTrace).to.equal(true); }); @@ -943,7 +943,7 @@ describe("INTEGRATION: changeTokenBalance and changeTokenBalances matchers", () ); } catch (e) { expect(util.inspect(e)).to.include( - path.join("test", "changeTokenBalance.ts"), + path.join("test", "matchers", "changeTokenBalance.ts"), ); return; } diff --git a/v-next/hardhat-chai-matchers/test/events.ts b/v-next/hardhat-chai-matchers/test/matchers/events.ts similarity index 99% rename from v-next/hardhat-chai-matchers/test/events.ts rename to v-next/hardhat-chai-matchers/test/matchers/events.ts index 9a5e7b7f18..c7903b108e 100644 --- a/v-next/hardhat-chai-matchers/test/events.ts +++ b/v-next/hardhat-chai-matchers/test/matchers/events.ts @@ -3,7 +3,7 @@ import type { EventsContract, MatchersContract, OverrideEventContract, -} from "./helpers/contracts.js"; +} from "../helpers/contracts.js"; import type { HardhatEthers } from "@ignored/hardhat-vnext-ethers/types"; import { beforeEach, describe, it } from "node:test"; @@ -17,8 +17,8 @@ import { id } from "ethers/hash"; import { hexlify, toUtf8Bytes, zeroPadValue } from "ethers/utils"; import { Wallet } from "ethers/wallet"; -import { addChaiMatchers } from "../src/internal/add-chai-matchers.js"; -import { anyUint, anyValue } from "../src/withArgs.js"; +import { addChaiMatchers } from "../../src/internal/add-chai-matchers.js"; +import { anyUint, anyValue } from "../../src/withArgs.js"; addChaiMatchers(); diff --git a/v-next/hardhat-chai-matchers/test/hexEqual.ts b/v-next/hardhat-chai-matchers/test/matchers/hexEqual.ts similarity index 97% rename from v-next/hardhat-chai-matchers/test/hexEqual.ts rename to v-next/hardhat-chai-matchers/test/matchers/hexEqual.ts index 1db4ecccc4..3d14b21ece 100644 --- a/v-next/hardhat-chai-matchers/test/hexEqual.ts +++ b/v-next/hardhat-chai-matchers/test/matchers/hexEqual.ts @@ -2,7 +2,7 @@ import { describe, it } from "node:test"; import { AssertionError, expect } from "chai"; -import { addChaiMatchers } from "../src/internal/add-chai-matchers.js"; +import { addChaiMatchers } from "../../src/internal/add-chai-matchers.js"; addChaiMatchers(); diff --git a/v-next/hardhat-chai-matchers/test/panic.ts b/v-next/hardhat-chai-matchers/test/matchers/panic.ts similarity index 89% rename from v-next/hardhat-chai-matchers/test/panic.ts rename to v-next/hardhat-chai-matchers/test/matchers/panic.ts index 3d165864ff..1fa08f6e99 100644 --- a/v-next/hardhat-chai-matchers/test/panic.ts +++ b/v-next/hardhat-chai-matchers/test/matchers/panic.ts @@ -6,7 +6,7 @@ import { toBigInt } from "ethers"; import { PANIC_CODES, panicErrorCodeToReason, -} from "../src/internal/matchers/reverted/panic.js"; +} from "../../src/internal/matchers/reverted/panic.js"; describe("panic codes", () => { it("all exported panic codes should have a description", async () => { diff --git a/v-next/hardhat-chai-matchers/test/properAddress.ts b/v-next/hardhat-chai-matchers/test/matchers/properAddress.ts similarity index 95% rename from v-next/hardhat-chai-matchers/test/properAddress.ts rename to v-next/hardhat-chai-matchers/test/matchers/properAddress.ts index 53cc98eb2b..ba5cb40701 100644 --- a/v-next/hardhat-chai-matchers/test/properAddress.ts +++ b/v-next/hardhat-chai-matchers/test/matchers/properAddress.ts @@ -4,7 +4,7 @@ import { describe, it } from "node:test"; import { expect, AssertionError } from "chai"; -import { addChaiMatchers } from "../src/internal/add-chai-matchers.js"; +import { addChaiMatchers } from "../../src/internal/add-chai-matchers.js"; addChaiMatchers(); diff --git a/v-next/hardhat-chai-matchers/test/properHex.ts b/v-next/hardhat-chai-matchers/test/matchers/properHex.ts similarity index 96% rename from v-next/hardhat-chai-matchers/test/properHex.ts rename to v-next/hardhat-chai-matchers/test/matchers/properHex.ts index 6704dabfad..f9edea853d 100644 --- a/v-next/hardhat-chai-matchers/test/properHex.ts +++ b/v-next/hardhat-chai-matchers/test/matchers/properHex.ts @@ -2,7 +2,7 @@ import { describe, it } from "node:test"; import { AssertionError, expect } from "chai"; -import { addChaiMatchers } from "../src/internal/add-chai-matchers.js"; +import { addChaiMatchers } from "../../src/internal/add-chai-matchers.js"; addChaiMatchers(); diff --git a/v-next/hardhat-chai-matchers/test/properPrivateKey.ts b/v-next/hardhat-chai-matchers/test/matchers/properPrivateKey.ts similarity index 95% rename from v-next/hardhat-chai-matchers/test/properPrivateKey.ts rename to v-next/hardhat-chai-matchers/test/matchers/properPrivateKey.ts index 69405dc3a6..763e653ca0 100644 --- a/v-next/hardhat-chai-matchers/test/properPrivateKey.ts +++ b/v-next/hardhat-chai-matchers/test/matchers/properPrivateKey.ts @@ -2,7 +2,7 @@ import { describe, it } from "node:test"; import { expect, AssertionError } from "chai"; -import { addChaiMatchers } from "../src/internal/add-chai-matchers.js"; +import { addChaiMatchers } from "../../src/internal/add-chai-matchers.js"; /* eslint-disable @typescript-eslint/no-unused-expressions -- allow all the expressions */ diff --git a/v-next/hardhat-chai-matchers/test/reverted/reverted.ts b/v-next/hardhat-chai-matchers/test/matchers/reverted/reverted.ts similarity index 98% rename from v-next/hardhat-chai-matchers/test/reverted/reverted.ts rename to v-next/hardhat-chai-matchers/test/matchers/reverted/reverted.ts index e3743c4cca..3a6080bcdf 100644 --- a/v-next/hardhat-chai-matchers/test/reverted/reverted.ts +++ b/v-next/hardhat-chai-matchers/test/matchers/reverted/reverted.ts @@ -1,4 +1,4 @@ -import type { MatchersContract } from "../helpers/contracts.js"; +import type { MatchersContract } from "../../helpers/contracts.js"; import type { EthereumProvider } from "@ignored/hardhat-vnext/types/providers"; import type { HardhatEthers } from "@ignored/hardhat-vnext-ethers/types"; @@ -16,13 +16,13 @@ import { } from "@nomicfoundation/hardhat-test-utils"; import { AssertionError, expect } from "chai"; -import { addChaiMatchers } from "../../src/internal/add-chai-matchers.js"; +import { addChaiMatchers } from "../../../src/internal/add-chai-matchers.js"; import { runSuccessfulAsserts, runFailedAsserts, mineSuccessfulTransaction, mineRevertedTransaction, -} from "../helpers/helpers.js"; +} from "../../helpers/helpers.js"; addChaiMatchers(); @@ -472,7 +472,7 @@ describe("INTEGRATION: Reverted", () => { const errorString = util.inspect(e); expect(errorString).to.include("Expected transaction to be reverted"); expect(errorString).to.include( - path.join("test", "reverted", "reverted.ts"), + path.join("test", "matchers", "reverted", "reverted.ts"), ); return; } diff --git a/v-next/hardhat-chai-matchers/test/reverted/revertedWith.ts b/v-next/hardhat-chai-matchers/test/matchers/reverted/revertedWith.ts similarity index 97% rename from v-next/hardhat-chai-matchers/test/reverted/revertedWith.ts rename to v-next/hardhat-chai-matchers/test/matchers/reverted/revertedWith.ts index e98202a404..353faa2d04 100644 --- a/v-next/hardhat-chai-matchers/test/reverted/revertedWith.ts +++ b/v-next/hardhat-chai-matchers/test/matchers/reverted/revertedWith.ts @@ -1,4 +1,4 @@ -import type { MatchersContract } from "../helpers/contracts.js"; +import type { MatchersContract } from "../../helpers/contracts.js"; import type { EthereumProvider } from "@ignored/hardhat-vnext/types/providers"; import type { HardhatEthers } from "@ignored/hardhat-vnext-ethers/types"; @@ -15,12 +15,12 @@ import { } from "@nomicfoundation/hardhat-test-utils"; import { AssertionError, expect } from "chai"; -import { addChaiMatchers } from "../../src/internal/add-chai-matchers.js"; +import { addChaiMatchers } from "../../../src/internal/add-chai-matchers.js"; import { runSuccessfulAsserts, runFailedAsserts, mineSuccessfulTransaction, -} from "../helpers/helpers.js"; +} from "../../helpers/helpers.js"; addChaiMatchers(); @@ -269,7 +269,7 @@ describe("INTEGRATION: Reverted with", () => { "Expected transaction to be reverted with reason 'foo', but it reverted with reason 'bar'", ); expect(errorString).to.include( - path.join("test", "reverted", "revertedWith.ts"), + path.join("test", "matchers", "reverted", "revertedWith.ts"), ); return; } diff --git a/v-next/hardhat-chai-matchers/test/reverted/revertedWithCustomError.ts b/v-next/hardhat-chai-matchers/test/matchers/reverted/revertedWithCustomError.ts similarity index 98% rename from v-next/hardhat-chai-matchers/test/reverted/revertedWithCustomError.ts rename to v-next/hardhat-chai-matchers/test/matchers/reverted/revertedWithCustomError.ts index c237df3f43..33ae5b3fa8 100644 --- a/v-next/hardhat-chai-matchers/test/reverted/revertedWithCustomError.ts +++ b/v-next/hardhat-chai-matchers/test/matchers/reverted/revertedWithCustomError.ts @@ -1,4 +1,4 @@ -import type { MatchersContract } from "../helpers/contracts.js"; +import type { MatchersContract } from "../../helpers/contracts.js"; import type { EthereumProvider } from "@ignored/hardhat-vnext/types/providers"; import type { HardhatEthers } from "@ignored/hardhat-vnext-ethers/types"; @@ -15,13 +15,13 @@ import { } from "@nomicfoundation/hardhat-test-utils"; import { AssertionError, expect } from "chai"; -import { addChaiMatchers } from "../../src/internal/add-chai-matchers.js"; -import { anyUint, anyValue } from "../../src/withArgs.js"; +import { addChaiMatchers } from "../../../src/internal/add-chai-matchers.js"; +import { anyUint, anyValue } from "../../../src/withArgs.js"; import { runSuccessfulAsserts, runFailedAsserts, mineSuccessfulTransaction, -} from "../helpers/helpers.js"; +} from "../../helpers/helpers.js"; addChaiMatchers(); @@ -555,7 +555,12 @@ describe("INTEGRATION: Reverted with custom error", () => { "Expected transaction to be reverted with custom error 'SomeCustomError', but it reverted with reason 'some reason'", ); expect(errorString).to.include( - path.join("test", "reverted", "revertedWithCustomError.ts"), + path.join( + "test", + "matchers", + "reverted", + "revertedWithCustomError.ts", + ), ); return; } diff --git a/v-next/hardhat-chai-matchers/test/reverted/revertedWithPanic.ts b/v-next/hardhat-chai-matchers/test/matchers/reverted/revertedWithPanic.ts similarity index 97% rename from v-next/hardhat-chai-matchers/test/reverted/revertedWithPanic.ts rename to v-next/hardhat-chai-matchers/test/matchers/reverted/revertedWithPanic.ts index 1e6936544f..1576f2e4e5 100644 --- a/v-next/hardhat-chai-matchers/test/reverted/revertedWithPanic.ts +++ b/v-next/hardhat-chai-matchers/test/matchers/reverted/revertedWithPanic.ts @@ -1,4 +1,4 @@ -import type { MatchersContract } from "../helpers/contracts.js"; +import type { MatchersContract } from "../../helpers/contracts.js"; import type { EthereumProvider } from "@ignored/hardhat-vnext/types/providers"; import type { HardhatEthers } from "@ignored/hardhat-vnext-ethers/types"; @@ -15,13 +15,13 @@ import { } from "@nomicfoundation/hardhat-test-utils"; import { AssertionError, expect } from "chai"; -import { addChaiMatchers } from "../../src/internal/add-chai-matchers.js"; -import { PANIC_CODES } from "../../src/panic.js"; +import { addChaiMatchers } from "../../../src/internal/add-chai-matchers.js"; +import { PANIC_CODES } from "../../../src/panic.js"; import { runSuccessfulAsserts, runFailedAsserts, mineSuccessfulTransaction, -} from "../helpers/helpers.js"; +} from "../../helpers/helpers.js"; addChaiMatchers(); @@ -341,7 +341,7 @@ describe("INTEGRATION: Reverted with panic", () => { "Expected transaction NOT to be reverted with some panic code, but it reverted with panic code 0x01 (Assertion error)", ); expect(errorString).to.include( - path.join("test", "reverted", "revertedWithPanic.ts"), + path.join("test", "matchers", "reverted", "revertedWithPanic.ts"), ); return; } diff --git a/v-next/hardhat-chai-matchers/test/reverted/revertedWithoutReason.ts b/v-next/hardhat-chai-matchers/test/matchers/reverted/revertedWithoutReason.ts similarity index 94% rename from v-next/hardhat-chai-matchers/test/reverted/revertedWithoutReason.ts rename to v-next/hardhat-chai-matchers/test/matchers/reverted/revertedWithoutReason.ts index 121da7ca3a..26437fd271 100644 --- a/v-next/hardhat-chai-matchers/test/reverted/revertedWithoutReason.ts +++ b/v-next/hardhat-chai-matchers/test/matchers/reverted/revertedWithoutReason.ts @@ -1,4 +1,4 @@ -import type { MatchersContract } from "../helpers/contracts.js"; +import type { MatchersContract } from "../../helpers/contracts.js"; import type { HardhatEthers } from "@ignored/hardhat-vnext-ethers/types"; import path from "node:path"; @@ -10,8 +10,11 @@ import hardhatEthersPlugin from "@ignored/hardhat-vnext-ethers"; import { useFixtureProject } from "@nomicfoundation/hardhat-test-utils"; import { AssertionError, expect } from "chai"; -import { addChaiMatchers } from "../../src/internal/add-chai-matchers.js"; -import { runSuccessfulAsserts, runFailedAsserts } from "../helpers/helpers.js"; +import { addChaiMatchers } from "../../../src/internal/add-chai-matchers.js"; +import { + runSuccessfulAsserts, + runFailedAsserts, +} from "../../helpers/helpers.js"; addChaiMatchers(); @@ -206,7 +209,12 @@ describe("INTEGRATION: Reverted without reason", () => { "Expected transaction NOT to be reverted without a reason, but it was", ); expect(errorString).to.include( - path.join("test", "reverted", "revertedWithoutReason.ts"), + path.join( + "test", + "matchers", + "reverted", + "revertedWithoutReason.ts", + ), ); return; } From 152d3cb4ef24870e9fdd44857fcf5cc7c550bb8d Mon Sep 17 00:00:00 2001 From: ChrisD <18092467+ChristopherDedominici@users.noreply.github.com> Date: Thu, 21 Nov 2024 18:53:00 +0100 Subject: [PATCH 27/61] tmp commit: add artifacts --- .../test/fixture-projects/.gitignore | 4 +- .../16efa488de3a0283218beddfadbd1423.json | 1 + .../ChangeEtherBalance.dbg.json | 4 + .../ChangeEtherBalance.json | 35 ++ .../Events.sol/AnotherContract.dbg.json | 4 + .../contracts/Events.sol/AnotherContract.json | 37 ++ .../contracts/Events.sol/Events.dbg.json | 4 + .../contracts/Events.sol/Events.json | 527 ++++++++++++++++++ .../Events.sol/OverrideEventContract.dbg.json | 4 + .../Events.sol/OverrideEventContract.json | 50 ++ .../AnotherMatchersContract.dbg.json | 4 + .../Matchers.sol/AnotherMatchersContract.json | 30 + .../contracts/Matchers.sol/Matchers.dbg.json | 4 + .../contracts/Matchers.sol/Matchers.json | 333 +++++++++++ .../contracts/Token.sol/MockToken.dbg.json | 4 + .../contracts/Token.sol/MockToken.json | 183 ++++++ .../contracts/Token.sol/NotAToken.dbg.json | 4 + .../contracts/Token.sol/NotAToken.json | 10 + .../Token.sol/TokenWithOnlyName.dbg.json | 4 + .../Token.sol/TokenWithOnlyName.json | 170 ++++++ .../TokenWithoutNameNorSymbol.dbg.json | 4 + .../Token.sol/TokenWithoutNameNorSymbol.json | 162 ++++++ .../cache/solidity-files-cache.json | 151 +++++ 23 files changed, 1731 insertions(+), 2 deletions(-) create mode 100644 v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/build-info/16efa488de3a0283218beddfadbd1423.json create mode 100644 v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/ChangeEtherBalance.sol/ChangeEtherBalance.dbg.json create mode 100644 v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/ChangeEtherBalance.sol/ChangeEtherBalance.json create mode 100644 v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Events.sol/AnotherContract.dbg.json create mode 100644 v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Events.sol/AnotherContract.json create mode 100644 v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Events.sol/Events.dbg.json create mode 100644 v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Events.sol/Events.json create mode 100644 v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Events.sol/OverrideEventContract.dbg.json create mode 100644 v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Events.sol/OverrideEventContract.json create mode 100644 v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Matchers.sol/AnotherMatchersContract.dbg.json create mode 100644 v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Matchers.sol/AnotherMatchersContract.json create mode 100644 v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Matchers.sol/Matchers.dbg.json create mode 100644 v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Matchers.sol/Matchers.json create mode 100644 v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Token.sol/MockToken.dbg.json create mode 100644 v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Token.sol/MockToken.json create mode 100644 v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Token.sol/NotAToken.dbg.json create mode 100644 v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Token.sol/NotAToken.json create mode 100644 v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Token.sol/TokenWithOnlyName.dbg.json create mode 100644 v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Token.sol/TokenWithOnlyName.json create mode 100644 v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Token.sol/TokenWithoutNameNorSymbol.dbg.json create mode 100644 v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Token.sol/TokenWithoutNameNorSymbol.json create mode 100644 v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/cache/solidity-files-cache.json diff --git a/v-next/hardhat-chai-matchers/test/fixture-projects/.gitignore b/v-next/hardhat-chai-matchers/test/fixture-projects/.gitignore index e7f801166c..e1084b1e5d 100644 --- a/v-next/hardhat-chai-matchers/test/fixture-projects/.gitignore +++ b/v-next/hardhat-chai-matchers/test/fixture-projects/.gitignore @@ -1,2 +1,2 @@ -artifacts/ -cache/ +# artifacts/ +# cache/ diff --git a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/build-info/16efa488de3a0283218beddfadbd1423.json b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/build-info/16efa488de3a0283218beddfadbd1423.json new file mode 100644 index 0000000000..2a1c7ecac1 --- /dev/null +++ b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/build-info/16efa488de3a0283218beddfadbd1423.json @@ -0,0 +1 @@ +{"id":"16efa488de3a0283218beddfadbd1423","_format":"hh-sol-build-info-1","solcVersion":"0.8.4","solcLongVersion":"0.8.4+commit.c7e474f2","input":{"language":"Solidity","sources":{"contracts/ChangeEtherBalance.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\ncontract ChangeEtherBalance {\n function returnHalf() public payable {\n payable(msg.sender).transfer(msg.value / 2);\n }\n\n function transferTo(address addr) public payable {\n payable(addr).transfer(msg.value);\n }\n\n receive() external payable {}\n}"},"contracts/Events.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\ncontract Events {\n AnotherContract anotherContract;\n\n struct Struct {\n uint u;\n uint v;\n }\n\n event WithoutArgs();\n event WithUintArg(uint u);\n event WithIntArg(int i);\n event WithAddressArg(address a);\n event WithTwoUintArgs(uint u, uint v);\n event WithStringArg(string s);\n event WithTwoStringArgs(string s, string t);\n event WithIndexedStringArg(string indexed s);\n event WithBytesArg(bytes b);\n event WithIndexedBytesArg(bytes indexed b);\n event WithBytes32Arg(bytes32 b);\n event WithStructArg(Struct s);\n event WithIndexedBytes32Arg(bytes32 indexed b);\n event WithUintArray(uint[2] a);\n event WithBytes32Array(bytes32[2] a);\n\n constructor (AnotherContract c) {\n anotherContract = c;\n }\n\n function doNotEmit() public {}\n\n function emitWithoutArgs() public {\n emit WithoutArgs();\n }\n\n function emitUint(uint u) public {\n emit WithUintArg(u);\n }\n\n function emitInt(int i) public {\n emit WithIntArg(i);\n }\n\n function emitAddress(address a) public {\n emit WithAddressArg(a);\n }\n\n function emitUintTwice(uint u, uint v) public {\n emit WithUintArg(u);\n emit WithUintArg(v);\n }\n\n function emitTwoUints(uint u, uint v) public {\n emit WithTwoUintArgs(u, v);\n }\n\n function emitString(string memory s) public {\n emit WithStringArg(s);\n }\n\n function emitIndexedString(string memory s) public {\n emit WithIndexedStringArg(s);\n }\n\n function emitBytes(bytes memory b) public {\n emit WithBytesArg(b);\n }\n\n function emitIndexedBytes(bytes memory b) public {\n emit WithIndexedBytesArg(b);\n }\n\n function emitBytes32(bytes32 b) public {\n emit WithBytes32Arg(b);\n }\n\n function emitIndexedBytes32(bytes32 b) public {\n emit WithIndexedBytes32Arg(b);\n }\n\n function emitUintAndString(uint u, string memory s) public {\n emit WithStringArg(s);\n emit WithUintArg(u);\n }\n\n function emitTwoUintsAndTwoStrings(uint u, uint v, string memory s, string memory t) public {\n emit WithTwoUintArgs(u, v);\n emit WithTwoStringArgs(s, t);\n }\n\n function emitStruct(uint u, uint v) public {\n emit WithStructArg(Struct(u, v));\n }\n\n function emitUintArray(uint u, uint v) public {\n emit WithUintArray([u, v]);\n }\n\n function emitBytes32Array(bytes32 b, bytes32 c) public {\n emit WithBytes32Array([b, c]);\n }\n\n function emitNestedUintFromSameContract(uint u) public {\n emitUint(u);\n }\n\n function emitNestedUintFromAnotherContract(uint u) public {\n anotherContract.emitUint(u);\n }\n}\n\ncontract AnotherContract {\n event WithUintArg(uint u);\n\n function emitUint(uint u) public {\n emit WithUintArg(u);\n }\n}\n\ncontract OverrideEventContract {\n event simpleEvent(uint u);\n event simpleEvent();\n\n function emitSimpleEventWithUintArg(uint u) public {\n emit simpleEvent(u);\n }\n\n function emitSimpleEventWithoutArg() public {\n emit simpleEvent();\n }\n}\n"},"contracts/Matchers.sol":{"content":"// SPDX-License-Identifier: UNLICENSED\n\npragma solidity ^0.8.0;\n\ncontract Matchers {\n uint x;\n\n event SomeEvent();\n\n AnotherMatchersContract anotherContract;\n\n struct Pair { uint a; uint b; }\n\n error SomeCustomError();\n error AnotherCustomError();\n error CustomErrorWithInt(int);\n error CustomErrorWithUint(uint nameToForceEthersToUseAnArrayLikeWithNamedProperties);\n error CustomErrorWithUintAndString(uint, string);\n error CustomErrorWithPair(Pair);\n\n constructor () {\n anotherContract = new AnotherMatchersContract();\n }\n\n function succeeds() public {\n x++; // just to avoid compiler warnings\n }\n\n function succeedsView() public view returns (uint) {\n return x;\n }\n\n function revertsWith(string memory reason) public {\n x++;\n require(false, reason);\n }\n\n function revertsWithView(string memory reason) public pure {\n require(false, reason);\n }\n\n function revertsWithoutReason() public {\n x++;\n require(false);\n }\n\n function revertsWithoutReasonView() public pure {\n require(false);\n }\n\n function panicAssert() public {\n x++;\n assert(false);\n }\n\n function panicAssertView() public pure {\n assert(false);\n }\n\n function revertWithSomeCustomError() public {\n x++;\n revert SomeCustomError();\n }\n\n function revertWithSomeCustomErrorView() public pure {\n revert SomeCustomError();\n }\n\n function revertWithAnotherCustomError() public {\n x++;\n revert AnotherCustomError();\n }\n\n function revertWithAnotherCustomErrorView() public pure {\n revert AnotherCustomError();\n }\n\n function revertWithAnotherContractCustomError() public {\n x++;\n anotherContract.revertWithYetAnotherCustomError();\n }\n\n function revertWithAnotherContractCustomErrorView() public view {\n anotherContract.revertWithYetAnotherCustomErrorView();\n }\n\n function revertWithCustomErrorWithUint(uint n) public {\n x++;\n revert CustomErrorWithUint(n);\n }\n\n function revertWithCustomErrorWithUintView(uint n) public pure {\n revert CustomErrorWithUint(n);\n }\n\n function revertWithCustomErrorWithInt(int i) public {\n x++;\n revert CustomErrorWithInt(i);\n }\n\n function revertWithCustomErrorWithIntView(int i) public pure {\n revert CustomErrorWithInt(i);\n }\n\n function revertWithCustomErrorWithUintAndString(uint n, string memory s) public {\n x++;\n revert CustomErrorWithUintAndString(n, s);\n }\n\n function revertWithCustomErrorWithUintAndStringView(uint n, string memory s) public pure {\n revert CustomErrorWithUintAndString(n, s);\n }\n\n function revertWithCustomErrorWithPair(uint a, uint b) public {\n x++;\n revert CustomErrorWithPair(Pair(a, b));\n }\n\n function revertWithCustomErrorWithPairView(uint a, uint b) public pure {\n revert CustomErrorWithPair(Pair(a, b));\n }\n}\n\ncontract AnotherMatchersContract {\n uint x;\n\n error YetAnotherCustomError();\n\n function revertWithYetAnotherCustomError() public {\n x++;\n revert YetAnotherCustomError();\n }\n\n function revertWithYetAnotherCustomErrorView() public pure {\n revert YetAnotherCustomError();\n }\n}\n"},"contracts/Token.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\ncontract TokenWithoutNameNorSymbol {\n uint public decimals = 1;\n\n uint public totalSupply;\n mapping(address => uint) public balanceOf;\n mapping(address => mapping(address => uint)) allowances;\n\n constructor () {\n totalSupply = 1_000_000_000;\n balanceOf[msg.sender] = totalSupply;\n }\n\n function transfer(address to, uint value) public returns (bool) {\n require(value > 0, \"Transferred value is zero\");\n\n balanceOf[msg.sender] -= value;\n balanceOf[to] += value;\n\n return true;\n }\n\n function allowance(address owner, address spender) public view returns (uint256 remaining) {\n return allowances[owner][spender];\n }\n\n function approve(address spender, uint256 value) public returns (bool success) {\n allowances[msg.sender][spender] = value;\n return true;\n }\n\n function transferFrom(address from, address to, uint256 value) public returns (bool) {\n require(allowance(from, msg.sender) >= value, \"Insufficient allowance\");\n\n allowances[from][msg.sender] -= value;\n balanceOf[from] -= value;\n balanceOf[to] += value;\n\n return true;\n }\n}\n\ncontract TokenWithOnlyName is TokenWithoutNameNorSymbol {\n string public name = \"MockToken\";\n}\n\ncontract MockToken is TokenWithoutNameNorSymbol {\n string public name = \"MockToken\";\n string public symbol = \"MCK\";\n}\n\ncontract NotAToken {}\n"}},"settings":{"optimizer":{"enabled":false,"runs":200},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"],"":["ast"]}}}},"output":{"sources":{"contracts/ChangeEtherBalance.sol":{"ast":{"absolutePath":"contracts/ChangeEtherBalance.sol","exportedSymbols":{"ChangeEtherBalance":[37]},"id":38,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"32:23:0"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":37,"linearizedBaseContracts":[37],"name":"ChangeEtherBalance","nameLocation":"66:18:0","nodeType":"ContractDefinition","nodes":[{"body":{"id":16,"nodeType":"Block","src":"126:54:0","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":10,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"161:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":11,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"value","nodeType":"MemberAccess","src":"161:9:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"32","id":12,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"173:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"161:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"expression":{"id":6,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"140:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":7,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"140:10:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":5,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"132:8:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_payable_$","typeString":"type(address payable)"},"typeName":{"id":4,"name":"address","nodeType":"ElementaryTypeName","src":"132:8:0","stateMutability":"payable","typeDescriptions":{}}},"id":8,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"132:19:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":9,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"transfer","nodeType":"MemberAccess","src":"132:28:0","typeDescriptions":{"typeIdentifier":"t_function_transfer_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":14,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"132:43:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15,"nodeType":"ExpressionStatement","src":"132:43:0"}]},"functionSelector":"b019946e","id":17,"implemented":true,"kind":"function","modifiers":[],"name":"returnHalf","nameLocation":"98:10:0","nodeType":"FunctionDefinition","parameters":{"id":2,"nodeType":"ParameterList","parameters":[],"src":"108:2:0"},"returnParameters":{"id":3,"nodeType":"ParameterList","parameters":[],"src":"126:0:0"},"scope":37,"src":"89:91:0","stateMutability":"payable","virtual":false,"visibility":"public"},{"body":{"id":31,"nodeType":"Block","src":"233:44:0","statements":[{"expression":{"arguments":[{"expression":{"id":27,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"262:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":28,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"value","nodeType":"MemberAccess","src":"262:9:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":24,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19,"src":"247:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":23,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"239:8:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_payable_$","typeString":"type(address payable)"},"typeName":{"id":22,"name":"address","nodeType":"ElementaryTypeName","src":"239:8:0","stateMutability":"payable","typeDescriptions":{}}},"id":25,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"239:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":26,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"transfer","nodeType":"MemberAccess","src":"239:22:0","typeDescriptions":{"typeIdentifier":"t_function_transfer_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":29,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"239:33:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":30,"nodeType":"ExpressionStatement","src":"239:33:0"}]},"functionSelector":"a03fa7e3","id":32,"implemented":true,"kind":"function","modifiers":[],"name":"transferTo","nameLocation":"193:10:0","nodeType":"FunctionDefinition","parameters":{"id":20,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19,"mutability":"mutable","name":"addr","nameLocation":"212:4:0","nodeType":"VariableDeclaration","scope":32,"src":"204:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18,"name":"address","nodeType":"ElementaryTypeName","src":"204:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"203:14:0"},"returnParameters":{"id":21,"nodeType":"ParameterList","parameters":[],"src":"233:0:0"},"scope":37,"src":"184:93:0","stateMutability":"payable","virtual":false,"visibility":"public"},{"body":{"id":35,"nodeType":"Block","src":"308:2:0","statements":[]},"id":36,"implemented":true,"kind":"receive","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":33,"nodeType":"ParameterList","parameters":[],"src":"288:2:0"},"returnParameters":{"id":34,"nodeType":"ParameterList","parameters":[],"src":"308:0:0"},"scope":37,"src":"281:29:0","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":38,"src":"57:255:0","usedErrors":[]}],"src":"32:280:0"},"id":0},"contracts/Events.sol":{"ast":{"absolutePath":"contracts/Events.sol","exportedSymbols":{"AnotherContract":[374],"Events":[359],"OverrideEventContract":[398]},"id":399,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":39,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"32:23:1"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":359,"linearizedBaseContracts":[359],"name":"Events","nameLocation":"66:6:1","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":42,"mutability":"mutable","name":"anotherContract","nameLocation":"93:15:1","nodeType":"VariableDeclaration","scope":359,"src":"77:31:1","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_AnotherContract_$374","typeString":"contract AnotherContract"},"typeName":{"id":41,"nodeType":"UserDefinedTypeName","pathNode":{"id":40,"name":"AnotherContract","nodeType":"IdentifierPath","referencedDeclaration":374,"src":"77:15:1"},"referencedDeclaration":374,"src":"77:15:1","typeDescriptions":{"typeIdentifier":"t_contract$_AnotherContract_$374","typeString":"contract AnotherContract"}},"visibility":"internal"},{"canonicalName":"Events.Struct","id":47,"members":[{"constant":false,"id":44,"mutability":"mutable","name":"u","nameLocation":"138:1:1","nodeType":"VariableDeclaration","scope":47,"src":"133:6:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":43,"name":"uint","nodeType":"ElementaryTypeName","src":"133:4:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":46,"mutability":"mutable","name":"v","nameLocation":"150:1:1","nodeType":"VariableDeclaration","scope":47,"src":"145:6:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":45,"name":"uint","nodeType":"ElementaryTypeName","src":"145:4:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"Struct","nameLocation":"120:6:1","nodeType":"StructDefinition","scope":359,"src":"113:43:1","visibility":"public"},{"anonymous":false,"id":49,"name":"WithoutArgs","nameLocation":"166:11:1","nodeType":"EventDefinition","parameters":{"id":48,"nodeType":"ParameterList","parameters":[],"src":"177:2:1"},"src":"160:20:1"},{"anonymous":false,"id":53,"name":"WithUintArg","nameLocation":"189:11:1","nodeType":"EventDefinition","parameters":{"id":52,"nodeType":"ParameterList","parameters":[{"constant":false,"id":51,"indexed":false,"mutability":"mutable","name":"u","nameLocation":"206:1:1","nodeType":"VariableDeclaration","scope":53,"src":"201:6:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":50,"name":"uint","nodeType":"ElementaryTypeName","src":"201:4:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"200:8:1"},"src":"183:26:1"},{"anonymous":false,"id":57,"name":"WithIntArg","nameLocation":"218:10:1","nodeType":"EventDefinition","parameters":{"id":56,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55,"indexed":false,"mutability":"mutable","name":"i","nameLocation":"233:1:1","nodeType":"VariableDeclaration","scope":57,"src":"229:5:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":54,"name":"int","nodeType":"ElementaryTypeName","src":"229:3:1","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"228:7:1"},"src":"212:24:1"},{"anonymous":false,"id":61,"name":"WithAddressArg","nameLocation":"245:14:1","nodeType":"EventDefinition","parameters":{"id":60,"nodeType":"ParameterList","parameters":[{"constant":false,"id":59,"indexed":false,"mutability":"mutable","name":"a","nameLocation":"268:1:1","nodeType":"VariableDeclaration","scope":61,"src":"260:9:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":58,"name":"address","nodeType":"ElementaryTypeName","src":"260:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"259:11:1"},"src":"239:32:1"},{"anonymous":false,"id":67,"name":"WithTwoUintArgs","nameLocation":"280:15:1","nodeType":"EventDefinition","parameters":{"id":66,"nodeType":"ParameterList","parameters":[{"constant":false,"id":63,"indexed":false,"mutability":"mutable","name":"u","nameLocation":"301:1:1","nodeType":"VariableDeclaration","scope":67,"src":"296:6:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":62,"name":"uint","nodeType":"ElementaryTypeName","src":"296:4:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":65,"indexed":false,"mutability":"mutable","name":"v","nameLocation":"309:1:1","nodeType":"VariableDeclaration","scope":67,"src":"304:6:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":64,"name":"uint","nodeType":"ElementaryTypeName","src":"304:4:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"295:16:1"},"src":"274:38:1"},{"anonymous":false,"id":71,"name":"WithStringArg","nameLocation":"321:13:1","nodeType":"EventDefinition","parameters":{"id":70,"nodeType":"ParameterList","parameters":[{"constant":false,"id":69,"indexed":false,"mutability":"mutable","name":"s","nameLocation":"342:1:1","nodeType":"VariableDeclaration","scope":71,"src":"335:8:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":68,"name":"string","nodeType":"ElementaryTypeName","src":"335:6:1","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"334:10:1"},"src":"315:30:1"},{"anonymous":false,"id":77,"name":"WithTwoStringArgs","nameLocation":"354:17:1","nodeType":"EventDefinition","parameters":{"id":76,"nodeType":"ParameterList","parameters":[{"constant":false,"id":73,"indexed":false,"mutability":"mutable","name":"s","nameLocation":"379:1:1","nodeType":"VariableDeclaration","scope":77,"src":"372:8:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":72,"name":"string","nodeType":"ElementaryTypeName","src":"372:6:1","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":75,"indexed":false,"mutability":"mutable","name":"t","nameLocation":"389:1:1","nodeType":"VariableDeclaration","scope":77,"src":"382:8:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":74,"name":"string","nodeType":"ElementaryTypeName","src":"382:6:1","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"371:20:1"},"src":"348:44:1"},{"anonymous":false,"id":81,"name":"WithIndexedStringArg","nameLocation":"401:20:1","nodeType":"EventDefinition","parameters":{"id":80,"nodeType":"ParameterList","parameters":[{"constant":false,"id":79,"indexed":true,"mutability":"mutable","name":"s","nameLocation":"437:1:1","nodeType":"VariableDeclaration","scope":81,"src":"422:16:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":78,"name":"string","nodeType":"ElementaryTypeName","src":"422:6:1","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"421:18:1"},"src":"395:45:1"},{"anonymous":false,"id":85,"name":"WithBytesArg","nameLocation":"449:12:1","nodeType":"EventDefinition","parameters":{"id":84,"nodeType":"ParameterList","parameters":[{"constant":false,"id":83,"indexed":false,"mutability":"mutable","name":"b","nameLocation":"468:1:1","nodeType":"VariableDeclaration","scope":85,"src":"462:7:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":82,"name":"bytes","nodeType":"ElementaryTypeName","src":"462:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"461:9:1"},"src":"443:28:1"},{"anonymous":false,"id":89,"name":"WithIndexedBytesArg","nameLocation":"480:19:1","nodeType":"EventDefinition","parameters":{"id":88,"nodeType":"ParameterList","parameters":[{"constant":false,"id":87,"indexed":true,"mutability":"mutable","name":"b","nameLocation":"514:1:1","nodeType":"VariableDeclaration","scope":89,"src":"500:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":86,"name":"bytes","nodeType":"ElementaryTypeName","src":"500:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"499:17:1"},"src":"474:43:1"},{"anonymous":false,"id":93,"name":"WithBytes32Arg","nameLocation":"526:14:1","nodeType":"EventDefinition","parameters":{"id":92,"nodeType":"ParameterList","parameters":[{"constant":false,"id":91,"indexed":false,"mutability":"mutable","name":"b","nameLocation":"549:1:1","nodeType":"VariableDeclaration","scope":93,"src":"541:9:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":90,"name":"bytes32","nodeType":"ElementaryTypeName","src":"541:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"540:11:1"},"src":"520:32:1"},{"anonymous":false,"id":98,"name":"WithStructArg","nameLocation":"561:13:1","nodeType":"EventDefinition","parameters":{"id":97,"nodeType":"ParameterList","parameters":[{"constant":false,"id":96,"indexed":false,"mutability":"mutable","name":"s","nameLocation":"582:1:1","nodeType":"VariableDeclaration","scope":98,"src":"575:8:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_Struct_$47_memory_ptr","typeString":"struct Events.Struct"},"typeName":{"id":95,"nodeType":"UserDefinedTypeName","pathNode":{"id":94,"name":"Struct","nodeType":"IdentifierPath","referencedDeclaration":47,"src":"575:6:1"},"referencedDeclaration":47,"src":"575:6:1","typeDescriptions":{"typeIdentifier":"t_struct$_Struct_$47_storage_ptr","typeString":"struct Events.Struct"}},"visibility":"internal"}],"src":"574:10:1"},"src":"555:30:1"},{"anonymous":false,"id":102,"name":"WithIndexedBytes32Arg","nameLocation":"594:21:1","nodeType":"EventDefinition","parameters":{"id":101,"nodeType":"ParameterList","parameters":[{"constant":false,"id":100,"indexed":true,"mutability":"mutable","name":"b","nameLocation":"632:1:1","nodeType":"VariableDeclaration","scope":102,"src":"616:17:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":99,"name":"bytes32","nodeType":"ElementaryTypeName","src":"616:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"615:19:1"},"src":"588:47:1"},{"anonymous":false,"id":108,"name":"WithUintArray","nameLocation":"644:13:1","nodeType":"EventDefinition","parameters":{"id":107,"nodeType":"ParameterList","parameters":[{"constant":false,"id":106,"indexed":false,"mutability":"mutable","name":"a","nameLocation":"666:1:1","nodeType":"VariableDeclaration","scope":108,"src":"658:9:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$2_memory_ptr","typeString":"uint256[2]"},"typeName":{"baseType":{"id":103,"name":"uint","nodeType":"ElementaryTypeName","src":"658:4:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":105,"length":{"hexValue":"32","id":104,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"663:1:1","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"ArrayTypeName","src":"658:7:1","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$2_storage_ptr","typeString":"uint256[2]"}},"visibility":"internal"}],"src":"657:11:1"},"src":"638:31:1"},{"anonymous":false,"id":114,"name":"WithBytes32Array","nameLocation":"678:16:1","nodeType":"EventDefinition","parameters":{"id":113,"nodeType":"ParameterList","parameters":[{"constant":false,"id":112,"indexed":false,"mutability":"mutable","name":"a","nameLocation":"706:1:1","nodeType":"VariableDeclaration","scope":114,"src":"695:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$2_memory_ptr","typeString":"bytes32[2]"},"typeName":{"baseType":{"id":109,"name":"bytes32","nodeType":"ElementaryTypeName","src":"695:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":111,"length":{"hexValue":"32","id":110,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"703:1:1","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"ArrayTypeName","src":"695:10:1","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$2_storage_ptr","typeString":"bytes32[2]"}},"visibility":"internal"}],"src":"694:14:1"},"src":"672:37:1"},{"body":{"id":124,"nodeType":"Block","src":"745:30:1","statements":[{"expression":{"id":122,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":120,"name":"anotherContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42,"src":"751:15:1","typeDescriptions":{"typeIdentifier":"t_contract$_AnotherContract_$374","typeString":"contract AnotherContract"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":121,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":117,"src":"769:1:1","typeDescriptions":{"typeIdentifier":"t_contract$_AnotherContract_$374","typeString":"contract AnotherContract"}},"src":"751:19:1","typeDescriptions":{"typeIdentifier":"t_contract$_AnotherContract_$374","typeString":"contract AnotherContract"}},"id":123,"nodeType":"ExpressionStatement","src":"751:19:1"}]},"id":125,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":118,"nodeType":"ParameterList","parameters":[{"constant":false,"id":117,"mutability":"mutable","name":"c","nameLocation":"742:1:1","nodeType":"VariableDeclaration","scope":125,"src":"726:17:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_AnotherContract_$374","typeString":"contract AnotherContract"},"typeName":{"id":116,"nodeType":"UserDefinedTypeName","pathNode":{"id":115,"name":"AnotherContract","nodeType":"IdentifierPath","referencedDeclaration":374,"src":"726:15:1"},"referencedDeclaration":374,"src":"726:15:1","typeDescriptions":{"typeIdentifier":"t_contract$_AnotherContract_$374","typeString":"contract AnotherContract"}},"visibility":"internal"}],"src":"725:19:1"},"returnParameters":{"id":119,"nodeType":"ParameterList","parameters":[],"src":"745:0:1"},"scope":359,"src":"713:62:1","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":128,"nodeType":"Block","src":"807:2:1","statements":[]},"functionSelector":"db6cdf68","id":129,"implemented":true,"kind":"function","modifiers":[],"name":"doNotEmit","nameLocation":"788:9:1","nodeType":"FunctionDefinition","parameters":{"id":126,"nodeType":"ParameterList","parameters":[],"src":"797:2:1"},"returnParameters":{"id":127,"nodeType":"ParameterList","parameters":[],"src":"807:0:1"},"scope":359,"src":"779:30:1","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":135,"nodeType":"Block","src":"847:29:1","statements":[{"eventCall":{"arguments":[],"expression":{"argumentTypes":[],"id":132,"name":"WithoutArgs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":49,"src":"858:11:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$__$returns$__$","typeString":"function ()"}},"id":133,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"858:13:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":134,"nodeType":"EmitStatement","src":"853:18:1"}]},"functionSelector":"90b37ea2","id":136,"implemented":true,"kind":"function","modifiers":[],"name":"emitWithoutArgs","nameLocation":"822:15:1","nodeType":"FunctionDefinition","parameters":{"id":130,"nodeType":"ParameterList","parameters":[],"src":"837:2:1"},"returnParameters":{"id":131,"nodeType":"ParameterList","parameters":[],"src":"847:0:1"},"scope":359,"src":"813:63:1","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":145,"nodeType":"Block","src":"913:30:1","statements":[{"eventCall":{"arguments":[{"id":142,"name":"u","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":138,"src":"936:1:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":141,"name":"WithUintArg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53,"src":"924:11:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":143,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"924:14:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":144,"nodeType":"EmitStatement","src":"919:19:1"}]},"functionSelector":"91940244","id":146,"implemented":true,"kind":"function","modifiers":[],"name":"emitUint","nameLocation":"889:8:1","nodeType":"FunctionDefinition","parameters":{"id":139,"nodeType":"ParameterList","parameters":[{"constant":false,"id":138,"mutability":"mutable","name":"u","nameLocation":"903:1:1","nodeType":"VariableDeclaration","scope":146,"src":"898:6:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":137,"name":"uint","nodeType":"ElementaryTypeName","src":"898:4:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"897:8:1"},"returnParameters":{"id":140,"nodeType":"ParameterList","parameters":[],"src":"913:0:1"},"scope":359,"src":"880:63:1","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":155,"nodeType":"Block","src":"978:29:1","statements":[{"eventCall":{"arguments":[{"id":152,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":148,"src":"1000:1:1","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":151,"name":"WithIntArg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":57,"src":"989:10:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_int256_$returns$__$","typeString":"function (int256)"}},"id":153,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"989:13:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":154,"nodeType":"EmitStatement","src":"984:18:1"}]},"functionSelector":"8a618191","id":156,"implemented":true,"kind":"function","modifiers":[],"name":"emitInt","nameLocation":"956:7:1","nodeType":"FunctionDefinition","parameters":{"id":149,"nodeType":"ParameterList","parameters":[{"constant":false,"id":148,"mutability":"mutable","name":"i","nameLocation":"968:1:1","nodeType":"VariableDeclaration","scope":156,"src":"964:5:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":147,"name":"int","nodeType":"ElementaryTypeName","src":"964:3:1","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"963:7:1"},"returnParameters":{"id":150,"nodeType":"ParameterList","parameters":[],"src":"978:0:1"},"scope":359,"src":"947:60:1","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":165,"nodeType":"Block","src":"1050:33:1","statements":[{"eventCall":{"arguments":[{"id":162,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":158,"src":"1076:1:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":161,"name":"WithAddressArg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61,"src":"1061:14:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":163,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1061:17:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":164,"nodeType":"EmitStatement","src":"1056:22:1"}]},"functionSelector":"ec5c3ede","id":166,"implemented":true,"kind":"function","modifiers":[],"name":"emitAddress","nameLocation":"1020:11:1","nodeType":"FunctionDefinition","parameters":{"id":159,"nodeType":"ParameterList","parameters":[{"constant":false,"id":158,"mutability":"mutable","name":"a","nameLocation":"1040:1:1","nodeType":"VariableDeclaration","scope":166,"src":"1032:9:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":157,"name":"address","nodeType":"ElementaryTypeName","src":"1032:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1031:11:1"},"returnParameters":{"id":160,"nodeType":"ParameterList","parameters":[],"src":"1050:0:1"},"scope":359,"src":"1011:72:1","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":181,"nodeType":"Block","src":"1133:55:1","statements":[{"eventCall":{"arguments":[{"id":174,"name":"u","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":168,"src":"1156:1:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":173,"name":"WithUintArg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53,"src":"1144:11:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":175,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1144:14:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":176,"nodeType":"EmitStatement","src":"1139:19:1"},{"eventCall":{"arguments":[{"id":178,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":170,"src":"1181:1:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":177,"name":"WithUintArg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53,"src":"1169:11:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":179,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1169:14:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":180,"nodeType":"EmitStatement","src":"1164:19:1"}]},"functionSelector":"0c0c941a","id":182,"implemented":true,"kind":"function","modifiers":[],"name":"emitUintTwice","nameLocation":"1096:13:1","nodeType":"FunctionDefinition","parameters":{"id":171,"nodeType":"ParameterList","parameters":[{"constant":false,"id":168,"mutability":"mutable","name":"u","nameLocation":"1115:1:1","nodeType":"VariableDeclaration","scope":182,"src":"1110:6:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":167,"name":"uint","nodeType":"ElementaryTypeName","src":"1110:4:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":170,"mutability":"mutable","name":"v","nameLocation":"1123:1:1","nodeType":"VariableDeclaration","scope":182,"src":"1118:6:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":169,"name":"uint","nodeType":"ElementaryTypeName","src":"1118:4:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1109:16:1"},"returnParameters":{"id":172,"nodeType":"ParameterList","parameters":[],"src":"1133:0:1"},"scope":359,"src":"1087:101:1","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":194,"nodeType":"Block","src":"1237:37:1","statements":[{"eventCall":{"arguments":[{"id":190,"name":"u","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":184,"src":"1264:1:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":191,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":186,"src":"1267:1:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":189,"name":"WithTwoUintArgs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67,"src":"1248:15:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":192,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1248:21:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":193,"nodeType":"EmitStatement","src":"1243:26:1"}]},"functionSelector":"38393646","id":195,"implemented":true,"kind":"function","modifiers":[],"name":"emitTwoUints","nameLocation":"1201:12:1","nodeType":"FunctionDefinition","parameters":{"id":187,"nodeType":"ParameterList","parameters":[{"constant":false,"id":184,"mutability":"mutable","name":"u","nameLocation":"1219:1:1","nodeType":"VariableDeclaration","scope":195,"src":"1214:6:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":183,"name":"uint","nodeType":"ElementaryTypeName","src":"1214:4:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":186,"mutability":"mutable","name":"v","nameLocation":"1227:1:1","nodeType":"VariableDeclaration","scope":195,"src":"1222:6:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":185,"name":"uint","nodeType":"ElementaryTypeName","src":"1222:4:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1213:16:1"},"returnParameters":{"id":188,"nodeType":"ParameterList","parameters":[],"src":"1237:0:1"},"scope":359,"src":"1192:82:1","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":204,"nodeType":"Block","src":"1322:32:1","statements":[{"eventCall":{"arguments":[{"id":201,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":197,"src":"1347:1:1","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":200,"name":"WithStringArg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"1333:13:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory)"}},"id":202,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1333:16:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":203,"nodeType":"EmitStatement","src":"1328:21:1"}]},"functionSelector":"2536f127","id":205,"implemented":true,"kind":"function","modifiers":[],"name":"emitString","nameLocation":"1287:10:1","nodeType":"FunctionDefinition","parameters":{"id":198,"nodeType":"ParameterList","parameters":[{"constant":false,"id":197,"mutability":"mutable","name":"s","nameLocation":"1312:1:1","nodeType":"VariableDeclaration","scope":205,"src":"1298:15:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":196,"name":"string","nodeType":"ElementaryTypeName","src":"1298:6:1","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1297:17:1"},"returnParameters":{"id":199,"nodeType":"ParameterList","parameters":[],"src":"1322:0:1"},"scope":359,"src":"1278:76:1","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":214,"nodeType":"Block","src":"1409:39:1","statements":[{"eventCall":{"arguments":[{"id":211,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":207,"src":"1441:1:1","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":210,"name":"WithIndexedStringArg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81,"src":"1420:20:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory)"}},"id":212,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1420:23:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":213,"nodeType":"EmitStatement","src":"1415:28:1"}]},"functionSelector":"443690a0","id":215,"implemented":true,"kind":"function","modifiers":[],"name":"emitIndexedString","nameLocation":"1367:17:1","nodeType":"FunctionDefinition","parameters":{"id":208,"nodeType":"ParameterList","parameters":[{"constant":false,"id":207,"mutability":"mutable","name":"s","nameLocation":"1399:1:1","nodeType":"VariableDeclaration","scope":215,"src":"1385:15:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":206,"name":"string","nodeType":"ElementaryTypeName","src":"1385:6:1","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1384:17:1"},"returnParameters":{"id":209,"nodeType":"ParameterList","parameters":[],"src":"1409:0:1"},"scope":359,"src":"1358:90:1","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":224,"nodeType":"Block","src":"1494:31:1","statements":[{"eventCall":{"arguments":[{"id":221,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":217,"src":"1518:1:1","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":220,"name":"WithBytesArg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85,"src":"1505:12:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes memory)"}},"id":222,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1505:15:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":223,"nodeType":"EmitStatement","src":"1500:20:1"}]},"functionSelector":"c76f0635","id":225,"implemented":true,"kind":"function","modifiers":[],"name":"emitBytes","nameLocation":"1461:9:1","nodeType":"FunctionDefinition","parameters":{"id":218,"nodeType":"ParameterList","parameters":[{"constant":false,"id":217,"mutability":"mutable","name":"b","nameLocation":"1484:1:1","nodeType":"VariableDeclaration","scope":225,"src":"1471:14:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":216,"name":"bytes","nodeType":"ElementaryTypeName","src":"1471:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1470:16:1"},"returnParameters":{"id":219,"nodeType":"ParameterList","parameters":[],"src":"1494:0:1"},"scope":359,"src":"1452:73:1","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":234,"nodeType":"Block","src":"1578:38:1","statements":[{"eventCall":{"arguments":[{"id":231,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":227,"src":"1609:1:1","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":230,"name":"WithIndexedBytesArg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89,"src":"1589:19:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes memory)"}},"id":232,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1589:22:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":233,"nodeType":"EmitStatement","src":"1584:27:1"}]},"functionSelector":"cc07e605","id":235,"implemented":true,"kind":"function","modifiers":[],"name":"emitIndexedBytes","nameLocation":"1538:16:1","nodeType":"FunctionDefinition","parameters":{"id":228,"nodeType":"ParameterList","parameters":[{"constant":false,"id":227,"mutability":"mutable","name":"b","nameLocation":"1568:1:1","nodeType":"VariableDeclaration","scope":235,"src":"1555:14:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":226,"name":"bytes","nodeType":"ElementaryTypeName","src":"1555:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1554:16:1"},"returnParameters":{"id":229,"nodeType":"ParameterList","parameters":[],"src":"1578:0:1"},"scope":359,"src":"1529:87:1","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":244,"nodeType":"Block","src":"1659:33:1","statements":[{"eventCall":{"arguments":[{"id":241,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":237,"src":"1685:1:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":240,"name":"WithBytes32Arg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":93,"src":"1670:14:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$returns$__$","typeString":"function (bytes32)"}},"id":242,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1670:17:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":243,"nodeType":"EmitStatement","src":"1665:22:1"}]},"functionSelector":"33311ef3","id":245,"implemented":true,"kind":"function","modifiers":[],"name":"emitBytes32","nameLocation":"1629:11:1","nodeType":"FunctionDefinition","parameters":{"id":238,"nodeType":"ParameterList","parameters":[{"constant":false,"id":237,"mutability":"mutable","name":"b","nameLocation":"1649:1:1","nodeType":"VariableDeclaration","scope":245,"src":"1641:9:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":236,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1641:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1640:11:1"},"returnParameters":{"id":239,"nodeType":"ParameterList","parameters":[],"src":"1659:0:1"},"scope":359,"src":"1620:72:1","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":254,"nodeType":"Block","src":"1742:40:1","statements":[{"eventCall":{"arguments":[{"id":251,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":247,"src":"1775:1:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":250,"name":"WithIndexedBytes32Arg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":102,"src":"1753:21:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$returns$__$","typeString":"function (bytes32)"}},"id":252,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1753:24:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":253,"nodeType":"EmitStatement","src":"1748:29:1"}]},"functionSelector":"048858e5","id":255,"implemented":true,"kind":"function","modifiers":[],"name":"emitIndexedBytes32","nameLocation":"1705:18:1","nodeType":"FunctionDefinition","parameters":{"id":248,"nodeType":"ParameterList","parameters":[{"constant":false,"id":247,"mutability":"mutable","name":"b","nameLocation":"1732:1:1","nodeType":"VariableDeclaration","scope":255,"src":"1724:9:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":246,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1724:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1723:11:1"},"returnParameters":{"id":249,"nodeType":"ParameterList","parameters":[],"src":"1742:0:1"},"scope":359,"src":"1696:86:1","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":270,"nodeType":"Block","src":"1845:57:1","statements":[{"eventCall":{"arguments":[{"id":263,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":259,"src":"1870:1:1","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":262,"name":"WithStringArg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"1856:13:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory)"}},"id":264,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1856:16:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":265,"nodeType":"EmitStatement","src":"1851:21:1"},{"eventCall":{"arguments":[{"id":267,"name":"u","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":257,"src":"1895:1:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":266,"name":"WithUintArg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53,"src":"1883:11:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":268,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1883:14:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":269,"nodeType":"EmitStatement","src":"1878:19:1"}]},"functionSelector":"2785f8d6","id":271,"implemented":true,"kind":"function","modifiers":[],"name":"emitUintAndString","nameLocation":"1795:17:1","nodeType":"FunctionDefinition","parameters":{"id":260,"nodeType":"ParameterList","parameters":[{"constant":false,"id":257,"mutability":"mutable","name":"u","nameLocation":"1818:1:1","nodeType":"VariableDeclaration","scope":271,"src":"1813:6:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":256,"name":"uint","nodeType":"ElementaryTypeName","src":"1813:4:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":259,"mutability":"mutable","name":"s","nameLocation":"1835:1:1","nodeType":"VariableDeclaration","scope":271,"src":"1821:15:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":258,"name":"string","nodeType":"ElementaryTypeName","src":"1821:6:1","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1812:25:1"},"returnParameters":{"id":261,"nodeType":"ParameterList","parameters":[],"src":"1845:0:1"},"scope":359,"src":"1786:116:1","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":292,"nodeType":"Block","src":"1998:71:1","statements":[{"eventCall":{"arguments":[{"id":283,"name":"u","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":273,"src":"2025:1:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":284,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":275,"src":"2028:1:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":282,"name":"WithTwoUintArgs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67,"src":"2009:15:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":285,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2009:21:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":286,"nodeType":"EmitStatement","src":"2004:26:1"},{"eventCall":{"arguments":[{"id":288,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":277,"src":"2059:1:1","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":289,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":279,"src":"2062:1:1","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":287,"name":"WithTwoStringArgs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77,"src":"2041:17:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory,string memory)"}},"id":290,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2041:23:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":291,"nodeType":"EmitStatement","src":"2036:28:1"}]},"functionSelector":"532b9cce","id":293,"implemented":true,"kind":"function","modifiers":[],"name":"emitTwoUintsAndTwoStrings","nameLocation":"1915:25:1","nodeType":"FunctionDefinition","parameters":{"id":280,"nodeType":"ParameterList","parameters":[{"constant":false,"id":273,"mutability":"mutable","name":"u","nameLocation":"1946:1:1","nodeType":"VariableDeclaration","scope":293,"src":"1941:6:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":272,"name":"uint","nodeType":"ElementaryTypeName","src":"1941:4:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":275,"mutability":"mutable","name":"v","nameLocation":"1954:1:1","nodeType":"VariableDeclaration","scope":293,"src":"1949:6:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":274,"name":"uint","nodeType":"ElementaryTypeName","src":"1949:4:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":277,"mutability":"mutable","name":"s","nameLocation":"1971:1:1","nodeType":"VariableDeclaration","scope":293,"src":"1957:15:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":276,"name":"string","nodeType":"ElementaryTypeName","src":"1957:6:1","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":279,"mutability":"mutable","name":"t","nameLocation":"1988:1:1","nodeType":"VariableDeclaration","scope":293,"src":"1974:15:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":278,"name":"string","nodeType":"ElementaryTypeName","src":"1974:6:1","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1940:50:1"},"returnParameters":{"id":281,"nodeType":"ParameterList","parameters":[],"src":"1998:0:1"},"scope":359,"src":"1906:163:1","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":307,"nodeType":"Block","src":"2116:43:1","statements":[{"eventCall":{"arguments":[{"arguments":[{"id":302,"name":"u","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":295,"src":"2148:1:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":303,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":297,"src":"2151:1:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":301,"name":"Struct","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":47,"src":"2141:6:1","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Struct_$47_storage_ptr_$","typeString":"type(struct Events.Struct storage pointer)"}},"id":304,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2141:12:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Struct_$47_memory_ptr","typeString":"struct Events.Struct memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Struct_$47_memory_ptr","typeString":"struct Events.Struct memory"}],"id":300,"name":"WithStructArg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":98,"src":"2127:13:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_struct$_Struct_$47_memory_ptr_$returns$__$","typeString":"function (struct Events.Struct memory)"}},"id":305,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2127:27:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":306,"nodeType":"EmitStatement","src":"2122:32:1"}]},"functionSelector":"9f31a223","id":308,"implemented":true,"kind":"function","modifiers":[],"name":"emitStruct","nameLocation":"2082:10:1","nodeType":"FunctionDefinition","parameters":{"id":298,"nodeType":"ParameterList","parameters":[{"constant":false,"id":295,"mutability":"mutable","name":"u","nameLocation":"2098:1:1","nodeType":"VariableDeclaration","scope":308,"src":"2093:6:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":294,"name":"uint","nodeType":"ElementaryTypeName","src":"2093:4:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":297,"mutability":"mutable","name":"v","nameLocation":"2106:1:1","nodeType":"VariableDeclaration","scope":308,"src":"2101:6:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":296,"name":"uint","nodeType":"ElementaryTypeName","src":"2101:4:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2092:16:1"},"returnParameters":{"id":299,"nodeType":"ParameterList","parameters":[],"src":"2116:0:1"},"scope":359,"src":"2073:86:1","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":321,"nodeType":"Block","src":"2209:37:1","statements":[{"eventCall":{"arguments":[{"components":[{"id":316,"name":"u","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":310,"src":"2235:1:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":317,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":312,"src":"2238:1:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":318,"isConstant":false,"isInlineArray":true,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2234:6:1","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$2_memory_ptr","typeString":"uint256[2] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_uint256_$2_memory_ptr","typeString":"uint256[2] memory"}],"id":315,"name":"WithUintArray","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":108,"src":"2220:13:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_array$_t_uint256_$2_memory_ptr_$returns$__$","typeString":"function (uint256[2] memory)"}},"id":319,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2220:21:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":320,"nodeType":"EmitStatement","src":"2215:26:1"}]},"functionSelector":"17aba537","id":322,"implemented":true,"kind":"function","modifiers":[],"name":"emitUintArray","nameLocation":"2172:13:1","nodeType":"FunctionDefinition","parameters":{"id":313,"nodeType":"ParameterList","parameters":[{"constant":false,"id":310,"mutability":"mutable","name":"u","nameLocation":"2191:1:1","nodeType":"VariableDeclaration","scope":322,"src":"2186:6:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":309,"name":"uint","nodeType":"ElementaryTypeName","src":"2186:4:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":312,"mutability":"mutable","name":"v","nameLocation":"2199:1:1","nodeType":"VariableDeclaration","scope":322,"src":"2194:6:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":311,"name":"uint","nodeType":"ElementaryTypeName","src":"2194:4:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2185:16:1"},"returnParameters":{"id":314,"nodeType":"ParameterList","parameters":[],"src":"2209:0:1"},"scope":359,"src":"2163:83:1","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":335,"nodeType":"Block","src":"2305:40:1","statements":[{"eventCall":{"arguments":[{"components":[{"id":330,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":324,"src":"2334:1:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":331,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":326,"src":"2337:1:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":332,"isConstant":false,"isInlineArray":true,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2333:6:1","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$2_memory_ptr","typeString":"bytes32[2] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_bytes32_$2_memory_ptr","typeString":"bytes32[2] memory"}],"id":329,"name":"WithBytes32Array","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":114,"src":"2316:16:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_array$_t_bytes32_$2_memory_ptr_$returns$__$","typeString":"function (bytes32[2] memory)"}},"id":333,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2316:24:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":334,"nodeType":"EmitStatement","src":"2311:29:1"}]},"functionSelector":"c0cd80e6","id":336,"implemented":true,"kind":"function","modifiers":[],"name":"emitBytes32Array","nameLocation":"2259:16:1","nodeType":"FunctionDefinition","parameters":{"id":327,"nodeType":"ParameterList","parameters":[{"constant":false,"id":324,"mutability":"mutable","name":"b","nameLocation":"2284:1:1","nodeType":"VariableDeclaration","scope":336,"src":"2276:9:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":323,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2276:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":326,"mutability":"mutable","name":"c","nameLocation":"2295:1:1","nodeType":"VariableDeclaration","scope":336,"src":"2287:9:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":325,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2287:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2275:22:1"},"returnParameters":{"id":328,"nodeType":"ParameterList","parameters":[],"src":"2305:0:1"},"scope":359,"src":"2250:95:1","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":345,"nodeType":"Block","src":"2404:22:1","statements":[{"expression":{"arguments":[{"id":342,"name":"u","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":338,"src":"2419:1:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":341,"name":"emitUint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":146,"src":"2410:8:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":343,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2410:11:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":344,"nodeType":"ExpressionStatement","src":"2410:11:1"}]},"functionSelector":"813a8cf5","id":346,"implemented":true,"kind":"function","modifiers":[],"name":"emitNestedUintFromSameContract","nameLocation":"2358:30:1","nodeType":"FunctionDefinition","parameters":{"id":339,"nodeType":"ParameterList","parameters":[{"constant":false,"id":338,"mutability":"mutable","name":"u","nameLocation":"2394:1:1","nodeType":"VariableDeclaration","scope":346,"src":"2389:6:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":337,"name":"uint","nodeType":"ElementaryTypeName","src":"2389:4:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2388:8:1"},"returnParameters":{"id":340,"nodeType":"ParameterList","parameters":[],"src":"2404:0:1"},"scope":359,"src":"2349:77:1","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":357,"nodeType":"Block","src":"2488:38:1","statements":[{"expression":{"arguments":[{"id":354,"name":"u","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":348,"src":"2519:1:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":351,"name":"anotherContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42,"src":"2494:15:1","typeDescriptions":{"typeIdentifier":"t_contract$_AnotherContract_$374","typeString":"contract AnotherContract"}},"id":353,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"emitUint","nodeType":"MemberAccess","referencedDeclaration":373,"src":"2494:24:1","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256) external"}},"id":355,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2494:27:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":356,"nodeType":"ExpressionStatement","src":"2494:27:1"}]},"functionSelector":"d3931e57","id":358,"implemented":true,"kind":"function","modifiers":[],"name":"emitNestedUintFromAnotherContract","nameLocation":"2439:33:1","nodeType":"FunctionDefinition","parameters":{"id":349,"nodeType":"ParameterList","parameters":[{"constant":false,"id":348,"mutability":"mutable","name":"u","nameLocation":"2478:1:1","nodeType":"VariableDeclaration","scope":358,"src":"2473:6:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":347,"name":"uint","nodeType":"ElementaryTypeName","src":"2473:4:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2472:8:1"},"returnParameters":{"id":350,"nodeType":"ParameterList","parameters":[],"src":"2488:0:1"},"scope":359,"src":"2430:96:1","stateMutability":"nonpayable","virtual":false,"visibility":"public"}],"scope":399,"src":"57:2471:1","usedErrors":[]},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":374,"linearizedBaseContracts":[374],"name":"AnotherContract","nameLocation":"2539:15:1","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"id":363,"name":"WithUintArg","nameLocation":"2565:11:1","nodeType":"EventDefinition","parameters":{"id":362,"nodeType":"ParameterList","parameters":[{"constant":false,"id":361,"indexed":false,"mutability":"mutable","name":"u","nameLocation":"2582:1:1","nodeType":"VariableDeclaration","scope":363,"src":"2577:6:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":360,"name":"uint","nodeType":"ElementaryTypeName","src":"2577:4:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2576:8:1"},"src":"2559:26:1"},{"body":{"id":372,"nodeType":"Block","src":"2622:30:1","statements":[{"eventCall":{"arguments":[{"id":369,"name":"u","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":365,"src":"2645:1:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":368,"name":"WithUintArg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":363,"src":"2633:11:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":370,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2633:14:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":371,"nodeType":"EmitStatement","src":"2628:19:1"}]},"functionSelector":"91940244","id":373,"implemented":true,"kind":"function","modifiers":[],"name":"emitUint","nameLocation":"2598:8:1","nodeType":"FunctionDefinition","parameters":{"id":366,"nodeType":"ParameterList","parameters":[{"constant":false,"id":365,"mutability":"mutable","name":"u","nameLocation":"2612:1:1","nodeType":"VariableDeclaration","scope":373,"src":"2607:6:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":364,"name":"uint","nodeType":"ElementaryTypeName","src":"2607:4:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2606:8:1"},"returnParameters":{"id":367,"nodeType":"ParameterList","parameters":[],"src":"2622:0:1"},"scope":374,"src":"2589:63:1","stateMutability":"nonpayable","virtual":false,"visibility":"public"}],"scope":399,"src":"2530:124:1","usedErrors":[]},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":398,"linearizedBaseContracts":[398],"name":"OverrideEventContract","nameLocation":"2665:21:1","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"id":378,"name":"simpleEvent","nameLocation":"2697:11:1","nodeType":"EventDefinition","parameters":{"id":377,"nodeType":"ParameterList","parameters":[{"constant":false,"id":376,"indexed":false,"mutability":"mutable","name":"u","nameLocation":"2714:1:1","nodeType":"VariableDeclaration","scope":378,"src":"2709:6:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":375,"name":"uint","nodeType":"ElementaryTypeName","src":"2709:4:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2708:8:1"},"src":"2691:26:1"},{"anonymous":false,"id":380,"name":"simpleEvent","nameLocation":"2726:11:1","nodeType":"EventDefinition","parameters":{"id":379,"nodeType":"ParameterList","parameters":[],"src":"2737:2:1"},"src":"2720:20:1"},{"body":{"id":389,"nodeType":"Block","src":"2795:30:1","statements":[{"eventCall":{"arguments":[{"id":386,"name":"u","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":382,"src":"2818:1:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":385,"name":"simpleEvent","nodeType":"Identifier","overloadedDeclarations":[378,380],"referencedDeclaration":378,"src":"2806:11:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":387,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2806:14:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":388,"nodeType":"EmitStatement","src":"2801:19:1"}]},"functionSelector":"2ce136d9","id":390,"implemented":true,"kind":"function","modifiers":[],"name":"emitSimpleEventWithUintArg","nameLocation":"2753:26:1","nodeType":"FunctionDefinition","parameters":{"id":383,"nodeType":"ParameterList","parameters":[{"constant":false,"id":382,"mutability":"mutable","name":"u","nameLocation":"2785:1:1","nodeType":"VariableDeclaration","scope":390,"src":"2780:6:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":381,"name":"uint","nodeType":"ElementaryTypeName","src":"2780:4:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2779:8:1"},"returnParameters":{"id":384,"nodeType":"ParameterList","parameters":[],"src":"2795:0:1"},"scope":398,"src":"2744:81:1","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":396,"nodeType":"Block","src":"2873:29:1","statements":[{"eventCall":{"arguments":[],"expression":{"argumentTypes":[],"id":393,"name":"simpleEvent","nodeType":"Identifier","overloadedDeclarations":[378,380],"referencedDeclaration":380,"src":"2884:11:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$__$returns$__$","typeString":"function ()"}},"id":394,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2884:13:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":395,"nodeType":"EmitStatement","src":"2879:18:1"}]},"functionSelector":"8e1c72bb","id":397,"implemented":true,"kind":"function","modifiers":[],"name":"emitSimpleEventWithoutArg","nameLocation":"2838:25:1","nodeType":"FunctionDefinition","parameters":{"id":391,"nodeType":"ParameterList","parameters":[],"src":"2863:2:1"},"returnParameters":{"id":392,"nodeType":"ParameterList","parameters":[],"src":"2873:0:1"},"scope":398,"src":"2829:73:1","stateMutability":"nonpayable","virtual":false,"visibility":"public"}],"scope":399,"src":"2656:248:1","usedErrors":[]}],"src":"32:2873:1"},"id":1},"contracts/Matchers.sol":{"ast":{"absolutePath":"contracts/Matchers.sol","exportedSymbols":{"AnotherMatchersContract":[710],"Matchers":[688]},"id":711,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":400,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"40:23:2"},{"abstract":false,"baseContracts":[],"contractDependencies":[710],"contractKind":"contract","fullyImplemented":true,"id":688,"linearizedBaseContracts":[688],"name":"Matchers","nameLocation":"74:8:2","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":402,"mutability":"mutable","name":"x","nameLocation":"92:1:2","nodeType":"VariableDeclaration","scope":688,"src":"87:6:2","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":401,"name":"uint","nodeType":"ElementaryTypeName","src":"87:4:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"anonymous":false,"id":404,"name":"SomeEvent","nameLocation":"104:9:2","nodeType":"EventDefinition","parameters":{"id":403,"nodeType":"ParameterList","parameters":[],"src":"113:2:2"},"src":"98:18:2"},{"constant":false,"id":407,"mutability":"mutable","name":"anotherContract","nameLocation":"144:15:2","nodeType":"VariableDeclaration","scope":688,"src":"120:39:2","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_AnotherMatchersContract_$710","typeString":"contract AnotherMatchersContract"},"typeName":{"id":406,"nodeType":"UserDefinedTypeName","pathNode":{"id":405,"name":"AnotherMatchersContract","nodeType":"IdentifierPath","referencedDeclaration":710,"src":"120:23:2"},"referencedDeclaration":710,"src":"120:23:2","typeDescriptions":{"typeIdentifier":"t_contract$_AnotherMatchersContract_$710","typeString":"contract AnotherMatchersContract"}},"visibility":"internal"},{"canonicalName":"Matchers.Pair","id":412,"members":[{"constant":false,"id":409,"mutability":"mutable","name":"a","nameLocation":"183:1:2","nodeType":"VariableDeclaration","scope":412,"src":"178:6:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":408,"name":"uint","nodeType":"ElementaryTypeName","src":"178:4:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":411,"mutability":"mutable","name":"b","nameLocation":"191:1:2","nodeType":"VariableDeclaration","scope":412,"src":"186:6:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":410,"name":"uint","nodeType":"ElementaryTypeName","src":"186:4:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"Pair","nameLocation":"171:4:2","nodeType":"StructDefinition","scope":688,"src":"164:31:2","visibility":"public"},{"id":414,"name":"SomeCustomError","nameLocation":"205:15:2","nodeType":"ErrorDefinition","parameters":{"id":413,"nodeType":"ParameterList","parameters":[],"src":"220:2:2"},"src":"199:24:2"},{"id":416,"name":"AnotherCustomError","nameLocation":"232:18:2","nodeType":"ErrorDefinition","parameters":{"id":415,"nodeType":"ParameterList","parameters":[],"src":"250:2:2"},"src":"226:27:2"},{"id":420,"name":"CustomErrorWithInt","nameLocation":"262:18:2","nodeType":"ErrorDefinition","parameters":{"id":419,"nodeType":"ParameterList","parameters":[{"constant":false,"id":418,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":420,"src":"281:3:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":417,"name":"int","nodeType":"ElementaryTypeName","src":"281:3:2","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"280:5:2"},"src":"256:30:2"},{"id":424,"name":"CustomErrorWithUint","nameLocation":"295:19:2","nodeType":"ErrorDefinition","parameters":{"id":423,"nodeType":"ParameterList","parameters":[{"constant":false,"id":422,"mutability":"mutable","name":"nameToForceEthersToUseAnArrayLikeWithNamedProperties","nameLocation":"320:52:2","nodeType":"VariableDeclaration","scope":424,"src":"315:57:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":421,"name":"uint","nodeType":"ElementaryTypeName","src":"315:4:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"314:59:2"},"src":"289:85:2"},{"id":430,"name":"CustomErrorWithUintAndString","nameLocation":"383:28:2","nodeType":"ErrorDefinition","parameters":{"id":429,"nodeType":"ParameterList","parameters":[{"constant":false,"id":426,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":430,"src":"412:4:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":425,"name":"uint","nodeType":"ElementaryTypeName","src":"412:4:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":428,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":430,"src":"418:6:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":427,"name":"string","nodeType":"ElementaryTypeName","src":"418:6:2","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"411:14:2"},"src":"377:49:2"},{"id":435,"name":"CustomErrorWithPair","nameLocation":"435:19:2","nodeType":"ErrorDefinition","parameters":{"id":434,"nodeType":"ParameterList","parameters":[{"constant":false,"id":433,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":435,"src":"455:4:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_Pair_$412_memory_ptr","typeString":"struct Matchers.Pair"},"typeName":{"id":432,"nodeType":"UserDefinedTypeName","pathNode":{"id":431,"name":"Pair","nodeType":"IdentifierPath","referencedDeclaration":412,"src":"455:4:2"},"referencedDeclaration":412,"src":"455:4:2","typeDescriptions":{"typeIdentifier":"t_struct$_Pair_$412_storage_ptr","typeString":"struct Matchers.Pair"}},"visibility":"internal"}],"src":"454:6:2"},"src":"429:32:2"},{"body":{"id":445,"nodeType":"Block","src":"480:58:2","statements":[{"expression":{"id":443,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":438,"name":"anotherContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":407,"src":"486:15:2","typeDescriptions":{"typeIdentifier":"t_contract$_AnotherMatchersContract_$710","typeString":"contract AnotherMatchersContract"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"id":441,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"NewExpression","src":"504:27:2","typeDescriptions":{"typeIdentifier":"t_function_creation_nonpayable$__$returns$_t_contract$_AnotherMatchersContract_$710_$","typeString":"function () returns (contract AnotherMatchersContract)"},"typeName":{"id":440,"nodeType":"UserDefinedTypeName","pathNode":{"id":439,"name":"AnotherMatchersContract","nodeType":"IdentifierPath","referencedDeclaration":710,"src":"508:23:2"},"referencedDeclaration":710,"src":"508:23:2","typeDescriptions":{"typeIdentifier":"t_contract$_AnotherMatchersContract_$710","typeString":"contract AnotherMatchersContract"}}},"id":442,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"504:29:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_AnotherMatchersContract_$710","typeString":"contract AnotherMatchersContract"}},"src":"486:47:2","typeDescriptions":{"typeIdentifier":"t_contract$_AnotherMatchersContract_$710","typeString":"contract AnotherMatchersContract"}},"id":444,"nodeType":"ExpressionStatement","src":"486:47:2"}]},"id":446,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":436,"nodeType":"ParameterList","parameters":[],"src":"477:2:2"},"returnParameters":{"id":437,"nodeType":"ParameterList","parameters":[],"src":"480:0:2"},"scope":688,"src":"465:73:2","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":452,"nodeType":"Block","src":"569:49:2","statements":[{"expression":{"id":450,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"575:3:2","subExpression":{"id":449,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":402,"src":"575:1:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":451,"nodeType":"ExpressionStatement","src":"575:3:2"}]},"functionSelector":"74afd452","id":453,"implemented":true,"kind":"function","modifiers":[],"name":"succeeds","nameLocation":"551:8:2","nodeType":"FunctionDefinition","parameters":{"id":447,"nodeType":"ParameterList","parameters":[],"src":"559:2:2"},"returnParameters":{"id":448,"nodeType":"ParameterList","parameters":[],"src":"569:0:2"},"scope":688,"src":"542:76:2","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":460,"nodeType":"Block","src":"673:19:2","statements":[{"expression":{"id":458,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":402,"src":"686:1:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":457,"id":459,"nodeType":"Return","src":"679:8:2"}]},"functionSelector":"6fc588d2","id":461,"implemented":true,"kind":"function","modifiers":[],"name":"succeedsView","nameLocation":"631:12:2","nodeType":"FunctionDefinition","parameters":{"id":454,"nodeType":"ParameterList","parameters":[],"src":"643:2:2"},"returnParameters":{"id":457,"nodeType":"ParameterList","parameters":[{"constant":false,"id":456,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":461,"src":"667:4:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":455,"name":"uint","nodeType":"ElementaryTypeName","src":"667:4:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"666:6:2"},"scope":688,"src":"622:70:2","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":474,"nodeType":"Block","src":"746:42:2","statements":[{"expression":{"id":467,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"752:3:2","subExpression":{"id":466,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":402,"src":"752:1:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":468,"nodeType":"ExpressionStatement","src":"752:3:2"},{"expression":{"arguments":[{"hexValue":"66616c7365","id":470,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"769:5:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"id":471,"name":"reason","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":463,"src":"776:6:2","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":469,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"761:7:2","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":472,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"761:22:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":473,"nodeType":"ExpressionStatement","src":"761:22:2"}]},"functionSelector":"6f1fdc31","id":475,"implemented":true,"kind":"function","modifiers":[],"name":"revertsWith","nameLocation":"705:11:2","nodeType":"FunctionDefinition","parameters":{"id":464,"nodeType":"ParameterList","parameters":[{"constant":false,"id":463,"mutability":"mutable","name":"reason","nameLocation":"731:6:2","nodeType":"VariableDeclaration","scope":475,"src":"717:20:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":462,"name":"string","nodeType":"ElementaryTypeName","src":"717:6:2","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"716:22:2"},"returnParameters":{"id":465,"nodeType":"ParameterList","parameters":[],"src":"746:0:2"},"scope":688,"src":"696:92:2","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":485,"nodeType":"Block","src":"851:33:2","statements":[{"expression":{"arguments":[{"hexValue":"66616c7365","id":481,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"865:5:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"id":482,"name":"reason","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":477,"src":"872:6:2","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":480,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"857:7:2","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":483,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"857:22:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":484,"nodeType":"ExpressionStatement","src":"857:22:2"}]},"functionSelector":"467e3d37","id":486,"implemented":true,"kind":"function","modifiers":[],"name":"revertsWithView","nameLocation":"801:15:2","nodeType":"FunctionDefinition","parameters":{"id":478,"nodeType":"ParameterList","parameters":[{"constant":false,"id":477,"mutability":"mutable","name":"reason","nameLocation":"831:6:2","nodeType":"VariableDeclaration","scope":486,"src":"817:20:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":476,"name":"string","nodeType":"ElementaryTypeName","src":"817:6:2","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"816:22:2"},"returnParameters":{"id":479,"nodeType":"ParameterList","parameters":[],"src":"851:0:2"},"scope":688,"src":"792:92:2","stateMutability":"pure","virtual":false,"visibility":"public"},{"body":{"id":496,"nodeType":"Block","src":"927:34:2","statements":[{"expression":{"id":490,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"933:3:2","subExpression":{"id":489,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":402,"src":"933:1:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":491,"nodeType":"ExpressionStatement","src":"933:3:2"},{"expression":{"arguments":[{"hexValue":"66616c7365","id":493,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"950:5:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":492,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"942:7:2","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":494,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"942:14:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":495,"nodeType":"ExpressionStatement","src":"942:14:2"}]},"functionSelector":"1b4f3f3d","id":497,"implemented":true,"kind":"function","modifiers":[],"name":"revertsWithoutReason","nameLocation":"897:20:2","nodeType":"FunctionDefinition","parameters":{"id":487,"nodeType":"ParameterList","parameters":[],"src":"917:2:2"},"returnParameters":{"id":488,"nodeType":"ParameterList","parameters":[],"src":"927:0:2"},"scope":688,"src":"888:73:2","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":504,"nodeType":"Block","src":"1013:25:2","statements":[{"expression":{"arguments":[{"hexValue":"66616c7365","id":501,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1027:5:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":500,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1019:7:2","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":502,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1019:14:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":503,"nodeType":"ExpressionStatement","src":"1019:14:2"}]},"functionSelector":"58a1d1ed","id":505,"implemented":true,"kind":"function","modifiers":[],"name":"revertsWithoutReasonView","nameLocation":"974:24:2","nodeType":"FunctionDefinition","parameters":{"id":498,"nodeType":"ParameterList","parameters":[],"src":"998:2:2"},"returnParameters":{"id":499,"nodeType":"ParameterList","parameters":[],"src":"1013:0:2"},"scope":688,"src":"965:73:2","stateMutability":"pure","virtual":false,"visibility":"public"},{"body":{"id":515,"nodeType":"Block","src":"1072:33:2","statements":[{"expression":{"id":509,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"1078:3:2","subExpression":{"id":508,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":402,"src":"1078:1:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":510,"nodeType":"ExpressionStatement","src":"1078:3:2"},{"expression":{"arguments":[{"hexValue":"66616c7365","id":512,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1094:5:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":511,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"1087:6:2","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":513,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1087:13:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":514,"nodeType":"ExpressionStatement","src":"1087:13:2"}]},"functionSelector":"b6bbe061","id":516,"implemented":true,"kind":"function","modifiers":[],"name":"panicAssert","nameLocation":"1051:11:2","nodeType":"FunctionDefinition","parameters":{"id":506,"nodeType":"ParameterList","parameters":[],"src":"1062:2:2"},"returnParameters":{"id":507,"nodeType":"ParameterList","parameters":[],"src":"1072:0:2"},"scope":688,"src":"1042:63:2","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":523,"nodeType":"Block","src":"1148:24:2","statements":[{"expression":{"arguments":[{"hexValue":"66616c7365","id":520,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1161:5:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":519,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"1154:6:2","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":521,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1154:13:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":522,"nodeType":"ExpressionStatement","src":"1154:13:2"}]},"functionSelector":"5b94e31e","id":524,"implemented":true,"kind":"function","modifiers":[],"name":"panicAssertView","nameLocation":"1118:15:2","nodeType":"FunctionDefinition","parameters":{"id":517,"nodeType":"ParameterList","parameters":[],"src":"1133:2:2"},"returnParameters":{"id":518,"nodeType":"ParameterList","parameters":[],"src":"1148:0:2"},"scope":688,"src":"1109:63:2","stateMutability":"pure","virtual":false,"visibility":"public"},{"body":{"id":533,"nodeType":"Block","src":"1220:44:2","statements":[{"expression":{"id":528,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"1226:3:2","subExpression":{"id":527,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":402,"src":"1226:1:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":529,"nodeType":"ExpressionStatement","src":"1226:3:2"},{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":530,"name":"SomeCustomError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":414,"src":"1242:15:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":531,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1242:17:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":532,"nodeType":"RevertStatement","src":"1235:24:2"}]},"functionSelector":"bad92aa9","id":534,"implemented":true,"kind":"function","modifiers":[],"name":"revertWithSomeCustomError","nameLocation":"1185:25:2","nodeType":"FunctionDefinition","parameters":{"id":525,"nodeType":"ParameterList","parameters":[],"src":"1210:2:2"},"returnParameters":{"id":526,"nodeType":"ParameterList","parameters":[],"src":"1220:0:2"},"scope":688,"src":"1176:88:2","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":540,"nodeType":"Block","src":"1321:35:2","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":537,"name":"SomeCustomError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":414,"src":"1334:15:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":538,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1334:17:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":539,"nodeType":"RevertStatement","src":"1327:24:2"}]},"functionSelector":"ffb4746b","id":541,"implemented":true,"kind":"function","modifiers":[],"name":"revertWithSomeCustomErrorView","nameLocation":"1277:29:2","nodeType":"FunctionDefinition","parameters":{"id":535,"nodeType":"ParameterList","parameters":[],"src":"1306:2:2"},"returnParameters":{"id":536,"nodeType":"ParameterList","parameters":[],"src":"1321:0:2"},"scope":688,"src":"1268:88:2","stateMutability":"pure","virtual":false,"visibility":"public"},{"body":{"id":550,"nodeType":"Block","src":"1407:47:2","statements":[{"expression":{"id":545,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"1413:3:2","subExpression":{"id":544,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":402,"src":"1413:1:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":546,"nodeType":"ExpressionStatement","src":"1413:3:2"},{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":547,"name":"AnotherCustomError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":416,"src":"1429:18:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":548,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1429:20:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":549,"nodeType":"RevertStatement","src":"1422:27:2"}]},"functionSelector":"4b5bbf6a","id":551,"implemented":true,"kind":"function","modifiers":[],"name":"revertWithAnotherCustomError","nameLocation":"1369:28:2","nodeType":"FunctionDefinition","parameters":{"id":542,"nodeType":"ParameterList","parameters":[],"src":"1397:2:2"},"returnParameters":{"id":543,"nodeType":"ParameterList","parameters":[],"src":"1407:0:2"},"scope":688,"src":"1360:94:2","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":557,"nodeType":"Block","src":"1514:38:2","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":554,"name":"AnotherCustomError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":416,"src":"1527:18:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":555,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1527:20:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":556,"nodeType":"RevertStatement","src":"1520:27:2"}]},"functionSelector":"aac014e0","id":558,"implemented":true,"kind":"function","modifiers":[],"name":"revertWithAnotherCustomErrorView","nameLocation":"1467:32:2","nodeType":"FunctionDefinition","parameters":{"id":552,"nodeType":"ParameterList","parameters":[],"src":"1499:2:2"},"returnParameters":{"id":553,"nodeType":"ParameterList","parameters":[],"src":"1514:0:2"},"scope":688,"src":"1458:94:2","stateMutability":"pure","virtual":false,"visibility":"public"},{"body":{"id":569,"nodeType":"Block","src":"1611:69:2","statements":[{"expression":{"id":562,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"1617:3:2","subExpression":{"id":561,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":402,"src":"1617:1:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":563,"nodeType":"ExpressionStatement","src":"1617:3:2"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":564,"name":"anotherContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":407,"src":"1626:15:2","typeDescriptions":{"typeIdentifier":"t_contract$_AnotherMatchersContract_$710","typeString":"contract AnotherMatchersContract"}},"id":566,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"revertWithYetAnotherCustomError","nodeType":"MemberAccess","referencedDeclaration":702,"src":"1626:47:2","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$__$returns$__$","typeString":"function () external"}},"id":567,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1626:49:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":568,"nodeType":"ExpressionStatement","src":"1626:49:2"}]},"functionSelector":"772f243a","id":570,"implemented":true,"kind":"function","modifiers":[],"name":"revertWithAnotherContractCustomError","nameLocation":"1565:36:2","nodeType":"FunctionDefinition","parameters":{"id":559,"nodeType":"ParameterList","parameters":[],"src":"1601:2:2"},"returnParameters":{"id":560,"nodeType":"ParameterList","parameters":[],"src":"1611:0:2"},"scope":688,"src":"1556:124:2","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":578,"nodeType":"Block","src":"1748:64:2","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":573,"name":"anotherContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":407,"src":"1754:15:2","typeDescriptions":{"typeIdentifier":"t_contract$_AnotherMatchersContract_$710","typeString":"contract AnotherMatchersContract"}},"id":575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"revertWithYetAnotherCustomErrorView","nodeType":"MemberAccess","referencedDeclaration":709,"src":"1754:51:2","typeDescriptions":{"typeIdentifier":"t_function_external_pure$__$returns$__$","typeString":"function () pure external"}},"id":576,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1754:53:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":577,"nodeType":"ExpressionStatement","src":"1754:53:2"}]},"functionSelector":"622051f1","id":579,"implemented":true,"kind":"function","modifiers":[],"name":"revertWithAnotherContractCustomErrorView","nameLocation":"1693:40:2","nodeType":"FunctionDefinition","parameters":{"id":571,"nodeType":"ParameterList","parameters":[],"src":"1733:2:2"},"returnParameters":{"id":572,"nodeType":"ParameterList","parameters":[],"src":"1748:0:2"},"scope":688,"src":"1684:128:2","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":591,"nodeType":"Block","src":"1870:49:2","statements":[{"expression":{"id":585,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"1876:3:2","subExpression":{"id":584,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":402,"src":"1876:1:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":586,"nodeType":"ExpressionStatement","src":"1876:3:2"},{"errorCall":{"arguments":[{"id":588,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":581,"src":"1912:1:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":587,"name":"CustomErrorWithUint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":424,"src":"1892:19:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":589,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1892:22:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":590,"nodeType":"RevertStatement","src":"1885:29:2"}]},"functionSelector":"73d2ea85","id":592,"implemented":true,"kind":"function","modifiers":[],"name":"revertWithCustomErrorWithUint","nameLocation":"1825:29:2","nodeType":"FunctionDefinition","parameters":{"id":582,"nodeType":"ParameterList","parameters":[{"constant":false,"id":581,"mutability":"mutable","name":"n","nameLocation":"1860:1:2","nodeType":"VariableDeclaration","scope":592,"src":"1855:6:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":580,"name":"uint","nodeType":"ElementaryTypeName","src":"1855:4:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1854:8:2"},"returnParameters":{"id":583,"nodeType":"ParameterList","parameters":[],"src":"1870:0:2"},"scope":688,"src":"1816:103:2","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":601,"nodeType":"Block","src":"1986:40:2","statements":[{"errorCall":{"arguments":[{"id":598,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":594,"src":"2019:1:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":597,"name":"CustomErrorWithUint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":424,"src":"1999:19:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":599,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1999:22:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":600,"nodeType":"RevertStatement","src":"1992:29:2"}]},"functionSelector":"7c3cb0af","id":602,"implemented":true,"kind":"function","modifiers":[],"name":"revertWithCustomErrorWithUintView","nameLocation":"1932:33:2","nodeType":"FunctionDefinition","parameters":{"id":595,"nodeType":"ParameterList","parameters":[{"constant":false,"id":594,"mutability":"mutable","name":"n","nameLocation":"1971:1:2","nodeType":"VariableDeclaration","scope":602,"src":"1966:6:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":593,"name":"uint","nodeType":"ElementaryTypeName","src":"1966:4:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1965:8:2"},"returnParameters":{"id":596,"nodeType":"ParameterList","parameters":[],"src":"1986:0:2"},"scope":688,"src":"1923:103:2","stateMutability":"pure","virtual":false,"visibility":"public"},{"body":{"id":614,"nodeType":"Block","src":"2082:48:2","statements":[{"expression":{"id":608,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"2088:3:2","subExpression":{"id":607,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":402,"src":"2088:1:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":609,"nodeType":"ExpressionStatement","src":"2088:3:2"},{"errorCall":{"arguments":[{"id":611,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":604,"src":"2123:1:2","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":610,"name":"CustomErrorWithInt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":420,"src":"2104:18:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_int256_$returns$__$","typeString":"function (int256) pure"}},"id":612,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2104:21:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":613,"nodeType":"RevertStatement","src":"2097:28:2"}]},"functionSelector":"8f933030","id":615,"implemented":true,"kind":"function","modifiers":[],"name":"revertWithCustomErrorWithInt","nameLocation":"2039:28:2","nodeType":"FunctionDefinition","parameters":{"id":605,"nodeType":"ParameterList","parameters":[{"constant":false,"id":604,"mutability":"mutable","name":"i","nameLocation":"2072:1:2","nodeType":"VariableDeclaration","scope":615,"src":"2068:5:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":603,"name":"int","nodeType":"ElementaryTypeName","src":"2068:3:2","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"2067:7:2"},"returnParameters":{"id":606,"nodeType":"ParameterList","parameters":[],"src":"2082:0:2"},"scope":688,"src":"2030:100:2","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":624,"nodeType":"Block","src":"2195:39:2","statements":[{"errorCall":{"arguments":[{"id":621,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":617,"src":"2227:1:2","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":620,"name":"CustomErrorWithInt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":420,"src":"2208:18:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_int256_$returns$__$","typeString":"function (int256) pure"}},"id":622,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2208:21:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":623,"nodeType":"RevertStatement","src":"2201:28:2"}]},"functionSelector":"47c56769","id":625,"implemented":true,"kind":"function","modifiers":[],"name":"revertWithCustomErrorWithIntView","nameLocation":"2143:32:2","nodeType":"FunctionDefinition","parameters":{"id":618,"nodeType":"ParameterList","parameters":[{"constant":false,"id":617,"mutability":"mutable","name":"i","nameLocation":"2180:1:2","nodeType":"VariableDeclaration","scope":625,"src":"2176:5:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":616,"name":"int","nodeType":"ElementaryTypeName","src":"2176:3:2","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"2175:7:2"},"returnParameters":{"id":619,"nodeType":"ParameterList","parameters":[],"src":"2195:0:2"},"scope":688,"src":"2134:100:2","stateMutability":"pure","virtual":false,"visibility":"public"},{"body":{"id":640,"nodeType":"Block","src":"2318:61:2","statements":[{"expression":{"id":633,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"2324:3:2","subExpression":{"id":632,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":402,"src":"2324:1:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":634,"nodeType":"ExpressionStatement","src":"2324:3:2"},{"errorCall":{"arguments":[{"id":636,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":627,"src":"2369:1:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":637,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":629,"src":"2372:1:2","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":635,"name":"CustomErrorWithUintAndString","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":430,"src":"2340:28:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_string_memory_ptr_$returns$__$","typeString":"function (uint256,string memory) pure"}},"id":638,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2340:34:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":639,"nodeType":"RevertStatement","src":"2333:41:2"}]},"functionSelector":"fe276a34","id":641,"implemented":true,"kind":"function","modifiers":[],"name":"revertWithCustomErrorWithUintAndString","nameLocation":"2247:38:2","nodeType":"FunctionDefinition","parameters":{"id":630,"nodeType":"ParameterList","parameters":[{"constant":false,"id":627,"mutability":"mutable","name":"n","nameLocation":"2291:1:2","nodeType":"VariableDeclaration","scope":641,"src":"2286:6:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":626,"name":"uint","nodeType":"ElementaryTypeName","src":"2286:4:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":629,"mutability":"mutable","name":"s","nameLocation":"2308:1:2","nodeType":"VariableDeclaration","scope":641,"src":"2294:15:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":628,"name":"string","nodeType":"ElementaryTypeName","src":"2294:6:2","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2285:25:2"},"returnParameters":{"id":631,"nodeType":"ParameterList","parameters":[],"src":"2318:0:2"},"scope":688,"src":"2238:141:2","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":653,"nodeType":"Block","src":"2472:52:2","statements":[{"errorCall":{"arguments":[{"id":649,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":643,"src":"2514:1:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":650,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":645,"src":"2517:1:2","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":648,"name":"CustomErrorWithUintAndString","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":430,"src":"2485:28:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_string_memory_ptr_$returns$__$","typeString":"function (uint256,string memory) pure"}},"id":651,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2485:34:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":652,"nodeType":"RevertStatement","src":"2478:41:2"}]},"functionSelector":"3ba4178b","id":654,"implemented":true,"kind":"function","modifiers":[],"name":"revertWithCustomErrorWithUintAndStringView","nameLocation":"2392:42:2","nodeType":"FunctionDefinition","parameters":{"id":646,"nodeType":"ParameterList","parameters":[{"constant":false,"id":643,"mutability":"mutable","name":"n","nameLocation":"2440:1:2","nodeType":"VariableDeclaration","scope":654,"src":"2435:6:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":642,"name":"uint","nodeType":"ElementaryTypeName","src":"2435:4:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":645,"mutability":"mutable","name":"s","nameLocation":"2457:1:2","nodeType":"VariableDeclaration","scope":654,"src":"2443:15:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":644,"name":"string","nodeType":"ElementaryTypeName","src":"2443:6:2","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2434:25:2"},"returnParameters":{"id":647,"nodeType":"ParameterList","parameters":[],"src":"2472:0:2"},"scope":688,"src":"2383:141:2","stateMutability":"pure","virtual":false,"visibility":"public"},{"body":{"id":671,"nodeType":"Block","src":"2590:58:2","statements":[{"expression":{"id":662,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"2596:3:2","subExpression":{"id":661,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":402,"src":"2596:1:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":663,"nodeType":"ExpressionStatement","src":"2596:3:2"},{"errorCall":{"arguments":[{"arguments":[{"id":666,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":656,"src":"2637:1:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":667,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":658,"src":"2640:1:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":665,"name":"Pair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":412,"src":"2632:4:2","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Pair_$412_storage_ptr_$","typeString":"type(struct Matchers.Pair storage pointer)"}},"id":668,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2632:10:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Pair_$412_memory_ptr","typeString":"struct Matchers.Pair memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Pair_$412_memory_ptr","typeString":"struct Matchers.Pair memory"}],"id":664,"name":"CustomErrorWithPair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":435,"src":"2612:19:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_struct$_Pair_$412_memory_ptr_$returns$__$","typeString":"function (struct Matchers.Pair memory) pure"}},"id":669,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2612:31:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":670,"nodeType":"RevertStatement","src":"2605:38:2"}]},"functionSelector":"e0a03812","id":672,"implemented":true,"kind":"function","modifiers":[],"name":"revertWithCustomErrorWithPair","nameLocation":"2537:29:2","nodeType":"FunctionDefinition","parameters":{"id":659,"nodeType":"ParameterList","parameters":[{"constant":false,"id":656,"mutability":"mutable","name":"a","nameLocation":"2572:1:2","nodeType":"VariableDeclaration","scope":672,"src":"2567:6:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":655,"name":"uint","nodeType":"ElementaryTypeName","src":"2567:4:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":658,"mutability":"mutable","name":"b","nameLocation":"2580:1:2","nodeType":"VariableDeclaration","scope":672,"src":"2575:6:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":657,"name":"uint","nodeType":"ElementaryTypeName","src":"2575:4:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2566:16:2"},"returnParameters":{"id":660,"nodeType":"ParameterList","parameters":[],"src":"2590:0:2"},"scope":688,"src":"2528:120:2","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":686,"nodeType":"Block","src":"2723:49:2","statements":[{"errorCall":{"arguments":[{"arguments":[{"id":681,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":674,"src":"2761:1:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":682,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":676,"src":"2764:1:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":680,"name":"Pair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":412,"src":"2756:4:2","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Pair_$412_storage_ptr_$","typeString":"type(struct Matchers.Pair storage pointer)"}},"id":683,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2756:10:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Pair_$412_memory_ptr","typeString":"struct Matchers.Pair memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Pair_$412_memory_ptr","typeString":"struct Matchers.Pair memory"}],"id":679,"name":"CustomErrorWithPair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":435,"src":"2736:19:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_struct$_Pair_$412_memory_ptr_$returns$__$","typeString":"function (struct Matchers.Pair memory) pure"}},"id":684,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2736:31:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":685,"nodeType":"RevertStatement","src":"2729:38:2"}]},"functionSelector":"1f542cf3","id":687,"implemented":true,"kind":"function","modifiers":[],"name":"revertWithCustomErrorWithPairView","nameLocation":"2661:33:2","nodeType":"FunctionDefinition","parameters":{"id":677,"nodeType":"ParameterList","parameters":[{"constant":false,"id":674,"mutability":"mutable","name":"a","nameLocation":"2700:1:2","nodeType":"VariableDeclaration","scope":687,"src":"2695:6:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":673,"name":"uint","nodeType":"ElementaryTypeName","src":"2695:4:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":676,"mutability":"mutable","name":"b","nameLocation":"2708:1:2","nodeType":"VariableDeclaration","scope":687,"src":"2703:6:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":675,"name":"uint","nodeType":"ElementaryTypeName","src":"2703:4:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2694:16:2"},"returnParameters":{"id":678,"nodeType":"ParameterList","parameters":[],"src":"2723:0:2"},"scope":688,"src":"2652:120:2","stateMutability":"pure","virtual":false,"visibility":"public"}],"scope":711,"src":"65:2709:2","usedErrors":[414,416,420,424,430,435]},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":710,"linearizedBaseContracts":[710],"name":"AnotherMatchersContract","nameLocation":"2785:23:2","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":690,"mutability":"mutable","name":"x","nameLocation":"2818:1:2","nodeType":"VariableDeclaration","scope":710,"src":"2813:6:2","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":689,"name":"uint","nodeType":"ElementaryTypeName","src":"2813:4:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"id":692,"name":"YetAnotherCustomError","nameLocation":"2830:21:2","nodeType":"ErrorDefinition","parameters":{"id":691,"nodeType":"ParameterList","parameters":[],"src":"2851:2:2"},"src":"2824:30:2"},{"body":{"id":701,"nodeType":"Block","src":"2908:50:2","statements":[{"expression":{"id":696,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"2914:3:2","subExpression":{"id":695,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":690,"src":"2914:1:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":697,"nodeType":"ExpressionStatement","src":"2914:3:2"},{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":698,"name":"YetAnotherCustomError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":692,"src":"2930:21:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":699,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2930:23:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":700,"nodeType":"RevertStatement","src":"2923:30:2"}]},"functionSelector":"4b2bd7e9","id":702,"implemented":true,"kind":"function","modifiers":[],"name":"revertWithYetAnotherCustomError","nameLocation":"2867:31:2","nodeType":"FunctionDefinition","parameters":{"id":693,"nodeType":"ParameterList","parameters":[],"src":"2898:2:2"},"returnParameters":{"id":694,"nodeType":"ParameterList","parameters":[],"src":"2908:0:2"},"scope":710,"src":"2858:100:2","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":708,"nodeType":"Block","src":"3021:41:2","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":705,"name":"YetAnotherCustomError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":692,"src":"3034:21:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":706,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3034:23:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":707,"nodeType":"RevertStatement","src":"3027:30:2"}]},"functionSelector":"40d83b24","id":709,"implemented":true,"kind":"function","modifiers":[],"name":"revertWithYetAnotherCustomErrorView","nameLocation":"2971:35:2","nodeType":"FunctionDefinition","parameters":{"id":703,"nodeType":"ParameterList","parameters":[],"src":"3006:2:2"},"returnParameters":{"id":704,"nodeType":"ParameterList","parameters":[],"src":"3021:0:2"},"scope":710,"src":"2962:100:2","stateMutability":"pure","virtual":false,"visibility":"public"}],"scope":711,"src":"2776:288:2","usedErrors":[692]}],"src":"40:3025:2"},"id":2},"contracts/Token.sol":{"ast":{"absolutePath":"contracts/Token.sol","exportedSymbols":{"MockToken":[873],"NotAToken":[874],"TokenWithOnlyName":[864],"TokenWithoutNameNorSymbol":[858]},"id":875,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":712,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"32:23:3"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":858,"linearizedBaseContracts":[858],"name":"TokenWithoutNameNorSymbol","nameLocation":"66:25:3","nodeType":"ContractDefinition","nodes":[{"constant":false,"functionSelector":"313ce567","id":715,"mutability":"mutable","name":"decimals","nameLocation":"108:8:3","nodeType":"VariableDeclaration","scope":858,"src":"96:24:3","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":713,"name":"uint","nodeType":"ElementaryTypeName","src":"96:4:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"31","id":714,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"119:1:3","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"visibility":"public"},{"constant":false,"functionSelector":"18160ddd","id":717,"mutability":"mutable","name":"totalSupply","nameLocation":"137:11:3","nodeType":"VariableDeclaration","scope":858,"src":"125:23:3","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":716,"name":"uint","nodeType":"ElementaryTypeName","src":"125:4:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"constant":false,"functionSelector":"70a08231","id":721,"mutability":"mutable","name":"balanceOf","nameLocation":"184:9:3","nodeType":"VariableDeclaration","scope":858,"src":"152:41:3","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":720,"keyType":{"id":718,"name":"address","nodeType":"ElementaryTypeName","src":"160:7:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"152:24:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueType":{"id":719,"name":"uint","nodeType":"ElementaryTypeName","src":"171:4:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"public"},{"constant":false,"id":727,"mutability":"mutable","name":"allowances","nameLocation":"242:10:3","nodeType":"VariableDeclaration","scope":858,"src":"197:55:3","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"typeName":{"id":726,"keyType":{"id":722,"name":"address","nodeType":"ElementaryTypeName","src":"205:7:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"197:44:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"valueType":{"id":725,"keyType":{"id":723,"name":"address","nodeType":"ElementaryTypeName","src":"224:7:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"216:24:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueType":{"id":724,"name":"uint","nodeType":"ElementaryTypeName","src":"235:4:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}}},"visibility":"internal"},{"body":{"id":741,"nodeType":"Block","src":"272:79:3","statements":[{"expression":{"id":732,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":730,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":717,"src":"278:11:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"315f3030305f3030305f303030","id":731,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"292:13:3","typeDescriptions":{"typeIdentifier":"t_rational_1000000000_by_1","typeString":"int_const 1000000000"},"value":"1_000_000_000"},"src":"278:27:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":733,"nodeType":"ExpressionStatement","src":"278:27:3"},{"expression":{"id":739,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":734,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":721,"src":"311:9:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":737,"indexExpression":{"expression":{"id":735,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"321:3:3","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":736,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"321:10:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"311:21:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":738,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":717,"src":"335:11:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"311:35:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":740,"nodeType":"ExpressionStatement","src":"311:35:3"}]},"id":742,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":728,"nodeType":"ParameterList","parameters":[],"src":"269:2:3"},"returnParameters":{"id":729,"nodeType":"ParameterList","parameters":[],"src":"272:0:3"},"scope":858,"src":"257:94:3","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":773,"nodeType":"Block","src":"419:141:3","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":754,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":752,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":746,"src":"433:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":753,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"441:1:3","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"433:9:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5472616e736665727265642076616c7565206973207a65726f","id":755,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"444:27:3","typeDescriptions":{"typeIdentifier":"t_stringliteral_4ca3cd75a1831a94a24913bfd2c9b9d35acbb11ac3447f65bb0682cf14f63f5c","typeString":"literal_string \"Transferred value is zero\""},"value":"Transferred value is zero"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_4ca3cd75a1831a94a24913bfd2c9b9d35acbb11ac3447f65bb0682cf14f63f5c","typeString":"literal_string \"Transferred value is zero\""}],"id":751,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"425:7:3","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":756,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"425:47:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":757,"nodeType":"ExpressionStatement","src":"425:47:3"},{"expression":{"id":763,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":758,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":721,"src":"479:9:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":761,"indexExpression":{"expression":{"id":759,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"489:3:3","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":760,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"489:10:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"479:21:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":762,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":746,"src":"504:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"479:30:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":764,"nodeType":"ExpressionStatement","src":"479:30:3"},{"expression":{"id":769,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":765,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":721,"src":"515:9:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":767,"indexExpression":{"id":766,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":744,"src":"525:2:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"515:13:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":768,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":746,"src":"532:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"515:22:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":770,"nodeType":"ExpressionStatement","src":"515:22:3"},{"expression":{"hexValue":"74727565","id":771,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"551:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":750,"id":772,"nodeType":"Return","src":"544:11:3"}]},"functionSelector":"a9059cbb","id":774,"implemented":true,"kind":"function","modifiers":[],"name":"transfer","nameLocation":"364:8:3","nodeType":"FunctionDefinition","parameters":{"id":747,"nodeType":"ParameterList","parameters":[{"constant":false,"id":744,"mutability":"mutable","name":"to","nameLocation":"381:2:3","nodeType":"VariableDeclaration","scope":774,"src":"373:10:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":743,"name":"address","nodeType":"ElementaryTypeName","src":"373:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":746,"mutability":"mutable","name":"value","nameLocation":"390:5:3","nodeType":"VariableDeclaration","scope":774,"src":"385:10:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":745,"name":"uint","nodeType":"ElementaryTypeName","src":"385:4:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"372:24:3"},"returnParameters":{"id":750,"nodeType":"ParameterList","parameters":[{"constant":false,"id":749,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":774,"src":"413:4:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":748,"name":"bool","nodeType":"ElementaryTypeName","src":"413:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"412:6:3"},"scope":858,"src":"355:205:3","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":789,"nodeType":"Block","src":"655:44:3","statements":[{"expression":{"baseExpression":{"baseExpression":{"id":783,"name":"allowances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":727,"src":"668:10:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":785,"indexExpression":{"id":784,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":776,"src":"679:5:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"668:17:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":787,"indexExpression":{"id":786,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":778,"src":"686:7:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"668:26:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":782,"id":788,"nodeType":"Return","src":"661:33:3"}]},"functionSelector":"dd62ed3e","id":790,"implemented":true,"kind":"function","modifiers":[],"name":"allowance","nameLocation":"573:9:3","nodeType":"FunctionDefinition","parameters":{"id":779,"nodeType":"ParameterList","parameters":[{"constant":false,"id":776,"mutability":"mutable","name":"owner","nameLocation":"591:5:3","nodeType":"VariableDeclaration","scope":790,"src":"583:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":775,"name":"address","nodeType":"ElementaryTypeName","src":"583:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":778,"mutability":"mutable","name":"spender","nameLocation":"606:7:3","nodeType":"VariableDeclaration","scope":790,"src":"598:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":777,"name":"address","nodeType":"ElementaryTypeName","src":"598:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"582:32:3"},"returnParameters":{"id":782,"nodeType":"ParameterList","parameters":[{"constant":false,"id":781,"mutability":"mutable","name":"remaining","nameLocation":"644:9:3","nodeType":"VariableDeclaration","scope":790,"src":"636:17:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":780,"name":"uint256","nodeType":"ElementaryTypeName","src":"636:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"635:19:3"},"scope":858,"src":"564:135:3","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":810,"nodeType":"Block","src":"782:67:3","statements":[{"expression":{"id":806,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":799,"name":"allowances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":727,"src":"788:10:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":803,"indexExpression":{"expression":{"id":800,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"799:3:3","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":801,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"799:10:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"788:22:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":804,"indexExpression":{"id":802,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":792,"src":"811:7:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"788:31:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":805,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":794,"src":"822:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"788:39:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":807,"nodeType":"ExpressionStatement","src":"788:39:3"},{"expression":{"hexValue":"74727565","id":808,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"840:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":798,"id":809,"nodeType":"Return","src":"833:11:3"}]},"functionSelector":"095ea7b3","id":811,"implemented":true,"kind":"function","modifiers":[],"name":"approve","nameLocation":"712:7:3","nodeType":"FunctionDefinition","parameters":{"id":795,"nodeType":"ParameterList","parameters":[{"constant":false,"id":792,"mutability":"mutable","name":"spender","nameLocation":"728:7:3","nodeType":"VariableDeclaration","scope":811,"src":"720:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":791,"name":"address","nodeType":"ElementaryTypeName","src":"720:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":794,"mutability":"mutable","name":"value","nameLocation":"745:5:3","nodeType":"VariableDeclaration","scope":811,"src":"737:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":793,"name":"uint256","nodeType":"ElementaryTypeName","src":"737:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"719:32:3"},"returnParameters":{"id":798,"nodeType":"ParameterList","parameters":[{"constant":false,"id":797,"mutability":"mutable","name":"success","nameLocation":"773:7:3","nodeType":"VariableDeclaration","scope":811,"src":"768:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":796,"name":"bool","nodeType":"ElementaryTypeName","src":"768:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"767:14:3"},"scope":858,"src":"703:146:3","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":856,"nodeType":"Block","src":"938:202:3","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":829,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":824,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":813,"src":"962:4:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":825,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"968:3:3","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":826,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"968:10:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":823,"name":"allowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":790,"src":"952:9:3","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view returns (uint256)"}},"id":827,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"952:27:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":828,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":817,"src":"983:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"952:36:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e73756666696369656e7420616c6c6f77616e6365","id":830,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"990:24:3","typeDescriptions":{"typeIdentifier":"t_stringliteral_45e3d26e36c3151c7f92a1eee9add9658cbb8e14605ee2452ec007389b9744bc","typeString":"literal_string \"Insufficient allowance\""},"value":"Insufficient allowance"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_45e3d26e36c3151c7f92a1eee9add9658cbb8e14605ee2452ec007389b9744bc","typeString":"literal_string \"Insufficient allowance\""}],"id":822,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"944:7:3","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":831,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"944:71:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":832,"nodeType":"ExpressionStatement","src":"944:71:3"},{"expression":{"id":840,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":833,"name":"allowances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":727,"src":"1022:10:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":837,"indexExpression":{"id":834,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":813,"src":"1033:4:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1022:16:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":838,"indexExpression":{"expression":{"id":835,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1039:3:3","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":836,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1039:10:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1022:28:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":839,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":817,"src":"1054:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1022:37:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":841,"nodeType":"ExpressionStatement","src":"1022:37:3"},{"expression":{"id":846,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":842,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":721,"src":"1065:9:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":844,"indexExpression":{"id":843,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":813,"src":"1075:4:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1065:15:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":845,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":817,"src":"1084:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1065:24:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":847,"nodeType":"ExpressionStatement","src":"1065:24:3"},{"expression":{"id":852,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":848,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":721,"src":"1095:9:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":850,"indexExpression":{"id":849,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":815,"src":"1105:2:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1095:13:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":851,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":817,"src":"1112:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1095:22:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":853,"nodeType":"ExpressionStatement","src":"1095:22:3"},{"expression":{"hexValue":"74727565","id":854,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1131:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":821,"id":855,"nodeType":"Return","src":"1124:11:3"}]},"functionSelector":"23b872dd","id":857,"implemented":true,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"862:12:3","nodeType":"FunctionDefinition","parameters":{"id":818,"nodeType":"ParameterList","parameters":[{"constant":false,"id":813,"mutability":"mutable","name":"from","nameLocation":"883:4:3","nodeType":"VariableDeclaration","scope":857,"src":"875:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":812,"name":"address","nodeType":"ElementaryTypeName","src":"875:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":815,"mutability":"mutable","name":"to","nameLocation":"897:2:3","nodeType":"VariableDeclaration","scope":857,"src":"889:10:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":814,"name":"address","nodeType":"ElementaryTypeName","src":"889:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":817,"mutability":"mutable","name":"value","nameLocation":"909:5:3","nodeType":"VariableDeclaration","scope":857,"src":"901:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":816,"name":"uint256","nodeType":"ElementaryTypeName","src":"901:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"874:41:3"},"returnParameters":{"id":821,"nodeType":"ParameterList","parameters":[{"constant":false,"id":820,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":857,"src":"932:4:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":819,"name":"bool","nodeType":"ElementaryTypeName","src":"932:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"931:6:3"},"scope":858,"src":"853:287:3","stateMutability":"nonpayable","virtual":false,"visibility":"public"}],"scope":875,"src":"57:1085:3","usedErrors":[]},{"abstract":false,"baseContracts":[{"baseName":{"id":859,"name":"TokenWithoutNameNorSymbol","nodeType":"IdentifierPath","referencedDeclaration":858,"src":"1174:25:3"},"id":860,"nodeType":"InheritanceSpecifier","src":"1174:25:3"}],"contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":864,"linearizedBaseContracts":[864,858],"name":"TokenWithOnlyName","nameLocation":"1153:17:3","nodeType":"ContractDefinition","nodes":[{"constant":false,"functionSelector":"06fdde03","id":863,"mutability":"mutable","name":"name","nameLocation":"1218:4:3","nodeType":"VariableDeclaration","scope":864,"src":"1204:32:3","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":861,"name":"string","nodeType":"ElementaryTypeName","src":"1204:6:3","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"4d6f636b546f6b656e","id":862,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1225:11:3","typeDescriptions":{"typeIdentifier":"t_stringliteral_59d91acf1a517d81ad15edcf2fd578e448883bcd506756a542295cb8c1c1be7e","typeString":"literal_string \"MockToken\""},"value":"MockToken"},"visibility":"public"}],"scope":875,"src":"1144:95:3","usedErrors":[]},{"abstract":false,"baseContracts":[{"baseName":{"id":865,"name":"TokenWithoutNameNorSymbol","nodeType":"IdentifierPath","referencedDeclaration":858,"src":"1263:25:3"},"id":866,"nodeType":"InheritanceSpecifier","src":"1263:25:3"}],"contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":873,"linearizedBaseContracts":[873,858],"name":"MockToken","nameLocation":"1250:9:3","nodeType":"ContractDefinition","nodes":[{"constant":false,"functionSelector":"06fdde03","id":869,"mutability":"mutable","name":"name","nameLocation":"1307:4:3","nodeType":"VariableDeclaration","scope":873,"src":"1293:32:3","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":867,"name":"string","nodeType":"ElementaryTypeName","src":"1293:6:3","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"4d6f636b546f6b656e","id":868,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1314:11:3","typeDescriptions":{"typeIdentifier":"t_stringliteral_59d91acf1a517d81ad15edcf2fd578e448883bcd506756a542295cb8c1c1be7e","typeString":"literal_string \"MockToken\""},"value":"MockToken"},"visibility":"public"},{"constant":false,"functionSelector":"95d89b41","id":872,"mutability":"mutable","name":"symbol","nameLocation":"1343:6:3","nodeType":"VariableDeclaration","scope":873,"src":"1329:28:3","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":870,"name":"string","nodeType":"ElementaryTypeName","src":"1329:6:3","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"4d434b","id":871,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1352:5:3","typeDescriptions":{"typeIdentifier":"t_stringliteral_9c3aa7d11ecb9affb5001de98d930d23db7380c6f51732a92986229c98447bc4","typeString":"literal_string \"MCK\""},"value":"MCK"},"visibility":"public"}],"scope":875,"src":"1241:119:3","usedErrors":[]},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":874,"linearizedBaseContracts":[874],"name":"NotAToken","nameLocation":"1371:9:3","nodeType":"ContractDefinition","nodes":[],"scope":875,"src":"1362:21:3","usedErrors":[]}],"src":"32:1352:3"},"id":3}},"contracts":{"contracts/ChangeEtherBalance.sol":{"ChangeEtherBalance":{"abi":[{"inputs":[],"name":"returnHalf","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"transferTo","outputs":[],"stateMutability":"payable","type":"function"},{"stateMutability":"payable","type":"receive"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"608060405234801561001057600080fd5b50610225806100206000396000f3fe60806040526004361061002d5760003560e01c8063a03fa7e314610039578063b019946e1461005557610034565b3661003457005b600080fd5b610053600480360381019061004e9190610113565b61005f565b005b61005d6100a9565b005b8073ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f193505050501580156100a5573d6000803e3d6000fd5b5050565b3373ffffffffffffffffffffffffffffffffffffffff166108fc6002346100d0919061013c565b9081150290604051600060405180830381858888f193505050501580156100fb573d6000803e3d6000fd5b50565b60008135905061010d816101d8565b92915050565b60006020828403121561012557600080fd5b6000610133848285016100fe565b91505092915050565b60006101478261019f565b91506101528361019f565b925082610162576101616101a9565b5b828204905092915050565b60006101788261017f565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6101e18161016d565b81146101ec57600080fd5b5056fea26469706673582212208e553461507bae731d37afa0d5a2a7dae74de7a6eab682733425a78884ed60b364736f6c63430008040033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x225 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x2D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xA03FA7E3 EQ PUSH2 0x39 JUMPI DUP1 PUSH4 0xB019946E EQ PUSH2 0x55 JUMPI PUSH2 0x34 JUMP JUMPDEST CALLDATASIZE PUSH2 0x34 JUMPI STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x53 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x4E SWAP2 SWAP1 PUSH2 0x113 JUMP JUMPDEST PUSH2 0x5F JUMP JUMPDEST STOP JUMPDEST PUSH2 0x5D PUSH2 0xA9 JUMP JUMPDEST STOP JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8FC CALLVALUE 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 0xA5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8FC PUSH1 0x2 CALLVALUE PUSH2 0xD0 SWAP2 SWAP1 PUSH2 0x13C JUMP JUMPDEST 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 0xFB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x10D DUP2 PUSH2 0x1D8 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x125 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x133 DUP5 DUP3 DUP6 ADD PUSH2 0xFE JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x147 DUP3 PUSH2 0x19F JUMP JUMPDEST SWAP2 POP PUSH2 0x152 DUP4 PUSH2 0x19F JUMP JUMPDEST SWAP3 POP DUP3 PUSH2 0x162 JUMPI PUSH2 0x161 PUSH2 0x1A9 JUMP JUMPDEST JUMPDEST DUP3 DUP3 DIV SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x178 DUP3 PUSH2 0x17F 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 PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH2 0x1E1 DUP2 PUSH2 0x16D JUMP JUMPDEST DUP2 EQ PUSH2 0x1EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP15 SSTORE CALLVALUE PUSH2 0x507B 0xAE PUSH20 0x1D37AFA0D5A2A7DAE74DE7A6EAB682733425A788 DUP5 0xED PUSH1 0xB3 PUSH5 0x736F6C6343 STOP ADDMOD DIV STOP CALLER ","sourceMap":"57:255:0:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:1425:4","statements":[{"body":{"nodeType":"YulBlock","src":"59:87:4","statements":[{"nodeType":"YulAssignment","src":"69:29:4","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"91:6:4"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"78:12:4"},"nodeType":"YulFunctionCall","src":"78:20:4"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"69:5:4"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"134:5:4"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"107:26:4"},"nodeType":"YulFunctionCall","src":"107:33:4"},"nodeType":"YulExpressionStatement","src":"107:33:4"}]},"name":"abi_decode_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"37:6:4","type":""},{"name":"end","nodeType":"YulTypedName","src":"45:3:4","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"53:5:4","type":""}],"src":"7:139:4"},{"body":{"nodeType":"YulBlock","src":"218:196:4","statements":[{"body":{"nodeType":"YulBlock","src":"264:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"273:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"276:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"266:6:4"},"nodeType":"YulFunctionCall","src":"266:12:4"},"nodeType":"YulExpressionStatement","src":"266:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"239:7:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"248:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"235:3:4"},"nodeType":"YulFunctionCall","src":"235:23:4"},{"kind":"number","nodeType":"YulLiteral","src":"260:2:4","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"231:3:4"},"nodeType":"YulFunctionCall","src":"231:32:4"},"nodeType":"YulIf","src":"228:2:4"},{"nodeType":"YulBlock","src":"290:117:4","statements":[{"nodeType":"YulVariableDeclaration","src":"305:15:4","value":{"kind":"number","nodeType":"YulLiteral","src":"319:1:4","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"309:6:4","type":""}]},{"nodeType":"YulAssignment","src":"334:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"369:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"380:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"365:3:4"},"nodeType":"YulFunctionCall","src":"365:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"389:7:4"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"344:20:4"},"nodeType":"YulFunctionCall","src":"344:53:4"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"334:6:4"}]}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"188:9:4","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"199:7:4","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"211:6:4","type":""}],"src":"152:262:4"},{"body":{"nodeType":"YulBlock","src":"462:143:4","statements":[{"nodeType":"YulAssignment","src":"472:25:4","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"495:1:4"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"477:17:4"},"nodeType":"YulFunctionCall","src":"477:20:4"},"variableNames":[{"name":"x","nodeType":"YulIdentifier","src":"472:1:4"}]},{"nodeType":"YulAssignment","src":"506:25:4","value":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"529:1:4"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"511:17:4"},"nodeType":"YulFunctionCall","src":"511:20:4"},"variableNames":[{"name":"y","nodeType":"YulIdentifier","src":"506:1:4"}]},{"body":{"nodeType":"YulBlock","src":"553:22:4","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x12","nodeType":"YulIdentifier","src":"555:16:4"},"nodeType":"YulFunctionCall","src":"555:18:4"},"nodeType":"YulExpressionStatement","src":"555:18:4"}]},"condition":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"550:1:4"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"543:6:4"},"nodeType":"YulFunctionCall","src":"543:9:4"},"nodeType":"YulIf","src":"540:2:4"},{"nodeType":"YulAssignment","src":"585:14:4","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"594:1:4"},{"name":"y","nodeType":"YulIdentifier","src":"597:1:4"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"590:3:4"},"nodeType":"YulFunctionCall","src":"590:9:4"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"585:1:4"}]}]},"name":"checked_div_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"451:1:4","type":""},{"name":"y","nodeType":"YulTypedName","src":"454:1:4","type":""}],"returnVariables":[{"name":"r","nodeType":"YulTypedName","src":"460:1:4","type":""}],"src":"420:185:4"},{"body":{"nodeType":"YulBlock","src":"656:51:4","statements":[{"nodeType":"YulAssignment","src":"666:35:4","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"695:5:4"}],"functionName":{"name":"cleanup_t_uint160","nodeType":"YulIdentifier","src":"677:17:4"},"nodeType":"YulFunctionCall","src":"677:24:4"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"666:7:4"}]}]},"name":"cleanup_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"638:5:4","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"648:7:4","type":""}],"src":"611:96:4"},{"body":{"nodeType":"YulBlock","src":"758:81:4","statements":[{"nodeType":"YulAssignment","src":"768:65:4","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"783:5:4"},{"kind":"number","nodeType":"YulLiteral","src":"790:42:4","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"779:3:4"},"nodeType":"YulFunctionCall","src":"779:54:4"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"768:7:4"}]}]},"name":"cleanup_t_uint160","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"740:5:4","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"750:7:4","type":""}],"src":"713:126:4"},{"body":{"nodeType":"YulBlock","src":"890:32:4","statements":[{"nodeType":"YulAssignment","src":"900:16:4","value":{"name":"value","nodeType":"YulIdentifier","src":"911:5:4"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"900:7:4"}]}]},"name":"cleanup_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"872:5:4","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"882:7:4","type":""}],"src":"845:77:4"},{"body":{"nodeType":"YulBlock","src":"956:152:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"973:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"976:77:4","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"966:6:4"},"nodeType":"YulFunctionCall","src":"966:88:4"},"nodeType":"YulExpressionStatement","src":"966:88:4"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1070:1:4","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"1073:4:4","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1063:6:4"},"nodeType":"YulFunctionCall","src":"1063:15:4"},"nodeType":"YulExpressionStatement","src":"1063:15:4"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1094:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1097:4:4","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1087:6:4"},"nodeType":"YulFunctionCall","src":"1087:15:4"},"nodeType":"YulExpressionStatement","src":"1087:15:4"}]},"name":"panic_error_0x11","nodeType":"YulFunctionDefinition","src":"928:180:4"},{"body":{"nodeType":"YulBlock","src":"1142:152:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1159:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1162:77:4","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1152:6:4"},"nodeType":"YulFunctionCall","src":"1152:88:4"},"nodeType":"YulExpressionStatement","src":"1152:88:4"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1256:1:4","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"1259:4:4","type":"","value":"0x12"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1249:6:4"},"nodeType":"YulFunctionCall","src":"1249:15:4"},"nodeType":"YulExpressionStatement","src":"1249:15:4"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1280:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1283:4:4","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1273:6:4"},"nodeType":"YulFunctionCall","src":"1273:15:4"},"nodeType":"YulExpressionStatement","src":"1273:15:4"}]},"name":"panic_error_0x12","nodeType":"YulFunctionDefinition","src":"1114:180:4"},{"body":{"nodeType":"YulBlock","src":"1343:79:4","statements":[{"body":{"nodeType":"YulBlock","src":"1400:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1409:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1412:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1402:6:4"},"nodeType":"YulFunctionCall","src":"1402:12:4"},"nodeType":"YulExpressionStatement","src":"1402:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1366:5:4"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1391:5:4"}],"functionName":{"name":"cleanup_t_address","nodeType":"YulIdentifier","src":"1373:17:4"},"nodeType":"YulFunctionCall","src":"1373:24:4"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1363:2:4"},"nodeType":"YulFunctionCall","src":"1363:35:4"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1356:6:4"},"nodeType":"YulFunctionCall","src":"1356:43:4"},"nodeType":"YulIf","src":"1353:2:4"}]},"name":"validator_revert_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1336:5:4","type":""}],"src":"1300:122:4"}]},"contents":"{\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_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 checked_div_t_uint256(x, y) -> r {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n if iszero(y) { panic_error_0x12() }\n\n r := div(x, y)\n }\n\n function cleanup_t_address(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 panic_error_0x11() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n\n function panic_error_0x12() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x12)\n revert(0, 0x24)\n }\n\n function validator_revert_t_address(value) {\n if iszero(eq(value, cleanup_t_address(value))) { revert(0, 0) }\n }\n\n}\n","id":4,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"60806040526004361061002d5760003560e01c8063a03fa7e314610039578063b019946e1461005557610034565b3661003457005b600080fd5b610053600480360381019061004e9190610113565b61005f565b005b61005d6100a9565b005b8073ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f193505050501580156100a5573d6000803e3d6000fd5b5050565b3373ffffffffffffffffffffffffffffffffffffffff166108fc6002346100d0919061013c565b9081150290604051600060405180830381858888f193505050501580156100fb573d6000803e3d6000fd5b50565b60008135905061010d816101d8565b92915050565b60006020828403121561012557600080fd5b6000610133848285016100fe565b91505092915050565b60006101478261019f565b91506101528361019f565b925082610162576101616101a9565b5b828204905092915050565b60006101788261017f565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6101e18161016d565b81146101ec57600080fd5b5056fea26469706673582212208e553461507bae731d37afa0d5a2a7dae74de7a6eab682733425a78884ed60b364736f6c63430008040033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x2D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xA03FA7E3 EQ PUSH2 0x39 JUMPI DUP1 PUSH4 0xB019946E EQ PUSH2 0x55 JUMPI PUSH2 0x34 JUMP JUMPDEST CALLDATASIZE PUSH2 0x34 JUMPI STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x53 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x4E SWAP2 SWAP1 PUSH2 0x113 JUMP JUMPDEST PUSH2 0x5F JUMP JUMPDEST STOP JUMPDEST PUSH2 0x5D PUSH2 0xA9 JUMP JUMPDEST STOP JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8FC CALLVALUE 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 0xA5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8FC PUSH1 0x2 CALLVALUE PUSH2 0xD0 SWAP2 SWAP1 PUSH2 0x13C JUMP JUMPDEST 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 0xFB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x10D DUP2 PUSH2 0x1D8 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x125 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x133 DUP5 DUP3 DUP6 ADD PUSH2 0xFE JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x147 DUP3 PUSH2 0x19F JUMP JUMPDEST SWAP2 POP PUSH2 0x152 DUP4 PUSH2 0x19F JUMP JUMPDEST SWAP3 POP DUP3 PUSH2 0x162 JUMPI PUSH2 0x161 PUSH2 0x1A9 JUMP JUMPDEST JUMPDEST DUP3 DUP3 DIV SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x178 DUP3 PUSH2 0x17F 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 PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH2 0x1E1 DUP2 PUSH2 0x16D JUMP JUMPDEST DUP2 EQ PUSH2 0x1EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP15 SSTORE CALLVALUE PUSH2 0x507B 0xAE PUSH20 0x1D37AFA0D5A2A7DAE74DE7A6EAB682733425A788 DUP5 0xED PUSH1 0xB3 PUSH5 0x736F6C6343 STOP ADDMOD DIV STOP CALLER ","sourceMap":"57:255:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;184:93;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;89:91;;;:::i;:::-;;184:93;247:4;239:22;;:33;262:9;239:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;184:93;:::o;89:91::-;140:10;132:28;;:43;173:1;161:9;:13;;;;:::i;:::-;132:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;89:91::o;7:139:4:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:262::-;211:6;260:2;248:9;239:7;235:23;231:32;228:2;;;276:1;273;266:12;228:2;319:1;344:53;389:7;380:6;369:9;365:22;344:53;:::i;:::-;334:63;;290:117;218:196;;;;:::o;420:185::-;460:1;477:20;495:1;477:20;:::i;:::-;472:25;;511:20;529:1;511:20;:::i;:::-;506:25;;550:1;540:2;;555:18;;:::i;:::-;540:2;597:1;594;590:9;585:14;;462:143;;;;:::o;611:96::-;648:7;677:24;695:5;677:24;:::i;:::-;666:35;;656:51;;;:::o;713:126::-;750:7;790:42;783:5;779:54;768:65;;758:81;;;:::o;845:77::-;882:7;911:5;900:16;;890:32;;;:::o;1114:180::-;1162:77;1159:1;1152:88;1259:4;1256:1;1249:15;1283:4;1280:1;1273:15;1300:122;1373:24;1391:5;1373:24;:::i;:::-;1366:5;1363:35;1353:2;;1412:1;1409;1402:12;1353:2;1343:79;:::o"},"methodIdentifiers":{"returnHalf()":"b019946e","transferTo(address)":"a03fa7e3"}},"metadata":"{\"compiler\":{\"version\":\"0.8.4+commit.c7e474f2\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"returnHalf\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"transferTo\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/ChangeEtherBalance.sol\":\"ChangeEtherBalance\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/ChangeEtherBalance.sol\":{\"keccak256\":\"0x9c266d442b9dd1fdb8311deec6e6dc9b59612eee5279091d54a006779b1db3f0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://533b87dc323c18ae4775141b46443e8bce865632e9af58eee3b044cfb37f9ef7\",\"dweb:/ipfs/QmbUkSPQDMQ1jEt6n3wwNK9s7BrQhNuy2iYLM4df36AWma\"]}},\"version\":1}"}},"contracts/Events.sol":{"AnotherContract":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"u","type":"uint256"}],"name":"WithUintArg","type":"event"},{"inputs":[{"internalType":"uint256","name":"u","type":"uint256"}],"name":"emitUint","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"608060405234801561001057600080fd5b50610130806100206000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c80639194024414602d575b600080fd5b60436004803603810190603f91906090565b6045565b005b7f97535d4b4270d3f1a499c85ae918ba6798cbdcc83a26529331a25dcd2194cfce816040516072919060c3565b60405180910390a150565b600081359050608a8160e6565b92915050565b60006020828403121560a157600080fd5b600060ad84828501607d565b91505092915050565b60bd8160dc565b82525050565b600060208201905060d6600083018460b6565b92915050565b6000819050919050565b60ed8160dc565b811460f757600080fd5b5056fea264697066735822122083cb9b1ec00d6d1ec78d28771d3bf4778c5ba00b0532a2448d42cbab653355a064736f6c63430008040033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x130 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x28 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x91940244 EQ PUSH1 0x2D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x43 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH1 0x3F SWAP2 SWAP1 PUSH1 0x90 JUMP JUMPDEST PUSH1 0x45 JUMP JUMPDEST STOP JUMPDEST PUSH32 0x97535D4B4270D3F1A499C85AE918BA6798CBDCC83A26529331A25DCD2194CFCE DUP2 PUSH1 0x40 MLOAD PUSH1 0x72 SWAP2 SWAP1 PUSH1 0xC3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH1 0x8A DUP2 PUSH1 0xE6 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH1 0xA1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0xAD DUP5 DUP3 DUP6 ADD PUSH1 0x7D JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0xBD DUP2 PUSH1 0xDC JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH1 0xD6 PUSH1 0x0 DUP4 ADD DUP5 PUSH1 0xB6 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0xED DUP2 PUSH1 0xDC JUMP JUMPDEST DUP2 EQ PUSH1 0xF7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP4 0xCB SWAP12 0x1E 0xC0 0xD PUSH14 0x1EC78D28771D3BF4778C5BA00B05 ORIGIN LOG2 DIFFICULTY DUP14 TIMESTAMP 0xCB 0xAB PUSH6 0x3355A064736F PUSH13 0x63430008040033000000000000 ","sourceMap":"2530:124:1:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:980:4","statements":[{"body":{"nodeType":"YulBlock","src":"59:87:4","statements":[{"nodeType":"YulAssignment","src":"69:29:4","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"91:6:4"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"78:12:4"},"nodeType":"YulFunctionCall","src":"78:20:4"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"69:5:4"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"134:5:4"}],"functionName":{"name":"validator_revert_t_uint256","nodeType":"YulIdentifier","src":"107:26:4"},"nodeType":"YulFunctionCall","src":"107:33:4"},"nodeType":"YulExpressionStatement","src":"107:33:4"}]},"name":"abi_decode_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"37:6:4","type":""},{"name":"end","nodeType":"YulTypedName","src":"45:3:4","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"53:5:4","type":""}],"src":"7:139:4"},{"body":{"nodeType":"YulBlock","src":"218:196:4","statements":[{"body":{"nodeType":"YulBlock","src":"264:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"273:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"276:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"266:6:4"},"nodeType":"YulFunctionCall","src":"266:12:4"},"nodeType":"YulExpressionStatement","src":"266:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"239:7:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"248:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"235:3:4"},"nodeType":"YulFunctionCall","src":"235:23:4"},{"kind":"number","nodeType":"YulLiteral","src":"260:2:4","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"231:3:4"},"nodeType":"YulFunctionCall","src":"231:32:4"},"nodeType":"YulIf","src":"228:2:4"},{"nodeType":"YulBlock","src":"290:117:4","statements":[{"nodeType":"YulVariableDeclaration","src":"305:15:4","value":{"kind":"number","nodeType":"YulLiteral","src":"319:1:4","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"309:6:4","type":""}]},{"nodeType":"YulAssignment","src":"334:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"369:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"380:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"365:3:4"},"nodeType":"YulFunctionCall","src":"365:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"389:7:4"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"344:20:4"},"nodeType":"YulFunctionCall","src":"344:53:4"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"334:6:4"}]}]}]},"name":"abi_decode_tuple_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"188:9:4","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"199:7:4","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"211:6:4","type":""}],"src":"152:262:4"},{"body":{"nodeType":"YulBlock","src":"485:53:4","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"502:3:4"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"525:5:4"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"507:17:4"},"nodeType":"YulFunctionCall","src":"507:24:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"495:6:4"},"nodeType":"YulFunctionCall","src":"495:37:4"},"nodeType":"YulExpressionStatement","src":"495:37:4"}]},"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"473:5:4","type":""},{"name":"pos","nodeType":"YulTypedName","src":"480:3:4","type":""}],"src":"420:118:4"},{"body":{"nodeType":"YulBlock","src":"642:124:4","statements":[{"nodeType":"YulAssignment","src":"652:26:4","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"664:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"675:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"660:3:4"},"nodeType":"YulFunctionCall","src":"660:18:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"652:4:4"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"732:6:4"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"745:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"756:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"741:3:4"},"nodeType":"YulFunctionCall","src":"741:17:4"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"688:43:4"},"nodeType":"YulFunctionCall","src":"688:71:4"},"nodeType":"YulExpressionStatement","src":"688:71:4"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"614:9:4","type":""},{"name":"value0","nodeType":"YulTypedName","src":"626:6:4","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"637:4:4","type":""}],"src":"544:222:4"},{"body":{"nodeType":"YulBlock","src":"817:32:4","statements":[{"nodeType":"YulAssignment","src":"827:16:4","value":{"name":"value","nodeType":"YulIdentifier","src":"838:5:4"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"827:7:4"}]}]},"name":"cleanup_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"799:5:4","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"809:7:4","type":""}],"src":"772:77:4"},{"body":{"nodeType":"YulBlock","src":"898:79:4","statements":[{"body":{"nodeType":"YulBlock","src":"955:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"964:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"967:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"957:6:4"},"nodeType":"YulFunctionCall","src":"957:12:4"},"nodeType":"YulExpressionStatement","src":"957:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"921:5:4"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"946:5:4"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"928:17:4"},"nodeType":"YulFunctionCall","src":"928:24:4"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"918:2:4"},"nodeType":"YulFunctionCall","src":"918:35:4"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"911:6:4"},"nodeType":"YulFunctionCall","src":"911:43:4"},"nodeType":"YulIf","src":"908:2:4"}]},"name":"validator_revert_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"891:5:4","type":""}],"src":"855:122:4"}]},"contents":"{\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_uint256(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_uint256(add(headStart, offset), dataEnd)\n }\n\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_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 cleanup_t_uint256(value) -> cleaned {\n cleaned := value\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":4,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"6080604052348015600f57600080fd5b506004361060285760003560e01c80639194024414602d575b600080fd5b60436004803603810190603f91906090565b6045565b005b7f97535d4b4270d3f1a499c85ae918ba6798cbdcc83a26529331a25dcd2194cfce816040516072919060c3565b60405180910390a150565b600081359050608a8160e6565b92915050565b60006020828403121560a157600080fd5b600060ad84828501607d565b91505092915050565b60bd8160dc565b82525050565b600060208201905060d6600083018460b6565b92915050565b6000819050919050565b60ed8160dc565b811460f757600080fd5b5056fea264697066735822122083cb9b1ec00d6d1ec78d28771d3bf4778c5ba00b0532a2448d42cbab653355a064736f6c63430008040033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x28 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x91940244 EQ PUSH1 0x2D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x43 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH1 0x3F SWAP2 SWAP1 PUSH1 0x90 JUMP JUMPDEST PUSH1 0x45 JUMP JUMPDEST STOP JUMPDEST PUSH32 0x97535D4B4270D3F1A499C85AE918BA6798CBDCC83A26529331A25DCD2194CFCE DUP2 PUSH1 0x40 MLOAD PUSH1 0x72 SWAP2 SWAP1 PUSH1 0xC3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH1 0x8A DUP2 PUSH1 0xE6 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH1 0xA1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0xAD DUP5 DUP3 DUP6 ADD PUSH1 0x7D JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0xBD DUP2 PUSH1 0xDC JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH1 0xD6 PUSH1 0x0 DUP4 ADD DUP5 PUSH1 0xB6 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0xED DUP2 PUSH1 0xDC JUMP JUMPDEST DUP2 EQ PUSH1 0xF7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP4 0xCB SWAP12 0x1E 0xC0 0xD PUSH14 0x1EC78D28771D3BF4778C5BA00B05 ORIGIN LOG2 DIFFICULTY DUP14 TIMESTAMP 0xCB 0xAB PUSH6 0x3355A064736F PUSH13 0x63430008040033000000000000 ","sourceMap":"2530:124:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2589:63;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;2633:14;2645:1;2633:14;;;;;;:::i;:::-;;;;;;;;2589:63;:::o;7:139:4:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:262::-;211:6;260:2;248:9;239:7;235:23;231:32;228:2;;;276:1;273;266:12;228:2;319:1;344:53;389:7;380:6;369:9;365:22;344:53;:::i;:::-;334:63;;290:117;218:196;;;;:::o;420:118::-;507:24;525:5;507:24;:::i;:::-;502:3;495:37;485:53;;:::o;544:222::-;637:4;675:2;664:9;660:18;652:26;;688:71;756:1;745:9;741:17;732:6;688:71;:::i;:::-;642:124;;;;:::o;772:77::-;809:7;838:5;827:16;;817:32;;;:::o;855:122::-;928:24;946:5;928:24;:::i;:::-;921:5;918:35;908:2;;967:1;964;957:12;908:2;898:79;:::o"},"methodIdentifiers":{"emitUint(uint256)":"91940244"}},"metadata":"{\"compiler\":{\"version\":\"0.8.4+commit.c7e474f2\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"u\",\"type\":\"uint256\"}],\"name\":\"WithUintArg\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"u\",\"type\":\"uint256\"}],\"name\":\"emitUint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/Events.sol\":\"AnotherContract\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/Events.sol\":{\"keccak256\":\"0x1f12bbd1b991a4eb017f864e7ca09d99cee0730630313442e99fc32a29b28b91\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c8ba3dbc99ecfbb05a95a9a89e8ea74e86f7cbd5441a53fca9f3de94651313d5\",\"dweb:/ipfs/QmYr9HUxkuQxuEwxtLn3f9gB7i2epM95Znt6fRj9xL9T6Y\"]}},\"version\":1}"},"Events":{"abi":[{"inputs":[{"internalType":"contract AnotherContract","name":"c","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"a","type":"address"}],"name":"WithAddressArg","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"b","type":"bytes32"}],"name":"WithBytes32Arg","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32[2]","name":"a","type":"bytes32[2]"}],"name":"WithBytes32Array","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes","name":"b","type":"bytes"}],"name":"WithBytesArg","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"b","type":"bytes32"}],"name":"WithIndexedBytes32Arg","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes","name":"b","type":"bytes"}],"name":"WithIndexedBytesArg","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"string","name":"s","type":"string"}],"name":"WithIndexedStringArg","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"int256","name":"i","type":"int256"}],"name":"WithIntArg","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"s","type":"string"}],"name":"WithStringArg","type":"event"},{"anonymous":false,"inputs":[{"components":[{"internalType":"uint256","name":"u","type":"uint256"},{"internalType":"uint256","name":"v","type":"uint256"}],"indexed":false,"internalType":"struct Events.Struct","name":"s","type":"tuple"}],"name":"WithStructArg","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"s","type":"string"},{"indexed":false,"internalType":"string","name":"t","type":"string"}],"name":"WithTwoStringArgs","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"u","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"v","type":"uint256"}],"name":"WithTwoUintArgs","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"u","type":"uint256"}],"name":"WithUintArg","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256[2]","name":"a","type":"uint256[2]"}],"name":"WithUintArray","type":"event"},{"anonymous":false,"inputs":[],"name":"WithoutArgs","type":"event"},{"inputs":[],"name":"doNotEmit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"a","type":"address"}],"name":"emitAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"b","type":"bytes"}],"name":"emitBytes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"b","type":"bytes32"}],"name":"emitBytes32","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"b","type":"bytes32"},{"internalType":"bytes32","name":"c","type":"bytes32"}],"name":"emitBytes32Array","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"b","type":"bytes"}],"name":"emitIndexedBytes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"b","type":"bytes32"}],"name":"emitIndexedBytes32","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"s","type":"string"}],"name":"emitIndexedString","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"int256","name":"i","type":"int256"}],"name":"emitInt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"u","type":"uint256"}],"name":"emitNestedUintFromAnotherContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"u","type":"uint256"}],"name":"emitNestedUintFromSameContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"s","type":"string"}],"name":"emitString","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"u","type":"uint256"},{"internalType":"uint256","name":"v","type":"uint256"}],"name":"emitStruct","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"u","type":"uint256"},{"internalType":"uint256","name":"v","type":"uint256"}],"name":"emitTwoUints","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"u","type":"uint256"},{"internalType":"uint256","name":"v","type":"uint256"},{"internalType":"string","name":"s","type":"string"},{"internalType":"string","name":"t","type":"string"}],"name":"emitTwoUintsAndTwoStrings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"u","type":"uint256"}],"name":"emitUint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"u","type":"uint256"},{"internalType":"string","name":"s","type":"string"}],"name":"emitUintAndString","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"u","type":"uint256"},{"internalType":"uint256","name":"v","type":"uint256"}],"name":"emitUintArray","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"u","type":"uint256"},{"internalType":"uint256","name":"v","type":"uint256"}],"name":"emitUintTwice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"emitWithoutArgs","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:1068:4","statements":[{"body":{"nodeType":"YulBlock","src":"93:103:4","statements":[{"nodeType":"YulAssignment","src":"103:22:4","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"118:6:4"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"112:5:4"},"nodeType":"YulFunctionCall","src":"112:13:4"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"103:5:4"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"184:5:4"}],"functionName":{"name":"validator_revert_t_contract$_AnotherContract_$374","nodeType":"YulIdentifier","src":"134:49:4"},"nodeType":"YulFunctionCall","src":"134:56:4"},"nodeType":"YulExpressionStatement","src":"134:56:4"}]},"name":"abi_decode_t_contract$_AnotherContract_$374_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"71:6:4","type":""},{"name":"end","nodeType":"YulTypedName","src":"79:3:4","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"87:5:4","type":""}],"src":"7:189:4"},{"body":{"nodeType":"YulBlock","src":"302:230:4","statements":[{"body":{"nodeType":"YulBlock","src":"348:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"357:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"360:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"350:6:4"},"nodeType":"YulFunctionCall","src":"350:12:4"},"nodeType":"YulExpressionStatement","src":"350:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"323:7:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"332:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"319:3:4"},"nodeType":"YulFunctionCall","src":"319:23:4"},{"kind":"number","nodeType":"YulLiteral","src":"344:2:4","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"315:3:4"},"nodeType":"YulFunctionCall","src":"315:32:4"},"nodeType":"YulIf","src":"312:2:4"},{"nodeType":"YulBlock","src":"374:151:4","statements":[{"nodeType":"YulVariableDeclaration","src":"389:15:4","value":{"kind":"number","nodeType":"YulLiteral","src":"403:1:4","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"393:6:4","type":""}]},{"nodeType":"YulAssignment","src":"418:97:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"487:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"498:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"483:3:4"},"nodeType":"YulFunctionCall","src":"483:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"507:7:4"}],"functionName":{"name":"abi_decode_t_contract$_AnotherContract_$374_fromMemory","nodeType":"YulIdentifier","src":"428:54:4"},"nodeType":"YulFunctionCall","src":"428:87:4"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"418:6:4"}]}]}]},"name":"abi_decode_tuple_t_contract$_AnotherContract_$374_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"272:9:4","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"283:7:4","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"295:6:4","type":""}],"src":"202:330:4"},{"body":{"nodeType":"YulBlock","src":"583:51:4","statements":[{"nodeType":"YulAssignment","src":"593:35:4","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"622:5:4"}],"functionName":{"name":"cleanup_t_uint160","nodeType":"YulIdentifier","src":"604:17:4"},"nodeType":"YulFunctionCall","src":"604:24:4"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"593:7:4"}]}]},"name":"cleanup_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"565:5:4","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"575:7:4","type":""}],"src":"538:96:4"},{"body":{"nodeType":"YulBlock","src":"708:51:4","statements":[{"nodeType":"YulAssignment","src":"718:35:4","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"747:5:4"}],"functionName":{"name":"cleanup_t_address","nodeType":"YulIdentifier","src":"729:17:4"},"nodeType":"YulFunctionCall","src":"729:24:4"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"718:7:4"}]}]},"name":"cleanup_t_contract$_AnotherContract_$374","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"690:5:4","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"700:7:4","type":""}],"src":"640:119:4"},{"body":{"nodeType":"YulBlock","src":"810:81:4","statements":[{"nodeType":"YulAssignment","src":"820:65:4","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"835:5:4"},{"kind":"number","nodeType":"YulLiteral","src":"842:42:4","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"831:3:4"},"nodeType":"YulFunctionCall","src":"831:54:4"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"820:7:4"}]}]},"name":"cleanup_t_uint160","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"792:5:4","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"802:7:4","type":""}],"src":"765:126:4"},{"body":{"nodeType":"YulBlock","src":"963:102:4","statements":[{"body":{"nodeType":"YulBlock","src":"1043:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1052:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1055:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1045:6:4"},"nodeType":"YulFunctionCall","src":"1045:12:4"},"nodeType":"YulExpressionStatement","src":"1045:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"986:5:4"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1034:5:4"}],"functionName":{"name":"cleanup_t_contract$_AnotherContract_$374","nodeType":"YulIdentifier","src":"993:40:4"},"nodeType":"YulFunctionCall","src":"993:47:4"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"983:2:4"},"nodeType":"YulFunctionCall","src":"983:58:4"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"976:6:4"},"nodeType":"YulFunctionCall","src":"976:66:4"},"nodeType":"YulIf","src":"973:2:4"}]},"name":"validator_revert_t_contract$_AnotherContract_$374","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"956:5:4","type":""}],"src":"897:168:4"}]},"contents":"{\n\n function abi_decode_t_contract$_AnotherContract_$374_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_contract$_AnotherContract_$374(value)\n }\n\n function abi_decode_tuple_t_contract$_AnotherContract_$374_fromMemory(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_contract$_AnotherContract_$374_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function cleanup_t_contract$_AnotherContract_$374(value) -> cleaned {\n cleaned := cleanup_t_address(value)\n }\n\n function cleanup_t_uint160(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n }\n\n function validator_revert_t_contract$_AnotherContract_$374(value) {\n if iszero(eq(value, cleanup_t_contract$_AnotherContract_$374(value))) { revert(0, 0) }\n }\n\n}\n","id":4,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"60806040523480156200001157600080fd5b506040516200140d3803806200140d833981810160405281019062000037919062000095565b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505062000123565b6000815190506200008f8162000109565b92915050565b600060208284031215620000a857600080fd5b6000620000b8848285016200007e565b91505092915050565b6000620000ce82620000e9565b9050919050565b6000620000e282620000c1565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6200011481620000d5565b81146200012057600080fd5b50565b6112da80620001336000396000f3fe608060405234801561001057600080fd5b506004361061012c5760003560e01c80638a618191116100ad578063c76f063511610071578063c76f0635146102c3578063cc07e605146102df578063d3931e57146102fb578063db6cdf6814610317578063ec5c3ede146103215761012c565b80638a6181911461024957806390b37ea214610265578063919402441461026f5780639f31a2231461028b578063c0cd80e6146102a75761012c565b806333311ef3116100f457806333311ef3146101bd57806338393646146101d9578063443690a0146101f5578063532b9cce14610211578063813a8cf51461022d5761012c565b8063048858e5146101315780630c0c941a1461014d57806317aba537146101695780632536f127146101855780632785f8d6146101a1575b600080fd5b61014b600480360381019061014691906109f0565b61033d565b005b61016760048036038101906101629190610b7d565b61036d565b005b610183600480360381019061017e9190610b7d565b6103df565b005b61019f600480360381019061019a9190610abf565b61042e565b005b6101bb60048036038101906101b69190610b29565b610468565b005b6101d760048036038101906101d291906109f0565b6104da565b005b6101f360048036038101906101ee9190610b7d565b610514565b005b61020f600480360381019061020a9190610abf565b610551565b005b61022b60048036038101906102269190610bb9565b610596565b005b61024760048036038101906102429190610b00565b61060e565b005b610263600480360381019061025e9190610a96565b61061a565b005b61026d610654565b005b61028960048036038101906102849190610b00565b610682565b005b6102a560048036038101906102a09190610b7d565b6106bc565b005b6102c160048036038101906102bc9190610a19565b61070b565b005b6102dd60048036038101906102d89190610a55565b61075a565b005b6102f960048036038101906102f49190610a55565b610794565b005b61031560048036038101906103109190610b00565b6107d9565b005b61031f610867565b005b61033b600480360381019061033691906109c7565b610869565b005b807fb421ad092cfce88844bfbfaa9654e824ba0ee5b6b0a220f822406b62c05364c060405160405180910390a250565b7f97535d4b4270d3f1a499c85ae918ba6798cbdcc83a26529331a25dcd2194cfce8260405161039c9190610fd2565b60405180910390a17f97535d4b4270d3f1a499c85ae918ba6798cbdcc83a26529331a25dcd2194cfce816040516103d39190610fd2565b60405180910390a15050565b7f73e687a2685d698f7acf934b4929a29ae783a4bcb640d71c5d6994d74e2380ca6040518060400160405280848152602001838152506040516104229190610eeb565b60405180910390a15050565b7f9b7ddcbde8dac280e036f87acafec72f9eee31a640c08087e8439139c7e5b52a8160405161045d9190610f5e565b60405180910390a150565b7f9b7ddcbde8dac280e036f87acafec72f9eee31a640c08087e8439139c7e5b52a816040516104979190610f5e565b60405180910390a17f97535d4b4270d3f1a499c85ae918ba6798cbdcc83a26529331a25dcd2194cfce826040516104ce9190610fd2565b60405180910390a15050565b7f425517d2678bbca3c0d9d8d9fdbec34c81194e7935ed48a6a19f97db93bcef6a816040516105099190610f06565b60405180910390a150565b7f8b268bb46a33a55bece084a8b6858719c9f2985c860fa06c155a341df0b73c0e8282604051610545929190610fed565b60405180910390a15050565b8060405161055f9190610e9e565b60405180910390207fd9ca28363e2d8739e0e9c4fea1d2df98d1bd7d9d915d00e5fccbf78c0fddcdb060405160405180910390a250565b7f8b268bb46a33a55bece084a8b6858719c9f2985c860fa06c155a341df0b73c0e84846040516105c7929190610fed565b60405180910390a17f1f1a2c748505fcd8f16a719fa88d517b1b41111c4f5e07bb28311cdc4d1515388282604051610600929190610f80565b60405180910390a150505050565b61061781610682565b50565b7f39feab747bb4f579008aea963d7ebac85ad410bb83ee663a42af01464654e93f816040516106499190610f43565b60405180910390a150565b7f917b7bf7ab24d61500cb699921a3a1cc22b8833da6484fea20f262b2610604af60405160405180910390a1565b7f97535d4b4270d3f1a499c85ae918ba6798cbdcc83a26529331a25dcd2194cfce816040516106b19190610fd2565b60405180910390a150565b7fd59ab87bf64b9d737998f3dc70c649d16b135f085029c1666ca0634beb75a7736040518060400160405280848152602001838152506040516106ff9190610fb7565b60405180910390a15050565b7f15100859f3ffe92910dc3f11ed3db4e9cf32ff657c05066e44be4e69b2b488bc60405180604001604052808481526020018381525060405161074e9190610ed0565b60405180910390a15050565b7f433470edcdd53b50238be4d8e048e2baa269af5be2a4e29515c138883c745aa8816040516107899190610f21565b60405180910390a150565b806040516107a29190610e87565b60405180910390207f160e4655df40987951accf7c731d5c504f77d20c139bd73032821b91a426dd9860405160405180910390a250565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166391940244826040518263ffffffff1660e01b81526004016108329190610fd2565b600060405180830381600087803b15801561084c57600080fd5b505af1158015610860573d6000803e3d6000fd5b5050505050565b565b7f336bcd960d2e5a52cef6094ba33727f309dc2c675eebefc6d9b6b6d79abac877816040516108989190610eb5565b60405180910390a150565b60006108b66108b18461103b565b611016565b9050828152602081018484840111156108ce57600080fd5b6108d9848285611195565b509392505050565b60006108f46108ef8461106c565b611016565b90508281526020810184848401111561090c57600080fd5b610917848285611195565b509392505050565b60008135905061092e81611248565b92915050565b6000813590506109438161125f565b92915050565b600082601f83011261095a57600080fd5b813561096a8482602086016108a3565b91505092915050565b60008135905061098281611276565b92915050565b600082601f83011261099957600080fd5b81356109a98482602086016108e1565b91505092915050565b6000813590506109c18161128d565b92915050565b6000602082840312156109d957600080fd5b60006109e78482850161091f565b91505092915050565b600060208284031215610a0257600080fd5b6000610a1084828501610934565b91505092915050565b60008060408385031215610a2c57600080fd5b6000610a3a85828601610934565b9250506020610a4b85828601610934565b9150509250929050565b600060208284031215610a6757600080fd5b600082013567ffffffffffffffff811115610a8157600080fd5b610a8d84828501610949565b91505092915050565b600060208284031215610aa857600080fd5b6000610ab684828501610973565b91505092915050565b600060208284031215610ad157600080fd5b600082013567ffffffffffffffff811115610aeb57600080fd5b610af784828501610988565b91505092915050565b600060208284031215610b1257600080fd5b6000610b20848285016109b2565b91505092915050565b60008060408385031215610b3c57600080fd5b6000610b4a858286016109b2565b925050602083013567ffffffffffffffff811115610b6757600080fd5b610b7385828601610988565b9150509250929050565b60008060408385031215610b9057600080fd5b6000610b9e858286016109b2565b9250506020610baf858286016109b2565b9150509250929050565b60008060008060808587031215610bcf57600080fd5b6000610bdd878288016109b2565b9450506020610bee878288016109b2565b935050604085013567ffffffffffffffff811115610c0b57600080fd5b610c1787828801610988565b925050606085013567ffffffffffffffff811115610c3457600080fd5b610c4087828801610988565b91505092959194509250565b6000610c588383610d39565b60208301905092915050565b6000610c708383610e69565b60208301905092915050565b610c8581611145565b82525050565b610c94816110b1565b610c9e81846110f7565b9250610ca98261109d565b8060005b83811015610cda578151610cc18782610c4c565b9650610ccc836110dd565b925050600181019050610cad565b505050505050565b610ceb816110bc565b610cf58184611102565b9250610d00826110a7565b8060005b83811015610d31578151610d188782610c64565b9650610d23836110ea565b925050600181019050610d04565b505050505050565b610d4281611157565b82525050565b610d5181611157565b82525050565b6000610d62826110c7565b610d6c818561110d565b9350610d7c8185602086016111a4565b610d8581611237565b840191505092915050565b6000610d9b826110c7565b610da5818561111e565b9350610db58185602086016111a4565b80840191505092915050565b610dca81611161565b82525050565b6000610ddb826110d2565b610de58185611129565b9350610df58185602086016111a4565b610dfe81611237565b840191505092915050565b6000610e14826110d2565b610e1e818561113a565b9350610e2e8185602086016111a4565b80840191505092915050565b604082016000820151610e506000850182610e69565b506020820151610e636020850182610e69565b50505050565b610e728161118b565b82525050565b610e818161118b565b82525050565b6000610e938284610d90565b915081905092915050565b6000610eaa8284610e09565b915081905092915050565b6000602082019050610eca6000830184610c7c565b92915050565b6000604082019050610ee56000830184610c8b565b92915050565b6000604082019050610f006000830184610ce2565b92915050565b6000602082019050610f1b6000830184610d48565b92915050565b60006020820190508181036000830152610f3b8184610d57565b905092915050565b6000602082019050610f586000830184610dc1565b92915050565b60006020820190508181036000830152610f788184610dd0565b905092915050565b60006040820190508181036000830152610f9a8185610dd0565b90508181036020830152610fae8184610dd0565b90509392505050565b6000604082019050610fcc6000830184610e3a565b92915050565b6000602082019050610fe76000830184610e78565b92915050565b60006040820190506110026000830185610e78565b61100f6020830184610e78565b9392505050565b6000611020611031565b905061102c82826111d7565b919050565b6000604051905090565b600067ffffffffffffffff82111561105657611055611208565b5b61105f82611237565b9050602081019050919050565b600067ffffffffffffffff82111561108757611086611208565b5b61109082611237565b9050602081019050919050565b6000819050919050565b6000819050919050565b600060029050919050565b600060029050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b600081905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b60006111508261116b565b9050919050565b6000819050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b838110156111c25780820151818401526020810190506111a7565b838111156111d1576000848401525b50505050565b6111e082611237565b810181811067ffffffffffffffff821117156111ff576111fe611208565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b61125181611145565b811461125c57600080fd5b50565b61126881611157565b811461127357600080fd5b50565b61127f81611161565b811461128a57600080fd5b50565b6112968161118b565b81146112a157600080fd5b5056fea264697066735822122073a91a740c0de3883c5213c5981d98d2396a8b60b3cf2fb364d7e4cc826a841e64736f6c63430008040033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x140D CODESIZE SUB DUP1 PUSH3 0x140D DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE DUP2 ADD SWAP1 PUSH3 0x37 SWAP2 SWAP1 PUSH3 0x95 JUMP JUMPDEST DUP1 PUSH1 0x0 DUP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP PUSH3 0x123 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH3 0x8F DUP2 PUSH3 0x109 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0xA8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH3 0xB8 DUP5 DUP3 DUP6 ADD PUSH3 0x7E JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0xCE DUP3 PUSH3 0xE9 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0xE2 DUP3 PUSH3 0xC1 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x114 DUP2 PUSH3 0xD5 JUMP JUMPDEST DUP2 EQ PUSH3 0x120 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x12DA DUP1 PUSH3 0x133 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x12C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8A618191 GT PUSH2 0xAD JUMPI DUP1 PUSH4 0xC76F0635 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xC76F0635 EQ PUSH2 0x2C3 JUMPI DUP1 PUSH4 0xCC07E605 EQ PUSH2 0x2DF JUMPI DUP1 PUSH4 0xD3931E57 EQ PUSH2 0x2FB JUMPI DUP1 PUSH4 0xDB6CDF68 EQ PUSH2 0x317 JUMPI DUP1 PUSH4 0xEC5C3EDE EQ PUSH2 0x321 JUMPI PUSH2 0x12C JUMP JUMPDEST DUP1 PUSH4 0x8A618191 EQ PUSH2 0x249 JUMPI DUP1 PUSH4 0x90B37EA2 EQ PUSH2 0x265 JUMPI DUP1 PUSH4 0x91940244 EQ PUSH2 0x26F JUMPI DUP1 PUSH4 0x9F31A223 EQ PUSH2 0x28B JUMPI DUP1 PUSH4 0xC0CD80E6 EQ PUSH2 0x2A7 JUMPI PUSH2 0x12C JUMP JUMPDEST DUP1 PUSH4 0x33311EF3 GT PUSH2 0xF4 JUMPI DUP1 PUSH4 0x33311EF3 EQ PUSH2 0x1BD JUMPI DUP1 PUSH4 0x38393646 EQ PUSH2 0x1D9 JUMPI DUP1 PUSH4 0x443690A0 EQ PUSH2 0x1F5 JUMPI DUP1 PUSH4 0x532B9CCE EQ PUSH2 0x211 JUMPI DUP1 PUSH4 0x813A8CF5 EQ PUSH2 0x22D JUMPI PUSH2 0x12C JUMP JUMPDEST DUP1 PUSH4 0x48858E5 EQ PUSH2 0x131 JUMPI DUP1 PUSH4 0xC0C941A EQ PUSH2 0x14D JUMPI DUP1 PUSH4 0x17ABA537 EQ PUSH2 0x169 JUMPI DUP1 PUSH4 0x2536F127 EQ PUSH2 0x185 JUMPI DUP1 PUSH4 0x2785F8D6 EQ PUSH2 0x1A1 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x14B PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x146 SWAP2 SWAP1 PUSH2 0x9F0 JUMP JUMPDEST PUSH2 0x33D JUMP JUMPDEST STOP JUMPDEST PUSH2 0x167 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x162 SWAP2 SWAP1 PUSH2 0xB7D JUMP JUMPDEST PUSH2 0x36D JUMP JUMPDEST STOP JUMPDEST PUSH2 0x183 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x17E SWAP2 SWAP1 PUSH2 0xB7D JUMP JUMPDEST PUSH2 0x3DF JUMP JUMPDEST STOP JUMPDEST PUSH2 0x19F PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x19A SWAP2 SWAP1 PUSH2 0xABF JUMP JUMPDEST PUSH2 0x42E JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1BB PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1B6 SWAP2 SWAP1 PUSH2 0xB29 JUMP JUMPDEST PUSH2 0x468 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1D7 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1D2 SWAP2 SWAP1 PUSH2 0x9F0 JUMP JUMPDEST PUSH2 0x4DA JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1F3 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1EE SWAP2 SWAP1 PUSH2 0xB7D JUMP JUMPDEST PUSH2 0x514 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x20F PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x20A SWAP2 SWAP1 PUSH2 0xABF JUMP JUMPDEST PUSH2 0x551 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x22B PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x226 SWAP2 SWAP1 PUSH2 0xBB9 JUMP JUMPDEST PUSH2 0x596 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x247 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x242 SWAP2 SWAP1 PUSH2 0xB00 JUMP JUMPDEST PUSH2 0x60E JUMP JUMPDEST STOP JUMPDEST PUSH2 0x263 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x25E SWAP2 SWAP1 PUSH2 0xA96 JUMP JUMPDEST PUSH2 0x61A JUMP JUMPDEST STOP JUMPDEST PUSH2 0x26D PUSH2 0x654 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x289 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x284 SWAP2 SWAP1 PUSH2 0xB00 JUMP JUMPDEST PUSH2 0x682 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2A5 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2A0 SWAP2 SWAP1 PUSH2 0xB7D JUMP JUMPDEST PUSH2 0x6BC JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2C1 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2BC SWAP2 SWAP1 PUSH2 0xA19 JUMP JUMPDEST PUSH2 0x70B JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2DD PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2D8 SWAP2 SWAP1 PUSH2 0xA55 JUMP JUMPDEST PUSH2 0x75A JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2F9 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2F4 SWAP2 SWAP1 PUSH2 0xA55 JUMP JUMPDEST PUSH2 0x794 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x315 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x310 SWAP2 SWAP1 PUSH2 0xB00 JUMP JUMPDEST PUSH2 0x7D9 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x31F PUSH2 0x867 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x33B PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x336 SWAP2 SWAP1 PUSH2 0x9C7 JUMP JUMPDEST PUSH2 0x869 JUMP JUMPDEST STOP JUMPDEST DUP1 PUSH32 0xB421AD092CFCE88844BFBFAA9654E824BA0EE5B6B0A220F822406B62C05364C0 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP JUMP JUMPDEST PUSH32 0x97535D4B4270D3F1A499C85AE918BA6798CBDCC83A26529331A25DCD2194CFCE DUP3 PUSH1 0x40 MLOAD PUSH2 0x39C SWAP2 SWAP1 PUSH2 0xFD2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH32 0x97535D4B4270D3F1A499C85AE918BA6798CBDCC83A26529331A25DCD2194CFCE DUP2 PUSH1 0x40 MLOAD PUSH2 0x3D3 SWAP2 SWAP1 PUSH2 0xFD2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH32 0x73E687A2685D698F7ACF934B4929A29AE783A4BCB640D71C5D6994D74E2380CA PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE POP PUSH1 0x40 MLOAD PUSH2 0x422 SWAP2 SWAP1 PUSH2 0xEEB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH32 0x9B7DDCBDE8DAC280E036F87ACAFEC72F9EEE31A640C08087E8439139C7E5B52A DUP2 PUSH1 0x40 MLOAD PUSH2 0x45D SWAP2 SWAP1 PUSH2 0xF5E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH32 0x9B7DDCBDE8DAC280E036F87ACAFEC72F9EEE31A640C08087E8439139C7E5B52A DUP2 PUSH1 0x40 MLOAD PUSH2 0x497 SWAP2 SWAP1 PUSH2 0xF5E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH32 0x97535D4B4270D3F1A499C85AE918BA6798CBDCC83A26529331A25DCD2194CFCE DUP3 PUSH1 0x40 MLOAD PUSH2 0x4CE SWAP2 SWAP1 PUSH2 0xFD2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH32 0x425517D2678BBCA3C0D9D8D9FDBEC34C81194E7935ED48A6A19F97DB93BCEF6A DUP2 PUSH1 0x40 MLOAD PUSH2 0x509 SWAP2 SWAP1 PUSH2 0xF06 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH32 0x8B268BB46A33A55BECE084A8B6858719C9F2985C860FA06C155A341DF0B73C0E DUP3 DUP3 PUSH1 0x40 MLOAD PUSH2 0x545 SWAP3 SWAP2 SWAP1 PUSH2 0xFED JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH2 0x55F SWAP2 SWAP1 PUSH2 0xE9E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 PUSH32 0xD9CA28363E2D8739E0E9C4FEA1D2DF98D1BD7D9D915D00E5FCCBF78C0FDDCDB0 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP JUMP JUMPDEST PUSH32 0x8B268BB46A33A55BECE084A8B6858719C9F2985C860FA06C155A341DF0B73C0E DUP5 DUP5 PUSH1 0x40 MLOAD PUSH2 0x5C7 SWAP3 SWAP2 SWAP1 PUSH2 0xFED JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH32 0x1F1A2C748505FCD8F16A719FA88D517B1B41111C4F5E07BB28311CDC4D151538 DUP3 DUP3 PUSH1 0x40 MLOAD PUSH2 0x600 SWAP3 SWAP2 SWAP1 PUSH2 0xF80 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP JUMP JUMPDEST PUSH2 0x617 DUP2 PUSH2 0x682 JUMP JUMPDEST POP JUMP JUMPDEST PUSH32 0x39FEAB747BB4F579008AEA963D7EBAC85AD410BB83EE663A42AF01464654E93F DUP2 PUSH1 0x40 MLOAD PUSH2 0x649 SWAP2 SWAP1 PUSH2 0xF43 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH32 0x917B7BF7AB24D61500CB699921A3A1CC22B8833DA6484FEA20F262B2610604AF PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMP JUMPDEST PUSH32 0x97535D4B4270D3F1A499C85AE918BA6798CBDCC83A26529331A25DCD2194CFCE DUP2 PUSH1 0x40 MLOAD PUSH2 0x6B1 SWAP2 SWAP1 PUSH2 0xFD2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH32 0xD59AB87BF64B9D737998F3DC70C649D16B135F085029C1666CA0634BEB75A773 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE POP PUSH1 0x40 MLOAD PUSH2 0x6FF SWAP2 SWAP1 PUSH2 0xFB7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH32 0x15100859F3FFE92910DC3F11ED3DB4E9CF32FF657C05066E44BE4E69B2B488BC PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE POP PUSH1 0x40 MLOAD PUSH2 0x74E SWAP2 SWAP1 PUSH2 0xED0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH32 0x433470EDCDD53B50238BE4D8E048E2BAA269AF5BE2A4E29515C138883C745AA8 DUP2 PUSH1 0x40 MLOAD PUSH2 0x789 SWAP2 SWAP1 PUSH2 0xF21 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH2 0x7A2 SWAP2 SWAP1 PUSH2 0xE87 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 PUSH32 0x160E4655DF40987951ACCF7C731D5C504F77D20C139BD73032821B91A426DD98 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x91940244 DUP3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x832 SWAP2 SWAP1 PUSH2 0xFD2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x84C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x860 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST JUMP JUMPDEST PUSH32 0x336BCD960D2E5A52CEF6094BA33727F309DC2C675EEBEFC6D9B6B6D79ABAC877 DUP2 PUSH1 0x40 MLOAD PUSH2 0x898 SWAP2 SWAP1 PUSH2 0xEB5 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8B6 PUSH2 0x8B1 DUP5 PUSH2 0x103B JUMP JUMPDEST PUSH2 0x1016 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 DUP5 DUP5 ADD GT ISZERO PUSH2 0x8CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8D9 DUP5 DUP3 DUP6 PUSH2 0x1195 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8F4 PUSH2 0x8EF DUP5 PUSH2 0x106C JUMP JUMPDEST PUSH2 0x1016 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 DUP5 DUP5 ADD GT ISZERO PUSH2 0x90C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x917 DUP5 DUP3 DUP6 PUSH2 0x1195 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x92E DUP2 PUSH2 0x1248 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x943 DUP2 PUSH2 0x125F JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x95A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x96A DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x8A3 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x982 DUP2 PUSH2 0x1276 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x999 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x9A9 DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x8E1 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x9C1 DUP2 PUSH2 0x128D JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x9D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x9E7 DUP5 DUP3 DUP6 ADD PUSH2 0x91F JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xA02 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xA10 DUP5 DUP3 DUP6 ADD PUSH2 0x934 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xA2C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xA3A DUP6 DUP3 DUP7 ADD PUSH2 0x934 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0xA4B DUP6 DUP3 DUP7 ADD PUSH2 0x934 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xA67 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xA81 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA8D DUP5 DUP3 DUP6 ADD PUSH2 0x949 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xAA8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xAB6 DUP5 DUP3 DUP6 ADD PUSH2 0x973 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xAD1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xAEB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xAF7 DUP5 DUP3 DUP6 ADD PUSH2 0x988 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xB12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xB20 DUP5 DUP3 DUP6 ADD PUSH2 0x9B2 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xB3C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xB4A DUP6 DUP3 DUP7 ADD PUSH2 0x9B2 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xB67 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB73 DUP6 DUP3 DUP7 ADD PUSH2 0x988 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xB90 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xB9E DUP6 DUP3 DUP7 ADD PUSH2 0x9B2 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0xBAF DUP6 DUP3 DUP7 ADD PUSH2 0x9B2 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0xBCF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xBDD DUP8 DUP3 DUP9 ADD PUSH2 0x9B2 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 PUSH2 0xBEE DUP8 DUP3 DUP9 ADD PUSH2 0x9B2 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xC0B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xC17 DUP8 DUP3 DUP9 ADD PUSH2 0x988 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xC34 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xC40 DUP8 DUP3 DUP9 ADD PUSH2 0x988 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC58 DUP4 DUP4 PUSH2 0xD39 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC70 DUP4 DUP4 PUSH2 0xE69 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xC85 DUP2 PUSH2 0x1145 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0xC94 DUP2 PUSH2 0x10B1 JUMP JUMPDEST PUSH2 0xC9E DUP2 DUP5 PUSH2 0x10F7 JUMP JUMPDEST SWAP3 POP PUSH2 0xCA9 DUP3 PUSH2 0x109D JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xCDA JUMPI DUP2 MLOAD PUSH2 0xCC1 DUP8 DUP3 PUSH2 0xC4C JUMP JUMPDEST SWAP7 POP PUSH2 0xCCC DUP4 PUSH2 0x10DD JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0xCAD JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0xCEB DUP2 PUSH2 0x10BC JUMP JUMPDEST PUSH2 0xCF5 DUP2 DUP5 PUSH2 0x1102 JUMP JUMPDEST SWAP3 POP PUSH2 0xD00 DUP3 PUSH2 0x10A7 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xD31 JUMPI DUP2 MLOAD PUSH2 0xD18 DUP8 DUP3 PUSH2 0xC64 JUMP JUMPDEST SWAP7 POP PUSH2 0xD23 DUP4 PUSH2 0x10EA JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0xD04 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0xD42 DUP2 PUSH2 0x1157 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0xD51 DUP2 PUSH2 0x1157 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD62 DUP3 PUSH2 0x10C7 JUMP JUMPDEST PUSH2 0xD6C DUP2 DUP6 PUSH2 0x110D JUMP JUMPDEST SWAP4 POP PUSH2 0xD7C DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x11A4 JUMP JUMPDEST PUSH2 0xD85 DUP2 PUSH2 0x1237 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD9B DUP3 PUSH2 0x10C7 JUMP JUMPDEST PUSH2 0xDA5 DUP2 DUP6 PUSH2 0x111E JUMP JUMPDEST SWAP4 POP PUSH2 0xDB5 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x11A4 JUMP JUMPDEST DUP1 DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xDCA DUP2 PUSH2 0x1161 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xDDB DUP3 PUSH2 0x10D2 JUMP JUMPDEST PUSH2 0xDE5 DUP2 DUP6 PUSH2 0x1129 JUMP JUMPDEST SWAP4 POP PUSH2 0xDF5 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x11A4 JUMP JUMPDEST PUSH2 0xDFE DUP2 PUSH2 0x1237 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE14 DUP3 PUSH2 0x10D2 JUMP JUMPDEST PUSH2 0xE1E DUP2 DUP6 PUSH2 0x113A JUMP JUMPDEST SWAP4 POP PUSH2 0xE2E DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x11A4 JUMP JUMPDEST DUP1 DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP3 ADD PUSH1 0x0 DUP3 ADD MLOAD PUSH2 0xE50 PUSH1 0x0 DUP6 ADD DUP3 PUSH2 0xE69 JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0xE63 PUSH1 0x20 DUP6 ADD DUP3 PUSH2 0xE69 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0xE72 DUP2 PUSH2 0x118B JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0xE81 DUP2 PUSH2 0x118B JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE93 DUP3 DUP5 PUSH2 0xD90 JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xEAA DUP3 DUP5 PUSH2 0xE09 JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xECA PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xC7C JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0xEE5 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xC8B JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0xF00 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xCE2 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xF1B PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xD48 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 0xF3B DUP2 DUP5 PUSH2 0xD57 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xF58 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xDC1 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 0xF78 DUP2 DUP5 PUSH2 0xDD0 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0xF9A DUP2 DUP6 PUSH2 0xDD0 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0xFAE DUP2 DUP5 PUSH2 0xDD0 JUMP JUMPDEST SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0xFCC PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xE3A JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xFE7 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xE78 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x1002 PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0xE78 JUMP JUMPDEST PUSH2 0x100F PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0xE78 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1020 PUSH2 0x1031 JUMP JUMPDEST SWAP1 POP PUSH2 0x102C DUP3 DUP3 PUSH2 0x11D7 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 0x1056 JUMPI PUSH2 0x1055 PUSH2 0x1208 JUMP JUMPDEST JUMPDEST PUSH2 0x105F DUP3 PUSH2 0x1237 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x1087 JUMPI PUSH2 0x1086 PUSH2 0x1208 JUMP JUMPDEST JUMPDEST PUSH2 0x1090 DUP3 PUSH2 0x1237 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1150 DUP3 PUSH2 0x116B JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 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 0x11C2 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x11A7 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x11D1 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x11E0 DUP3 PUSH2 0x1237 JUMP JUMPDEST DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x11FF JUMPI PUSH2 0x11FE PUSH2 0x1208 JUMP JUMPDEST JUMPDEST DUP1 PUSH1 0x40 MSTORE POP POP POP JUMP 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 PUSH2 0x1251 DUP2 PUSH2 0x1145 JUMP JUMPDEST DUP2 EQ PUSH2 0x125C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x1268 DUP2 PUSH2 0x1157 JUMP JUMPDEST DUP2 EQ PUSH2 0x1273 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x127F DUP2 PUSH2 0x1161 JUMP JUMPDEST DUP2 EQ PUSH2 0x128A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x1296 DUP2 PUSH2 0x118B JUMP JUMPDEST DUP2 EQ PUSH2 0x12A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH20 0xA91A740C0DE3883C5213C5981D98D2396A8B60B3 0xCF 0x2F 0xB3 PUSH5 0xD7E4CC826A DUP5 0x1E PUSH5 0x736F6C6343 STOP ADDMOD DIV STOP CALLER ","sourceMap":"57:2471:1:-:0;;;713:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;769:1;751:15;;:19;;;;;;;;;;;;;;;;;;713:62;57:2471;;7:189:4;87:5;118:6;112:13;103:22;;134:56;184:5;134:56;:::i;:::-;93:103;;;;:::o;202:330::-;295:6;344:2;332:9;323:7;319:23;315:32;312:2;;;360:1;357;350:12;312:2;403:1;428:87;507:7;498:6;487:9;483:22;428:87;:::i;:::-;418:97;;374:151;302:230;;;;:::o;538:96::-;575:7;604:24;622:5;604:24;:::i;:::-;593:35;;583:51;;;:::o;640:119::-;700:7;729:24;747:5;729:24;:::i;:::-;718:35;;708:51;;;:::o;765:126::-;802:7;842:42;835:5;831:54;820:65;;810:81;;;:::o;897:168::-;993:47;1034:5;993:47;:::i;:::-;986:5;983:58;973:2;;1055:1;1052;1045:12;973:2;963:102;:::o;57:2471:1:-;;;;;;;"},"deployedBytecode":{"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:19211:4","statements":[{"body":{"nodeType":"YulBlock","src":"90:260:4","statements":[{"nodeType":"YulAssignment","src":"100:74:4","value":{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"166:6:4"}],"functionName":{"name":"array_allocation_size_t_bytes_memory_ptr","nodeType":"YulIdentifier","src":"125:40:4"},"nodeType":"YulFunctionCall","src":"125:48:4"}],"functionName":{"name":"allocate_memory","nodeType":"YulIdentifier","src":"109:15:4"},"nodeType":"YulFunctionCall","src":"109:65:4"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"100:5:4"}]},{"expression":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"190:5:4"},{"name":"length","nodeType":"YulIdentifier","src":"197:6:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"183:6:4"},"nodeType":"YulFunctionCall","src":"183:21:4"},"nodeType":"YulExpressionStatement","src":"183:21:4"},{"nodeType":"YulVariableDeclaration","src":"213:27:4","value":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"228:5:4"},{"kind":"number","nodeType":"YulLiteral","src":"235:4:4","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"224:3:4"},"nodeType":"YulFunctionCall","src":"224:16:4"},"variables":[{"name":"dst","nodeType":"YulTypedName","src":"217:3:4","type":""}]},{"body":{"nodeType":"YulBlock","src":"278:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"287:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"290:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"280:6:4"},"nodeType":"YulFunctionCall","src":"280:12:4"},"nodeType":"YulExpressionStatement","src":"280:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"259:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"264:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"255:3:4"},"nodeType":"YulFunctionCall","src":"255:16:4"},{"name":"end","nodeType":"YulIdentifier","src":"273:3:4"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"252:2:4"},"nodeType":"YulFunctionCall","src":"252:25:4"},"nodeType":"YulIf","src":"249:2:4"},{"expression":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"327:3:4"},{"name":"dst","nodeType":"YulIdentifier","src":"332:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"337:6:4"}],"functionName":{"name":"copy_calldata_to_memory","nodeType":"YulIdentifier","src":"303:23:4"},"nodeType":"YulFunctionCall","src":"303:41:4"},"nodeType":"YulExpressionStatement","src":"303:41:4"}]},"name":"abi_decode_available_length_t_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"63:3:4","type":""},{"name":"length","nodeType":"YulTypedName","src":"68:6:4","type":""},{"name":"end","nodeType":"YulTypedName","src":"76:3:4","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"84:5:4","type":""}],"src":"7:343:4"},{"body":{"nodeType":"YulBlock","src":"440:261:4","statements":[{"nodeType":"YulAssignment","src":"450:75:4","value":{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"517:6:4"}],"functionName":{"name":"array_allocation_size_t_string_memory_ptr","nodeType":"YulIdentifier","src":"475:41:4"},"nodeType":"YulFunctionCall","src":"475:49:4"}],"functionName":{"name":"allocate_memory","nodeType":"YulIdentifier","src":"459:15:4"},"nodeType":"YulFunctionCall","src":"459:66:4"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"450:5:4"}]},{"expression":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"541:5:4"},{"name":"length","nodeType":"YulIdentifier","src":"548:6:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"534:6:4"},"nodeType":"YulFunctionCall","src":"534:21:4"},"nodeType":"YulExpressionStatement","src":"534:21:4"},{"nodeType":"YulVariableDeclaration","src":"564:27:4","value":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"579:5:4"},{"kind":"number","nodeType":"YulLiteral","src":"586:4:4","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"575:3:4"},"nodeType":"YulFunctionCall","src":"575:16:4"},"variables":[{"name":"dst","nodeType":"YulTypedName","src":"568:3:4","type":""}]},{"body":{"nodeType":"YulBlock","src":"629:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"638:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"641:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"631:6:4"},"nodeType":"YulFunctionCall","src":"631:12:4"},"nodeType":"YulExpressionStatement","src":"631:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"610:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"615:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"606:3:4"},"nodeType":"YulFunctionCall","src":"606:16:4"},{"name":"end","nodeType":"YulIdentifier","src":"624:3:4"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"603:2:4"},"nodeType":"YulFunctionCall","src":"603:25:4"},"nodeType":"YulIf","src":"600:2:4"},{"expression":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"678:3:4"},{"name":"dst","nodeType":"YulIdentifier","src":"683:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"688:6:4"}],"functionName":{"name":"copy_calldata_to_memory","nodeType":"YulIdentifier","src":"654:23:4"},"nodeType":"YulFunctionCall","src":"654:41:4"},"nodeType":"YulExpressionStatement","src":"654:41:4"}]},"name":"abi_decode_available_length_t_string_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"413:3:4","type":""},{"name":"length","nodeType":"YulTypedName","src":"418:6:4","type":""},{"name":"end","nodeType":"YulTypedName","src":"426:3:4","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"434:5:4","type":""}],"src":"356:345:4"},{"body":{"nodeType":"YulBlock","src":"759:87:4","statements":[{"nodeType":"YulAssignment","src":"769:29:4","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"791:6:4"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"778:12:4"},"nodeType":"YulFunctionCall","src":"778:20:4"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"769:5:4"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"834:5:4"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"807:26:4"},"nodeType":"YulFunctionCall","src":"807:33:4"},"nodeType":"YulExpressionStatement","src":"807:33:4"}]},"name":"abi_decode_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"737:6:4","type":""},{"name":"end","nodeType":"YulTypedName","src":"745:3:4","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"753:5:4","type":""}],"src":"707:139:4"},{"body":{"nodeType":"YulBlock","src":"904:87:4","statements":[{"nodeType":"YulAssignment","src":"914:29:4","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"936:6:4"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"923:12:4"},"nodeType":"YulFunctionCall","src":"923:20:4"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"914:5:4"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"979:5:4"}],"functionName":{"name":"validator_revert_t_bytes32","nodeType":"YulIdentifier","src":"952:26:4"},"nodeType":"YulFunctionCall","src":"952:33:4"},"nodeType":"YulExpressionStatement","src":"952:33:4"}]},"name":"abi_decode_t_bytes32","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"882:6:4","type":""},{"name":"end","nodeType":"YulTypedName","src":"890:3:4","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"898:5:4","type":""}],"src":"852:139:4"},{"body":{"nodeType":"YulBlock","src":"1071:210:4","statements":[{"body":{"nodeType":"YulBlock","src":"1120:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1129:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1132:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1122:6:4"},"nodeType":"YulFunctionCall","src":"1122:12:4"},"nodeType":"YulExpressionStatement","src":"1122:12:4"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1099:6:4"},{"kind":"number","nodeType":"YulLiteral","src":"1107:4:4","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1095:3:4"},"nodeType":"YulFunctionCall","src":"1095:17:4"},{"name":"end","nodeType":"YulIdentifier","src":"1114:3:4"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1091:3:4"},"nodeType":"YulFunctionCall","src":"1091:27:4"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1084:6:4"},"nodeType":"YulFunctionCall","src":"1084:35:4"},"nodeType":"YulIf","src":"1081:2:4"},{"nodeType":"YulVariableDeclaration","src":"1145:34:4","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1172:6:4"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1159:12:4"},"nodeType":"YulFunctionCall","src":"1159:20:4"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"1149:6:4","type":""}]},{"nodeType":"YulAssignment","src":"1188:87:4","value":{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1248:6:4"},{"kind":"number","nodeType":"YulLiteral","src":"1256:4:4","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1244:3:4"},"nodeType":"YulFunctionCall","src":"1244:17:4"},{"name":"length","nodeType":"YulIdentifier","src":"1263:6:4"},{"name":"end","nodeType":"YulIdentifier","src":"1271:3:4"}],"functionName":{"name":"abi_decode_available_length_t_bytes_memory_ptr","nodeType":"YulIdentifier","src":"1197:46:4"},"nodeType":"YulFunctionCall","src":"1197:78:4"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"1188:5:4"}]}]},"name":"abi_decode_t_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"1049:6:4","type":""},{"name":"end","nodeType":"YulTypedName","src":"1057:3:4","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"1065:5:4","type":""}],"src":"1010:271:4"},{"body":{"nodeType":"YulBlock","src":"1338:86:4","statements":[{"nodeType":"YulAssignment","src":"1348:29:4","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1370:6:4"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1357:12:4"},"nodeType":"YulFunctionCall","src":"1357:20:4"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"1348:5:4"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1412:5:4"}],"functionName":{"name":"validator_revert_t_int256","nodeType":"YulIdentifier","src":"1386:25:4"},"nodeType":"YulFunctionCall","src":"1386:32:4"},"nodeType":"YulExpressionStatement","src":"1386:32:4"}]},"name":"abi_decode_t_int256","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"1316:6:4","type":""},{"name":"end","nodeType":"YulTypedName","src":"1324:3:4","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"1332:5:4","type":""}],"src":"1287:137:4"},{"body":{"nodeType":"YulBlock","src":"1506:211:4","statements":[{"body":{"nodeType":"YulBlock","src":"1555:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1564:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1567:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1557:6:4"},"nodeType":"YulFunctionCall","src":"1557:12:4"},"nodeType":"YulExpressionStatement","src":"1557:12:4"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1534:6:4"},{"kind":"number","nodeType":"YulLiteral","src":"1542:4:4","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1530:3:4"},"nodeType":"YulFunctionCall","src":"1530:17:4"},{"name":"end","nodeType":"YulIdentifier","src":"1549:3:4"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1526:3:4"},"nodeType":"YulFunctionCall","src":"1526:27:4"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1519:6:4"},"nodeType":"YulFunctionCall","src":"1519:35:4"},"nodeType":"YulIf","src":"1516:2:4"},{"nodeType":"YulVariableDeclaration","src":"1580:34:4","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1607:6:4"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1594:12:4"},"nodeType":"YulFunctionCall","src":"1594:20:4"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"1584:6:4","type":""}]},{"nodeType":"YulAssignment","src":"1623:88:4","value":{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1684:6:4"},{"kind":"number","nodeType":"YulLiteral","src":"1692:4:4","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1680:3:4"},"nodeType":"YulFunctionCall","src":"1680:17:4"},{"name":"length","nodeType":"YulIdentifier","src":"1699:6:4"},{"name":"end","nodeType":"YulIdentifier","src":"1707:3:4"}],"functionName":{"name":"abi_decode_available_length_t_string_memory_ptr","nodeType":"YulIdentifier","src":"1632:47:4"},"nodeType":"YulFunctionCall","src":"1632:79:4"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"1623:5:4"}]}]},"name":"abi_decode_t_string_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"1484:6:4","type":""},{"name":"end","nodeType":"YulTypedName","src":"1492:3:4","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"1500:5:4","type":""}],"src":"1444:273:4"},{"body":{"nodeType":"YulBlock","src":"1775:87:4","statements":[{"nodeType":"YulAssignment","src":"1785:29:4","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1807:6:4"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1794:12:4"},"nodeType":"YulFunctionCall","src":"1794:20:4"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"1785:5:4"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1850:5:4"}],"functionName":{"name":"validator_revert_t_uint256","nodeType":"YulIdentifier","src":"1823:26:4"},"nodeType":"YulFunctionCall","src":"1823:33:4"},"nodeType":"YulExpressionStatement","src":"1823:33:4"}]},"name":"abi_decode_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"1753:6:4","type":""},{"name":"end","nodeType":"YulTypedName","src":"1761:3:4","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"1769:5:4","type":""}],"src":"1723:139:4"},{"body":{"nodeType":"YulBlock","src":"1934:196:4","statements":[{"body":{"nodeType":"YulBlock","src":"1980:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1989:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1992:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1982:6:4"},"nodeType":"YulFunctionCall","src":"1982:12:4"},"nodeType":"YulExpressionStatement","src":"1982:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1955:7:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"1964:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1951:3:4"},"nodeType":"YulFunctionCall","src":"1951:23:4"},{"kind":"number","nodeType":"YulLiteral","src":"1976:2:4","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1947:3:4"},"nodeType":"YulFunctionCall","src":"1947:32:4"},"nodeType":"YulIf","src":"1944:2:4"},{"nodeType":"YulBlock","src":"2006:117:4","statements":[{"nodeType":"YulVariableDeclaration","src":"2021:15:4","value":{"kind":"number","nodeType":"YulLiteral","src":"2035:1:4","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"2025:6:4","type":""}]},{"nodeType":"YulAssignment","src":"2050:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2085:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"2096:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2081:3:4"},"nodeType":"YulFunctionCall","src":"2081:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2105:7:4"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"2060:20:4"},"nodeType":"YulFunctionCall","src":"2060:53:4"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2050:6:4"}]}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1904:9:4","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1915:7:4","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1927:6:4","type":""}],"src":"1868:262:4"},{"body":{"nodeType":"YulBlock","src":"2202:196:4","statements":[{"body":{"nodeType":"YulBlock","src":"2248:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2257:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2260:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2250:6:4"},"nodeType":"YulFunctionCall","src":"2250:12:4"},"nodeType":"YulExpressionStatement","src":"2250:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2223:7:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"2232:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2219:3:4"},"nodeType":"YulFunctionCall","src":"2219:23:4"},{"kind":"number","nodeType":"YulLiteral","src":"2244:2:4","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2215:3:4"},"nodeType":"YulFunctionCall","src":"2215:32:4"},"nodeType":"YulIf","src":"2212:2:4"},{"nodeType":"YulBlock","src":"2274:117:4","statements":[{"nodeType":"YulVariableDeclaration","src":"2289:15:4","value":{"kind":"number","nodeType":"YulLiteral","src":"2303:1:4","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"2293:6:4","type":""}]},{"nodeType":"YulAssignment","src":"2318:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2353:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"2364:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2349:3:4"},"nodeType":"YulFunctionCall","src":"2349:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2373:7:4"}],"functionName":{"name":"abi_decode_t_bytes32","nodeType":"YulIdentifier","src":"2328:20:4"},"nodeType":"YulFunctionCall","src":"2328:53:4"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2318:6:4"}]}]}]},"name":"abi_decode_tuple_t_bytes32","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2172:9:4","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2183:7:4","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2195:6:4","type":""}],"src":"2136:262:4"},{"body":{"nodeType":"YulBlock","src":"2487:324:4","statements":[{"body":{"nodeType":"YulBlock","src":"2533:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2542:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2545:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2535:6:4"},"nodeType":"YulFunctionCall","src":"2535:12:4"},"nodeType":"YulExpressionStatement","src":"2535:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2508:7:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"2517:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2504:3:4"},"nodeType":"YulFunctionCall","src":"2504:23:4"},{"kind":"number","nodeType":"YulLiteral","src":"2529:2:4","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2500:3:4"},"nodeType":"YulFunctionCall","src":"2500:32:4"},"nodeType":"YulIf","src":"2497:2:4"},{"nodeType":"YulBlock","src":"2559:117:4","statements":[{"nodeType":"YulVariableDeclaration","src":"2574:15:4","value":{"kind":"number","nodeType":"YulLiteral","src":"2588:1:4","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"2578:6:4","type":""}]},{"nodeType":"YulAssignment","src":"2603:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2638:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"2649:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2634:3:4"},"nodeType":"YulFunctionCall","src":"2634:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2658:7:4"}],"functionName":{"name":"abi_decode_t_bytes32","nodeType":"YulIdentifier","src":"2613:20:4"},"nodeType":"YulFunctionCall","src":"2613:53:4"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2603:6:4"}]}]},{"nodeType":"YulBlock","src":"2686:118:4","statements":[{"nodeType":"YulVariableDeclaration","src":"2701:16:4","value":{"kind":"number","nodeType":"YulLiteral","src":"2715:2:4","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"2705:6:4","type":""}]},{"nodeType":"YulAssignment","src":"2731:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2766:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"2777:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2762:3:4"},"nodeType":"YulFunctionCall","src":"2762:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2786:7:4"}],"functionName":{"name":"abi_decode_t_bytes32","nodeType":"YulIdentifier","src":"2741:20:4"},"nodeType":"YulFunctionCall","src":"2741:53:4"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"2731:6:4"}]}]}]},"name":"abi_decode_tuple_t_bytes32t_bytes32","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2449:9:4","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2460:7:4","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2472:6:4","type":""},{"name":"value1","nodeType":"YulTypedName","src":"2480:6:4","type":""}],"src":"2404:407:4"},{"body":{"nodeType":"YulBlock","src":"2892:298:4","statements":[{"body":{"nodeType":"YulBlock","src":"2938:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2947:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2950:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2940:6:4"},"nodeType":"YulFunctionCall","src":"2940:12:4"},"nodeType":"YulExpressionStatement","src":"2940:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2913:7:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"2922:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2909:3:4"},"nodeType":"YulFunctionCall","src":"2909:23:4"},{"kind":"number","nodeType":"YulLiteral","src":"2934:2:4","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2905:3:4"},"nodeType":"YulFunctionCall","src":"2905:32:4"},"nodeType":"YulIf","src":"2902:2:4"},{"nodeType":"YulBlock","src":"2964:219:4","statements":[{"nodeType":"YulVariableDeclaration","src":"2979:45:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3010:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"3021:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3006:3:4"},"nodeType":"YulFunctionCall","src":"3006:17:4"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2993:12:4"},"nodeType":"YulFunctionCall","src":"2993:31:4"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"2983:6:4","type":""}]},{"body":{"nodeType":"YulBlock","src":"3071:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3080:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3083:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3073:6:4"},"nodeType":"YulFunctionCall","src":"3073:12:4"},"nodeType":"YulExpressionStatement","src":"3073:12:4"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"3043:6:4"},{"kind":"number","nodeType":"YulLiteral","src":"3051:18:4","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3040:2:4"},"nodeType":"YulFunctionCall","src":"3040:30:4"},"nodeType":"YulIf","src":"3037:2:4"},{"nodeType":"YulAssignment","src":"3101:72:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3145:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"3156:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3141:3:4"},"nodeType":"YulFunctionCall","src":"3141:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"3165:7:4"}],"functionName":{"name":"abi_decode_t_bytes_memory_ptr","nodeType":"YulIdentifier","src":"3111:29:4"},"nodeType":"YulFunctionCall","src":"3111:62:4"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3101:6:4"}]}]}]},"name":"abi_decode_tuple_t_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2862:9:4","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2873:7:4","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2885:6:4","type":""}],"src":"2817:373:4"},{"body":{"nodeType":"YulBlock","src":"3261:195:4","statements":[{"body":{"nodeType":"YulBlock","src":"3307:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3316:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3319:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3309:6:4"},"nodeType":"YulFunctionCall","src":"3309:12:4"},"nodeType":"YulExpressionStatement","src":"3309:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3282:7:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"3291:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3278:3:4"},"nodeType":"YulFunctionCall","src":"3278:23:4"},{"kind":"number","nodeType":"YulLiteral","src":"3303:2:4","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3274:3:4"},"nodeType":"YulFunctionCall","src":"3274:32:4"},"nodeType":"YulIf","src":"3271:2:4"},{"nodeType":"YulBlock","src":"3333:116:4","statements":[{"nodeType":"YulVariableDeclaration","src":"3348:15:4","value":{"kind":"number","nodeType":"YulLiteral","src":"3362:1:4","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"3352:6:4","type":""}]},{"nodeType":"YulAssignment","src":"3377:62:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3411:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"3422:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3407:3:4"},"nodeType":"YulFunctionCall","src":"3407:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"3431:7:4"}],"functionName":{"name":"abi_decode_t_int256","nodeType":"YulIdentifier","src":"3387:19:4"},"nodeType":"YulFunctionCall","src":"3387:52:4"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3377:6:4"}]}]}]},"name":"abi_decode_tuple_t_int256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3231:9:4","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3242:7:4","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3254:6:4","type":""}],"src":"3196:260:4"},{"body":{"nodeType":"YulBlock","src":"3538:299:4","statements":[{"body":{"nodeType":"YulBlock","src":"3584:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3593:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3596:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3586:6:4"},"nodeType":"YulFunctionCall","src":"3586:12:4"},"nodeType":"YulExpressionStatement","src":"3586:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3559:7:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"3568:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3555:3:4"},"nodeType":"YulFunctionCall","src":"3555:23:4"},{"kind":"number","nodeType":"YulLiteral","src":"3580:2:4","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3551:3:4"},"nodeType":"YulFunctionCall","src":"3551:32:4"},"nodeType":"YulIf","src":"3548:2:4"},{"nodeType":"YulBlock","src":"3610:220:4","statements":[{"nodeType":"YulVariableDeclaration","src":"3625:45:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3656:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"3667:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3652:3:4"},"nodeType":"YulFunctionCall","src":"3652:17:4"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3639:12:4"},"nodeType":"YulFunctionCall","src":"3639:31:4"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"3629:6:4","type":""}]},{"body":{"nodeType":"YulBlock","src":"3717:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3726:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3729:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3719:6:4"},"nodeType":"YulFunctionCall","src":"3719:12:4"},"nodeType":"YulExpressionStatement","src":"3719:12:4"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"3689:6:4"},{"kind":"number","nodeType":"YulLiteral","src":"3697:18:4","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3686:2:4"},"nodeType":"YulFunctionCall","src":"3686:30:4"},"nodeType":"YulIf","src":"3683:2:4"},{"nodeType":"YulAssignment","src":"3747:73:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3792:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"3803:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3788:3:4"},"nodeType":"YulFunctionCall","src":"3788:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"3812:7:4"}],"functionName":{"name":"abi_decode_t_string_memory_ptr","nodeType":"YulIdentifier","src":"3757:30:4"},"nodeType":"YulFunctionCall","src":"3757:63:4"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3747:6:4"}]}]}]},"name":"abi_decode_tuple_t_string_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3508:9:4","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3519:7:4","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3531:6:4","type":""}],"src":"3462:375:4"},{"body":{"nodeType":"YulBlock","src":"3909:196:4","statements":[{"body":{"nodeType":"YulBlock","src":"3955:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3964:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3967:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3957:6:4"},"nodeType":"YulFunctionCall","src":"3957:12:4"},"nodeType":"YulExpressionStatement","src":"3957:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3930:7:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"3939:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3926:3:4"},"nodeType":"YulFunctionCall","src":"3926:23:4"},{"kind":"number","nodeType":"YulLiteral","src":"3951:2:4","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3922:3:4"},"nodeType":"YulFunctionCall","src":"3922:32:4"},"nodeType":"YulIf","src":"3919:2:4"},{"nodeType":"YulBlock","src":"3981:117:4","statements":[{"nodeType":"YulVariableDeclaration","src":"3996:15:4","value":{"kind":"number","nodeType":"YulLiteral","src":"4010:1:4","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"4000:6:4","type":""}]},{"nodeType":"YulAssignment","src":"4025:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4060:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"4071:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4056:3:4"},"nodeType":"YulFunctionCall","src":"4056:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4080:7:4"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"4035:20:4"},"nodeType":"YulFunctionCall","src":"4035:53:4"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"4025:6:4"}]}]}]},"name":"abi_decode_tuple_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3879:9:4","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3890:7:4","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3902:6:4","type":""}],"src":"3843:262:4"},{"body":{"nodeType":"YulBlock","src":"4204:427:4","statements":[{"body":{"nodeType":"YulBlock","src":"4250:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4259:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4262:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4252:6:4"},"nodeType":"YulFunctionCall","src":"4252:12:4"},"nodeType":"YulExpressionStatement","src":"4252:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"4225:7:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"4234:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4221:3:4"},"nodeType":"YulFunctionCall","src":"4221:23:4"},{"kind":"number","nodeType":"YulLiteral","src":"4246:2:4","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4217:3:4"},"nodeType":"YulFunctionCall","src":"4217:32:4"},"nodeType":"YulIf","src":"4214:2:4"},{"nodeType":"YulBlock","src":"4276:117:4","statements":[{"nodeType":"YulVariableDeclaration","src":"4291:15:4","value":{"kind":"number","nodeType":"YulLiteral","src":"4305:1:4","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"4295:6:4","type":""}]},{"nodeType":"YulAssignment","src":"4320:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4355:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"4366:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4351:3:4"},"nodeType":"YulFunctionCall","src":"4351:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4375:7:4"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"4330:20:4"},"nodeType":"YulFunctionCall","src":"4330:53:4"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"4320:6:4"}]}]},{"nodeType":"YulBlock","src":"4403:221:4","statements":[{"nodeType":"YulVariableDeclaration","src":"4418:46:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4449:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"4460:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4445:3:4"},"nodeType":"YulFunctionCall","src":"4445:18:4"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4432:12:4"},"nodeType":"YulFunctionCall","src":"4432:32:4"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"4422:6:4","type":""}]},{"body":{"nodeType":"YulBlock","src":"4511:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4520:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4523:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4513:6:4"},"nodeType":"YulFunctionCall","src":"4513:12:4"},"nodeType":"YulExpressionStatement","src":"4513:12:4"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"4483:6:4"},{"kind":"number","nodeType":"YulLiteral","src":"4491:18:4","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4480:2:4"},"nodeType":"YulFunctionCall","src":"4480:30:4"},"nodeType":"YulIf","src":"4477:2:4"},{"nodeType":"YulAssignment","src":"4541:73:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4586:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"4597:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4582:3:4"},"nodeType":"YulFunctionCall","src":"4582:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4606:7:4"}],"functionName":{"name":"abi_decode_t_string_memory_ptr","nodeType":"YulIdentifier","src":"4551:30:4"},"nodeType":"YulFunctionCall","src":"4551:63:4"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"4541:6:4"}]}]}]},"name":"abi_decode_tuple_t_uint256t_string_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4166:9:4","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"4177:7:4","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"4189:6:4","type":""},{"name":"value1","nodeType":"YulTypedName","src":"4197:6:4","type":""}],"src":"4111:520:4"},{"body":{"nodeType":"YulBlock","src":"4720:324:4","statements":[{"body":{"nodeType":"YulBlock","src":"4766:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4775:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4778:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4768:6:4"},"nodeType":"YulFunctionCall","src":"4768:12:4"},"nodeType":"YulExpressionStatement","src":"4768:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"4741:7:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"4750:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4737:3:4"},"nodeType":"YulFunctionCall","src":"4737:23:4"},{"kind":"number","nodeType":"YulLiteral","src":"4762:2:4","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4733:3:4"},"nodeType":"YulFunctionCall","src":"4733:32:4"},"nodeType":"YulIf","src":"4730:2:4"},{"nodeType":"YulBlock","src":"4792:117:4","statements":[{"nodeType":"YulVariableDeclaration","src":"4807:15:4","value":{"kind":"number","nodeType":"YulLiteral","src":"4821:1:4","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"4811:6:4","type":""}]},{"nodeType":"YulAssignment","src":"4836:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4871:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"4882:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4867:3:4"},"nodeType":"YulFunctionCall","src":"4867:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4891:7:4"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"4846:20:4"},"nodeType":"YulFunctionCall","src":"4846:53:4"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"4836:6:4"}]}]},{"nodeType":"YulBlock","src":"4919:118:4","statements":[{"nodeType":"YulVariableDeclaration","src":"4934:16:4","value":{"kind":"number","nodeType":"YulLiteral","src":"4948:2:4","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"4938:6:4","type":""}]},{"nodeType":"YulAssignment","src":"4964:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4999:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"5010:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4995:3:4"},"nodeType":"YulFunctionCall","src":"4995:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"5019:7:4"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"4974:20:4"},"nodeType":"YulFunctionCall","src":"4974:53:4"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"4964:6:4"}]}]}]},"name":"abi_decode_tuple_t_uint256t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4682:9:4","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"4693:7:4","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"4705:6:4","type":""},{"name":"value1","nodeType":"YulTypedName","src":"4713:6:4","type":""}],"src":"4637:407:4"},{"body":{"nodeType":"YulBlock","src":"5187:787:4","statements":[{"body":{"nodeType":"YulBlock","src":"5234:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5243:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5246:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5236:6:4"},"nodeType":"YulFunctionCall","src":"5236:12:4"},"nodeType":"YulExpressionStatement","src":"5236:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"5208:7:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"5217:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5204:3:4"},"nodeType":"YulFunctionCall","src":"5204:23:4"},{"kind":"number","nodeType":"YulLiteral","src":"5229:3:4","type":"","value":"128"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"5200:3:4"},"nodeType":"YulFunctionCall","src":"5200:33:4"},"nodeType":"YulIf","src":"5197:2:4"},{"nodeType":"YulBlock","src":"5260:117:4","statements":[{"nodeType":"YulVariableDeclaration","src":"5275:15:4","value":{"kind":"number","nodeType":"YulLiteral","src":"5289:1:4","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"5279:6:4","type":""}]},{"nodeType":"YulAssignment","src":"5304:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5339:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"5350:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5335:3:4"},"nodeType":"YulFunctionCall","src":"5335:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"5359:7:4"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"5314:20:4"},"nodeType":"YulFunctionCall","src":"5314:53:4"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"5304:6:4"}]}]},{"nodeType":"YulBlock","src":"5387:118:4","statements":[{"nodeType":"YulVariableDeclaration","src":"5402:16:4","value":{"kind":"number","nodeType":"YulLiteral","src":"5416:2:4","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"5406:6:4","type":""}]},{"nodeType":"YulAssignment","src":"5432:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5467:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"5478:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5463:3:4"},"nodeType":"YulFunctionCall","src":"5463:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"5487:7:4"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"5442:20:4"},"nodeType":"YulFunctionCall","src":"5442:53:4"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"5432:6:4"}]}]},{"nodeType":"YulBlock","src":"5515:221:4","statements":[{"nodeType":"YulVariableDeclaration","src":"5530:46:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5561:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"5572:2:4","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5557:3:4"},"nodeType":"YulFunctionCall","src":"5557:18:4"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"5544:12:4"},"nodeType":"YulFunctionCall","src":"5544:32:4"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"5534:6:4","type":""}]},{"body":{"nodeType":"YulBlock","src":"5623:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5632:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5635:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5625:6:4"},"nodeType":"YulFunctionCall","src":"5625:12:4"},"nodeType":"YulExpressionStatement","src":"5625:12:4"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"5595:6:4"},{"kind":"number","nodeType":"YulLiteral","src":"5603:18:4","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5592:2:4"},"nodeType":"YulFunctionCall","src":"5592:30:4"},"nodeType":"YulIf","src":"5589:2:4"},{"nodeType":"YulAssignment","src":"5653:73:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5698:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"5709:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5694:3:4"},"nodeType":"YulFunctionCall","src":"5694:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"5718:7:4"}],"functionName":{"name":"abi_decode_t_string_memory_ptr","nodeType":"YulIdentifier","src":"5663:30:4"},"nodeType":"YulFunctionCall","src":"5663:63:4"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"5653:6:4"}]}]},{"nodeType":"YulBlock","src":"5746:221:4","statements":[{"nodeType":"YulVariableDeclaration","src":"5761:46:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5792:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"5803:2:4","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5788:3:4"},"nodeType":"YulFunctionCall","src":"5788:18:4"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"5775:12:4"},"nodeType":"YulFunctionCall","src":"5775:32:4"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"5765:6:4","type":""}]},{"body":{"nodeType":"YulBlock","src":"5854:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5863:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5866:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5856:6:4"},"nodeType":"YulFunctionCall","src":"5856:12:4"},"nodeType":"YulExpressionStatement","src":"5856:12:4"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"5826:6:4"},{"kind":"number","nodeType":"YulLiteral","src":"5834:18:4","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5823:2:4"},"nodeType":"YulFunctionCall","src":"5823:30:4"},"nodeType":"YulIf","src":"5820:2:4"},{"nodeType":"YulAssignment","src":"5884:73:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5929:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"5940:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5925:3:4"},"nodeType":"YulFunctionCall","src":"5925:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"5949:7:4"}],"functionName":{"name":"abi_decode_t_string_memory_ptr","nodeType":"YulIdentifier","src":"5894:30:4"},"nodeType":"YulFunctionCall","src":"5894:63:4"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"5884:6:4"}]}]}]},"name":"abi_decode_tuple_t_uint256t_uint256t_string_memory_ptrt_string_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5133:9:4","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"5144:7:4","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"5156:6:4","type":""},{"name":"value1","nodeType":"YulTypedName","src":"5164:6:4","type":""},{"name":"value2","nodeType":"YulTypedName","src":"5172:6:4","type":""},{"name":"value3","nodeType":"YulTypedName","src":"5180:6:4","type":""}],"src":"5050:924:4"},{"body":{"nodeType":"YulBlock","src":"6060:99:4","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6104:6:4"},{"name":"pos","nodeType":"YulIdentifier","src":"6112:3:4"}],"functionName":{"name":"abi_encode_t_bytes32_to_t_bytes32","nodeType":"YulIdentifier","src":"6070:33:4"},"nodeType":"YulFunctionCall","src":"6070:46:4"},"nodeType":"YulExpressionStatement","src":"6070:46:4"},{"nodeType":"YulAssignment","src":"6125:28:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6143:3:4"},{"kind":"number","nodeType":"YulLiteral","src":"6148:4:4","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6139:3:4"},"nodeType":"YulFunctionCall","src":"6139:14:4"},"variableNames":[{"name":"updatedPos","nodeType":"YulIdentifier","src":"6125:10:4"}]}]},"name":"abi_encodeUpdatedPos_t_bytes32_to_t_bytes32","nodeType":"YulFunctionDefinition","parameters":[{"name":"value0","nodeType":"YulTypedName","src":"6033:6:4","type":""},{"name":"pos","nodeType":"YulTypedName","src":"6041:3:4","type":""}],"returnVariables":[{"name":"updatedPos","nodeType":"YulTypedName","src":"6049:10:4","type":""}],"src":"5980:179:4"},{"body":{"nodeType":"YulBlock","src":"6245:99:4","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6289:6:4"},{"name":"pos","nodeType":"YulIdentifier","src":"6297:3:4"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256","nodeType":"YulIdentifier","src":"6255:33:4"},"nodeType":"YulFunctionCall","src":"6255:46:4"},"nodeType":"YulExpressionStatement","src":"6255:46:4"},{"nodeType":"YulAssignment","src":"6310:28:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6328:3:4"},{"kind":"number","nodeType":"YulLiteral","src":"6333:4:4","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6324:3:4"},"nodeType":"YulFunctionCall","src":"6324:14:4"},"variableNames":[{"name":"updatedPos","nodeType":"YulIdentifier","src":"6310:10:4"}]}]},"name":"abi_encodeUpdatedPos_t_uint256_to_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value0","nodeType":"YulTypedName","src":"6218:6:4","type":""},{"name":"pos","nodeType":"YulTypedName","src":"6226:3:4","type":""}],"returnVariables":[{"name":"updatedPos","nodeType":"YulTypedName","src":"6234:10:4","type":""}],"src":"6165:179:4"},{"body":{"nodeType":"YulBlock","src":"6415:53:4","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6432:3:4"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6455:5:4"}],"functionName":{"name":"cleanup_t_address","nodeType":"YulIdentifier","src":"6437:17:4"},"nodeType":"YulFunctionCall","src":"6437:24:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6425:6:4"},"nodeType":"YulFunctionCall","src":"6425:37:4"},"nodeType":"YulExpressionStatement","src":"6425:37:4"}]},"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"6403:5:4","type":""},{"name":"pos","nodeType":"YulTypedName","src":"6410:3:4","type":""}],"src":"6350:118:4"},{"body":{"nodeType":"YulBlock","src":"6618:582:4","statements":[{"nodeType":"YulVariableDeclaration","src":"6628:66:4","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6688:5:4"}],"functionName":{"name":"array_length_t_array$_t_bytes32_$2_memory_ptr","nodeType":"YulIdentifier","src":"6642:45:4"},"nodeType":"YulFunctionCall","src":"6642:52:4"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"6632:6:4","type":""}]},{"nodeType":"YulAssignment","src":"6703:91:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6782:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"6787:6:4"}],"functionName":{"name":"array_storeLengthForEncoding_t_array$_t_bytes32_$2_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"6710:71:4"},"nodeType":"YulFunctionCall","src":"6710:84:4"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"6703:3:4"}]},{"nodeType":"YulVariableDeclaration","src":"6803:69:4","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6866:5:4"}],"functionName":{"name":"array_dataslot_t_array$_t_bytes32_$2_memory_ptr","nodeType":"YulIdentifier","src":"6818:47:4"},"nodeType":"YulFunctionCall","src":"6818:54:4"},"variables":[{"name":"baseRef","nodeType":"YulTypedName","src":"6807:7:4","type":""}]},{"nodeType":"YulVariableDeclaration","src":"6881:21:4","value":{"name":"baseRef","nodeType":"YulIdentifier","src":"6895:7:4"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"6885:6:4","type":""}]},{"body":{"nodeType":"YulBlock","src":"6971:222:4","statements":[{"nodeType":"YulVariableDeclaration","src":"6985:34:4","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"7012:6:4"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"7006:5:4"},"nodeType":"YulFunctionCall","src":"7006:13:4"},"variables":[{"name":"elementValue0","nodeType":"YulTypedName","src":"6989:13:4","type":""}]},{"nodeType":"YulAssignment","src":"7032:70:4","value":{"arguments":[{"name":"elementValue0","nodeType":"YulIdentifier","src":"7083:13:4"},{"name":"pos","nodeType":"YulIdentifier","src":"7098:3:4"}],"functionName":{"name":"abi_encodeUpdatedPos_t_bytes32_to_t_bytes32","nodeType":"YulIdentifier","src":"7039:43:4"},"nodeType":"YulFunctionCall","src":"7039:63:4"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"7032:3:4"}]},{"nodeType":"YulAssignment","src":"7115:68:4","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"7176:6:4"}],"functionName":{"name":"array_nextElement_t_array$_t_bytes32_$2_memory_ptr","nodeType":"YulIdentifier","src":"7125:50:4"},"nodeType":"YulFunctionCall","src":"7125:58:4"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"7115:6:4"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"6933:1:4"},{"name":"length","nodeType":"YulIdentifier","src":"6936:6:4"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"6930:2:4"},"nodeType":"YulFunctionCall","src":"6930:13:4"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"6944:18:4","statements":[{"nodeType":"YulAssignment","src":"6946:14:4","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"6955:1:4"},{"kind":"number","nodeType":"YulLiteral","src":"6958:1:4","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6951:3:4"},"nodeType":"YulFunctionCall","src":"6951:9:4"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"6946:1:4"}]}]},"pre":{"nodeType":"YulBlock","src":"6915:14:4","statements":[{"nodeType":"YulVariableDeclaration","src":"6917:10:4","value":{"kind":"number","nodeType":"YulLiteral","src":"6926:1:4","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"6921:1:4","type":""}]}]},"src":"6911:282:4"}]},"name":"abi_encode_t_array$_t_bytes32_$2_memory_ptr_to_t_array$_t_bytes32_$2_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"6605:5:4","type":""},{"name":"pos","nodeType":"YulTypedName","src":"6612:3:4","type":""}],"src":"6506:694:4"},{"body":{"nodeType":"YulBlock","src":"7350:582:4","statements":[{"nodeType":"YulVariableDeclaration","src":"7360:66:4","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"7420:5:4"}],"functionName":{"name":"array_length_t_array$_t_uint256_$2_memory_ptr","nodeType":"YulIdentifier","src":"7374:45:4"},"nodeType":"YulFunctionCall","src":"7374:52:4"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"7364:6:4","type":""}]},{"nodeType":"YulAssignment","src":"7435:91:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"7514:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"7519:6:4"}],"functionName":{"name":"array_storeLengthForEncoding_t_array$_t_uint256_$2_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"7442:71:4"},"nodeType":"YulFunctionCall","src":"7442:84:4"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"7435:3:4"}]},{"nodeType":"YulVariableDeclaration","src":"7535:69:4","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"7598:5:4"}],"functionName":{"name":"array_dataslot_t_array$_t_uint256_$2_memory_ptr","nodeType":"YulIdentifier","src":"7550:47:4"},"nodeType":"YulFunctionCall","src":"7550:54:4"},"variables":[{"name":"baseRef","nodeType":"YulTypedName","src":"7539:7:4","type":""}]},{"nodeType":"YulVariableDeclaration","src":"7613:21:4","value":{"name":"baseRef","nodeType":"YulIdentifier","src":"7627:7:4"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"7617:6:4","type":""}]},{"body":{"nodeType":"YulBlock","src":"7703:222:4","statements":[{"nodeType":"YulVariableDeclaration","src":"7717:34:4","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"7744:6:4"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"7738:5:4"},"nodeType":"YulFunctionCall","src":"7738:13:4"},"variables":[{"name":"elementValue0","nodeType":"YulTypedName","src":"7721:13:4","type":""}]},{"nodeType":"YulAssignment","src":"7764:70:4","value":{"arguments":[{"name":"elementValue0","nodeType":"YulIdentifier","src":"7815:13:4"},{"name":"pos","nodeType":"YulIdentifier","src":"7830:3:4"}],"functionName":{"name":"abi_encodeUpdatedPos_t_uint256_to_t_uint256","nodeType":"YulIdentifier","src":"7771:43:4"},"nodeType":"YulFunctionCall","src":"7771:63:4"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"7764:3:4"}]},{"nodeType":"YulAssignment","src":"7847:68:4","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"7908:6:4"}],"functionName":{"name":"array_nextElement_t_array$_t_uint256_$2_memory_ptr","nodeType":"YulIdentifier","src":"7857:50:4"},"nodeType":"YulFunctionCall","src":"7857:58:4"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"7847:6:4"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"7665:1:4"},{"name":"length","nodeType":"YulIdentifier","src":"7668:6:4"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"7662:2:4"},"nodeType":"YulFunctionCall","src":"7662:13:4"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"7676:18:4","statements":[{"nodeType":"YulAssignment","src":"7678:14:4","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"7687:1:4"},{"kind":"number","nodeType":"YulLiteral","src":"7690:1:4","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7683:3:4"},"nodeType":"YulFunctionCall","src":"7683:9:4"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"7678:1:4"}]}]},"pre":{"nodeType":"YulBlock","src":"7647:14:4","statements":[{"nodeType":"YulVariableDeclaration","src":"7649:10:4","value":{"kind":"number","nodeType":"YulLiteral","src":"7658:1:4","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"7653:1:4","type":""}]}]},"src":"7643:282:4"}]},"name":"abi_encode_t_array$_t_uint256_$2_memory_ptr_to_t_array$_t_uint256_$2_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"7337:5:4","type":""},{"name":"pos","nodeType":"YulTypedName","src":"7344:3:4","type":""}],"src":"7238:694:4"},{"body":{"nodeType":"YulBlock","src":"7993:53:4","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"8010:3:4"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8033:5:4"}],"functionName":{"name":"cleanup_t_bytes32","nodeType":"YulIdentifier","src":"8015:17:4"},"nodeType":"YulFunctionCall","src":"8015:24:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8003:6:4"},"nodeType":"YulFunctionCall","src":"8003:37:4"},"nodeType":"YulExpressionStatement","src":"8003:37:4"}]},"name":"abi_encode_t_bytes32_to_t_bytes32","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"7981:5:4","type":""},{"name":"pos","nodeType":"YulTypedName","src":"7988:3:4","type":""}],"src":"7938:108:4"},{"body":{"nodeType":"YulBlock","src":"8117:53:4","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"8134:3:4"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8157:5:4"}],"functionName":{"name":"cleanup_t_bytes32","nodeType":"YulIdentifier","src":"8139:17:4"},"nodeType":"YulFunctionCall","src":"8139:24:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8127:6:4"},"nodeType":"YulFunctionCall","src":"8127:37:4"},"nodeType":"YulExpressionStatement","src":"8127:37:4"}]},"name":"abi_encode_t_bytes32_to_t_bytes32_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"8105:5:4","type":""},{"name":"pos","nodeType":"YulTypedName","src":"8112:3:4","type":""}],"src":"8052:118:4"},{"body":{"nodeType":"YulBlock","src":"8266:270:4","statements":[{"nodeType":"YulVariableDeclaration","src":"8276:52:4","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8322:5:4"}],"functionName":{"name":"array_length_t_bytes_memory_ptr","nodeType":"YulIdentifier","src":"8290:31:4"},"nodeType":"YulFunctionCall","src":"8290:38:4"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"8280:6:4","type":""}]},{"nodeType":"YulAssignment","src":"8337:77:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"8402:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"8407:6:4"}],"functionName":{"name":"array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"8344:57:4"},"nodeType":"YulFunctionCall","src":"8344:70:4"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"8337:3:4"}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8449:5:4"},{"kind":"number","nodeType":"YulLiteral","src":"8456:4:4","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8445:3:4"},"nodeType":"YulFunctionCall","src":"8445:16:4"},{"name":"pos","nodeType":"YulIdentifier","src":"8463:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"8468:6:4"}],"functionName":{"name":"copy_memory_to_memory","nodeType":"YulIdentifier","src":"8423:21:4"},"nodeType":"YulFunctionCall","src":"8423:52:4"},"nodeType":"YulExpressionStatement","src":"8423:52:4"},{"nodeType":"YulAssignment","src":"8484:46:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"8495:3:4"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"8522:6:4"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"8500:21:4"},"nodeType":"YulFunctionCall","src":"8500:29:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8491:3:4"},"nodeType":"YulFunctionCall","src":"8491:39:4"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"8484:3:4"}]}]},"name":"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"8247:5:4","type":""},{"name":"pos","nodeType":"YulTypedName","src":"8254:3:4","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"8262:3:4","type":""}],"src":"8176:360:4"},{"body":{"nodeType":"YulBlock","src":"8650:265:4","statements":[{"nodeType":"YulVariableDeclaration","src":"8660:52:4","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8706:5:4"}],"functionName":{"name":"array_length_t_bytes_memory_ptr","nodeType":"YulIdentifier","src":"8674:31:4"},"nodeType":"YulFunctionCall","src":"8674:38:4"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"8664:6:4","type":""}]},{"nodeType":"YulAssignment","src":"8721:95:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"8804:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"8809:6:4"}],"functionName":{"name":"array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulIdentifier","src":"8728:75:4"},"nodeType":"YulFunctionCall","src":"8728:88:4"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"8721:3:4"}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8851:5:4"},{"kind":"number","nodeType":"YulLiteral","src":"8858:4:4","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8847:3:4"},"nodeType":"YulFunctionCall","src":"8847:16:4"},{"name":"pos","nodeType":"YulIdentifier","src":"8865:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"8870:6:4"}],"functionName":{"name":"copy_memory_to_memory","nodeType":"YulIdentifier","src":"8825:21:4"},"nodeType":"YulFunctionCall","src":"8825:52:4"},"nodeType":"YulExpressionStatement","src":"8825:52:4"},{"nodeType":"YulAssignment","src":"8886:23:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"8897:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"8902:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8893:3:4"},"nodeType":"YulFunctionCall","src":"8893:16:4"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"8886:3:4"}]}]},"name":"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"8631:5:4","type":""},{"name":"pos","nodeType":"YulTypedName","src":"8638:3:4","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"8646:3:4","type":""}],"src":"8542:373:4"},{"body":{"nodeType":"YulBlock","src":"8984:52:4","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"9001:3:4"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9023:5:4"}],"functionName":{"name":"cleanup_t_int256","nodeType":"YulIdentifier","src":"9006:16:4"},"nodeType":"YulFunctionCall","src":"9006:23:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8994:6:4"},"nodeType":"YulFunctionCall","src":"8994:36:4"},"nodeType":"YulExpressionStatement","src":"8994:36:4"}]},"name":"abi_encode_t_int256_to_t_int256_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"8972:5:4","type":""},{"name":"pos","nodeType":"YulTypedName","src":"8979:3:4","type":""}],"src":"8921:115:4"},{"body":{"nodeType":"YulBlock","src":"9134:272:4","statements":[{"nodeType":"YulVariableDeclaration","src":"9144:53:4","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9191:5:4"}],"functionName":{"name":"array_length_t_string_memory_ptr","nodeType":"YulIdentifier","src":"9158:32:4"},"nodeType":"YulFunctionCall","src":"9158:39:4"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"9148:6:4","type":""}]},{"nodeType":"YulAssignment","src":"9206:78:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"9272:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"9277:6:4"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"9213:58:4"},"nodeType":"YulFunctionCall","src":"9213:71:4"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"9206:3:4"}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9319:5:4"},{"kind":"number","nodeType":"YulLiteral","src":"9326:4:4","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9315:3:4"},"nodeType":"YulFunctionCall","src":"9315:16:4"},{"name":"pos","nodeType":"YulIdentifier","src":"9333:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"9338:6:4"}],"functionName":{"name":"copy_memory_to_memory","nodeType":"YulIdentifier","src":"9293:21:4"},"nodeType":"YulFunctionCall","src":"9293:52:4"},"nodeType":"YulExpressionStatement","src":"9293:52:4"},{"nodeType":"YulAssignment","src":"9354:46:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"9365:3:4"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"9392:6:4"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"9370:21:4"},"nodeType":"YulFunctionCall","src":"9370:29:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9361:3:4"},"nodeType":"YulFunctionCall","src":"9361:39:4"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"9354:3:4"}]}]},"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"9115:5:4","type":""},{"name":"pos","nodeType":"YulTypedName","src":"9122:3:4","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"9130:3:4","type":""}],"src":"9042:364:4"},{"body":{"nodeType":"YulBlock","src":"9522:267:4","statements":[{"nodeType":"YulVariableDeclaration","src":"9532:53:4","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9579:5:4"}],"functionName":{"name":"array_length_t_string_memory_ptr","nodeType":"YulIdentifier","src":"9546:32:4"},"nodeType":"YulFunctionCall","src":"9546:39:4"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"9536:6:4","type":""}]},{"nodeType":"YulAssignment","src":"9594:96:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"9678:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"9683:6:4"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulIdentifier","src":"9601:76:4"},"nodeType":"YulFunctionCall","src":"9601:89:4"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"9594:3:4"}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9725:5:4"},{"kind":"number","nodeType":"YulLiteral","src":"9732:4:4","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9721:3:4"},"nodeType":"YulFunctionCall","src":"9721:16:4"},{"name":"pos","nodeType":"YulIdentifier","src":"9739:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"9744:6:4"}],"functionName":{"name":"copy_memory_to_memory","nodeType":"YulIdentifier","src":"9699:21:4"},"nodeType":"YulFunctionCall","src":"9699:52:4"},"nodeType":"YulExpressionStatement","src":"9699:52:4"},{"nodeType":"YulAssignment","src":"9760:23:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"9771:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"9776:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9767:3:4"},"nodeType":"YulFunctionCall","src":"9767:16:4"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"9760:3:4"}]}]},"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"9503:5:4","type":""},{"name":"pos","nodeType":"YulTypedName","src":"9510:3:4","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"9518:3:4","type":""}],"src":"9412:377:4"},{"body":{"nodeType":"YulBlock","src":"9957:385:4","statements":[{"nodeType":"YulVariableDeclaration","src":"9967:26:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"9983:3:4"},{"kind":"number","nodeType":"YulLiteral","src":"9988:4:4","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9979:3:4"},"nodeType":"YulFunctionCall","src":"9979:14:4"},"variables":[{"name":"tail","nodeType":"YulTypedName","src":"9971:4:4","type":""}]},{"nodeType":"YulBlock","src":"10003:161:4","statements":[{"nodeType":"YulVariableDeclaration","src":"10035:43:4","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"10065:5:4"},{"kind":"number","nodeType":"YulLiteral","src":"10072:4:4","type":"","value":"0x00"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10061:3:4"},"nodeType":"YulFunctionCall","src":"10061:16:4"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"10055:5:4"},"nodeType":"YulFunctionCall","src":"10055:23:4"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"10039:12:4","type":""}]},{"expression":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"10125:12:4"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"10143:3:4"},{"kind":"number","nodeType":"YulLiteral","src":"10148:4:4","type":"","value":"0x00"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10139:3:4"},"nodeType":"YulFunctionCall","src":"10139:14:4"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256","nodeType":"YulIdentifier","src":"10091:33:4"},"nodeType":"YulFunctionCall","src":"10091:63:4"},"nodeType":"YulExpressionStatement","src":"10091:63:4"}]},{"nodeType":"YulBlock","src":"10174:161:4","statements":[{"nodeType":"YulVariableDeclaration","src":"10206:43:4","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"10236:5:4"},{"kind":"number","nodeType":"YulLiteral","src":"10243:4:4","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10232:3:4"},"nodeType":"YulFunctionCall","src":"10232:16:4"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"10226:5:4"},"nodeType":"YulFunctionCall","src":"10226:23:4"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"10210:12:4","type":""}]},{"expression":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"10296:12:4"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"10314:3:4"},{"kind":"number","nodeType":"YulLiteral","src":"10319:4:4","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10310:3:4"},"nodeType":"YulFunctionCall","src":"10310:14:4"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256","nodeType":"YulIdentifier","src":"10262:33:4"},"nodeType":"YulFunctionCall","src":"10262:63:4"},"nodeType":"YulExpressionStatement","src":"10262:63:4"}]}]},"name":"abi_encode_t_struct$_Struct_$47_memory_ptr_to_t_struct$_Struct_$47_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"9944:5:4","type":""},{"name":"pos","nodeType":"YulTypedName","src":"9951:3:4","type":""}],"src":"9847:495:4"},{"body":{"nodeType":"YulBlock","src":"10403:53:4","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"10420:3:4"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"10443:5:4"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"10425:17:4"},"nodeType":"YulFunctionCall","src":"10425:24:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10413:6:4"},"nodeType":"YulFunctionCall","src":"10413:37:4"},"nodeType":"YulExpressionStatement","src":"10413:37:4"}]},"name":"abi_encode_t_uint256_to_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"10391:5:4","type":""},{"name":"pos","nodeType":"YulTypedName","src":"10398:3:4","type":""}],"src":"10348:108:4"},{"body":{"nodeType":"YulBlock","src":"10527:53:4","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"10544:3:4"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"10567:5:4"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"10549:17:4"},"nodeType":"YulFunctionCall","src":"10549:24:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10537:6:4"},"nodeType":"YulFunctionCall","src":"10537:37:4"},"nodeType":"YulExpressionStatement","src":"10537:37:4"}]},"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"10515:5:4","type":""},{"name":"pos","nodeType":"YulTypedName","src":"10522:3:4","type":""}],"src":"10462:118:4"},{"body":{"nodeType":"YulBlock","src":"10720:137:4","statements":[{"nodeType":"YulAssignment","src":"10731:100:4","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"10818:6:4"},{"name":"pos","nodeType":"YulIdentifier","src":"10827:3:4"}],"functionName":{"name":"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulIdentifier","src":"10738:79:4"},"nodeType":"YulFunctionCall","src":"10738:93:4"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"10731:3:4"}]},{"nodeType":"YulAssignment","src":"10841:10:4","value":{"name":"pos","nodeType":"YulIdentifier","src":"10848:3:4"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"10841:3:4"}]}]},"name":"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"10699:3:4","type":""},{"name":"value0","nodeType":"YulTypedName","src":"10705:6:4","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"10716:3:4","type":""}],"src":"10586:271:4"},{"body":{"nodeType":"YulBlock","src":"10999:139:4","statements":[{"nodeType":"YulAssignment","src":"11010:102:4","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"11099:6:4"},{"name":"pos","nodeType":"YulIdentifier","src":"11108:3:4"}],"functionName":{"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulIdentifier","src":"11017:81:4"},"nodeType":"YulFunctionCall","src":"11017:95:4"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"11010:3:4"}]},{"nodeType":"YulAssignment","src":"11122:10:4","value":{"name":"pos","nodeType":"YulIdentifier","src":"11129:3:4"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"11122:3:4"}]}]},"name":"abi_encode_tuple_packed_t_string_memory_ptr__to_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"10978:3:4","type":""},{"name":"value0","nodeType":"YulTypedName","src":"10984:6:4","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"10995:3:4","type":""}],"src":"10863:275:4"},{"body":{"nodeType":"YulBlock","src":"11242:124:4","statements":[{"nodeType":"YulAssignment","src":"11252:26:4","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11264:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"11275:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11260:3:4"},"nodeType":"YulFunctionCall","src":"11260:18:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"11252:4:4"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"11332:6:4"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11345:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"11356:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11341:3:4"},"nodeType":"YulFunctionCall","src":"11341:17:4"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"11288:43:4"},"nodeType":"YulFunctionCall","src":"11288:71:4"},"nodeType":"YulExpressionStatement","src":"11288:71:4"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"11214:9:4","type":""},{"name":"value0","nodeType":"YulTypedName","src":"11226:6:4","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"11237:4:4","type":""}],"src":"11144:222:4"},{"body":{"nodeType":"YulBlock","src":"11516:170:4","statements":[{"nodeType":"YulAssignment","src":"11526:26:4","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11538:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"11549:2:4","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11534:3:4"},"nodeType":"YulFunctionCall","src":"11534:18:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"11526:4:4"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"11652:6:4"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11665:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"11676:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11661:3:4"},"nodeType":"YulFunctionCall","src":"11661:17:4"}],"functionName":{"name":"abi_encode_t_array$_t_bytes32_$2_memory_ptr_to_t_array$_t_bytes32_$2_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"11562:89:4"},"nodeType":"YulFunctionCall","src":"11562:117:4"},"nodeType":"YulExpressionStatement","src":"11562:117:4"}]},"name":"abi_encode_tuple_t_array$_t_bytes32_$2_memory_ptr__to_t_array$_t_bytes32_$2_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"11488:9:4","type":""},{"name":"value0","nodeType":"YulTypedName","src":"11500:6:4","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"11511:4:4","type":""}],"src":"11372:314:4"},{"body":{"nodeType":"YulBlock","src":"11836:170:4","statements":[{"nodeType":"YulAssignment","src":"11846:26:4","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11858:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"11869:2:4","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11854:3:4"},"nodeType":"YulFunctionCall","src":"11854:18:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"11846:4:4"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"11972:6:4"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11985:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"11996:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11981:3:4"},"nodeType":"YulFunctionCall","src":"11981:17:4"}],"functionName":{"name":"abi_encode_t_array$_t_uint256_$2_memory_ptr_to_t_array$_t_uint256_$2_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"11882:89:4"},"nodeType":"YulFunctionCall","src":"11882:117:4"},"nodeType":"YulExpressionStatement","src":"11882:117:4"}]},"name":"abi_encode_tuple_t_array$_t_uint256_$2_memory_ptr__to_t_array$_t_uint256_$2_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"11808:9:4","type":""},{"name":"value0","nodeType":"YulTypedName","src":"11820:6:4","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"11831:4:4","type":""}],"src":"11692:314:4"},{"body":{"nodeType":"YulBlock","src":"12110:124:4","statements":[{"nodeType":"YulAssignment","src":"12120:26:4","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12132:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"12143:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12128:3:4"},"nodeType":"YulFunctionCall","src":"12128:18:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"12120:4:4"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"12200:6:4"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12213:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"12224:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12209:3:4"},"nodeType":"YulFunctionCall","src":"12209:17:4"}],"functionName":{"name":"abi_encode_t_bytes32_to_t_bytes32_fromStack","nodeType":"YulIdentifier","src":"12156:43:4"},"nodeType":"YulFunctionCall","src":"12156:71:4"},"nodeType":"YulExpressionStatement","src":"12156:71:4"}]},"name":"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"12082:9:4","type":""},{"name":"value0","nodeType":"YulTypedName","src":"12094:6:4","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"12105:4:4","type":""}],"src":"12012:222:4"},{"body":{"nodeType":"YulBlock","src":"12356:193:4","statements":[{"nodeType":"YulAssignment","src":"12366:26:4","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12378:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"12389:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12374:3:4"},"nodeType":"YulFunctionCall","src":"12374:18:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"12366:4:4"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12413:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"12424:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12409:3:4"},"nodeType":"YulFunctionCall","src":"12409:17:4"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"12432:4:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"12438:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"12428:3:4"},"nodeType":"YulFunctionCall","src":"12428:20:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12402:6:4"},"nodeType":"YulFunctionCall","src":"12402:47:4"},"nodeType":"YulExpressionStatement","src":"12402:47:4"},{"nodeType":"YulAssignment","src":"12458:84:4","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"12528:6:4"},{"name":"tail","nodeType":"YulIdentifier","src":"12537:4:4"}],"functionName":{"name":"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"12466:61:4"},"nodeType":"YulFunctionCall","src":"12466:76:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"12458:4:4"}]}]},"name":"abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"12328:9:4","type":""},{"name":"value0","nodeType":"YulTypedName","src":"12340:6:4","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"12351:4:4","type":""}],"src":"12240:309:4"},{"body":{"nodeType":"YulBlock","src":"12651:122:4","statements":[{"nodeType":"YulAssignment","src":"12661:26:4","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12673:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"12684:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12669:3:4"},"nodeType":"YulFunctionCall","src":"12669:18:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"12661:4:4"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"12739:6:4"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12752:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"12763:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12748:3:4"},"nodeType":"YulFunctionCall","src":"12748:17:4"}],"functionName":{"name":"abi_encode_t_int256_to_t_int256_fromStack","nodeType":"YulIdentifier","src":"12697:41:4"},"nodeType":"YulFunctionCall","src":"12697:69:4"},"nodeType":"YulExpressionStatement","src":"12697:69:4"}]},"name":"abi_encode_tuple_t_int256__to_t_int256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"12623:9:4","type":""},{"name":"value0","nodeType":"YulTypedName","src":"12635:6:4","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"12646:4:4","type":""}],"src":"12555:218:4"},{"body":{"nodeType":"YulBlock","src":"12897:195:4","statements":[{"nodeType":"YulAssignment","src":"12907:26:4","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12919:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"12930:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12915:3:4"},"nodeType":"YulFunctionCall","src":"12915:18:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"12907:4:4"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12954:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"12965:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12950:3:4"},"nodeType":"YulFunctionCall","src":"12950:17:4"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"12973:4:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"12979:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"12969:3:4"},"nodeType":"YulFunctionCall","src":"12969:20:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12943:6:4"},"nodeType":"YulFunctionCall","src":"12943:47:4"},"nodeType":"YulExpressionStatement","src":"12943:47:4"},{"nodeType":"YulAssignment","src":"12999:86:4","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"13071:6:4"},{"name":"tail","nodeType":"YulIdentifier","src":"13080:4:4"}],"functionName":{"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"13007:63:4"},"nodeType":"YulFunctionCall","src":"13007:78:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"12999:4:4"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"12869:9:4","type":""},{"name":"value0","nodeType":"YulTypedName","src":"12881:6:4","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"12892:4:4","type":""}],"src":"12779:313:4"},{"body":{"nodeType":"YulBlock","src":"13264:348:4","statements":[{"nodeType":"YulAssignment","src":"13274:26:4","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13286:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"13297:2:4","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13282:3:4"},"nodeType":"YulFunctionCall","src":"13282:18:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"13274:4:4"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13321:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"13332:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13317:3:4"},"nodeType":"YulFunctionCall","src":"13317:17:4"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"13340:4:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"13346:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"13336:3:4"},"nodeType":"YulFunctionCall","src":"13336:20:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13310:6:4"},"nodeType":"YulFunctionCall","src":"13310:47:4"},"nodeType":"YulExpressionStatement","src":"13310:47:4"},{"nodeType":"YulAssignment","src":"13366:86:4","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"13438:6:4"},{"name":"tail","nodeType":"YulIdentifier","src":"13447:4:4"}],"functionName":{"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"13374:63:4"},"nodeType":"YulFunctionCall","src":"13374:78:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"13366:4:4"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13473:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"13484:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13469:3:4"},"nodeType":"YulFunctionCall","src":"13469:18:4"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"13493:4:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"13499:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"13489:3:4"},"nodeType":"YulFunctionCall","src":"13489:20:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13462:6:4"},"nodeType":"YulFunctionCall","src":"13462:48:4"},"nodeType":"YulExpressionStatement","src":"13462:48:4"},{"nodeType":"YulAssignment","src":"13519:86:4","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"13591:6:4"},{"name":"tail","nodeType":"YulIdentifier","src":"13600:4:4"}],"functionName":{"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"13527:63:4"},"nodeType":"YulFunctionCall","src":"13527:78:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"13519:4:4"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"13228:9:4","type":""},{"name":"value1","nodeType":"YulTypedName","src":"13240:6:4","type":""},{"name":"value0","nodeType":"YulTypedName","src":"13248:6:4","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"13259:4:4","type":""}],"src":"13098:514:4"},{"body":{"nodeType":"YulBlock","src":"13760:168:4","statements":[{"nodeType":"YulAssignment","src":"13770:26:4","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13782:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"13793:2:4","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13778:3:4"},"nodeType":"YulFunctionCall","src":"13778:18:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"13770:4:4"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"13894:6:4"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13907:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"13918:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13903:3:4"},"nodeType":"YulFunctionCall","src":"13903:17:4"}],"functionName":{"name":"abi_encode_t_struct$_Struct_$47_memory_ptr_to_t_struct$_Struct_$47_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"13806:87:4"},"nodeType":"YulFunctionCall","src":"13806:115:4"},"nodeType":"YulExpressionStatement","src":"13806:115:4"}]},"name":"abi_encode_tuple_t_struct$_Struct_$47_memory_ptr__to_t_struct$_Struct_$47_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"13732:9:4","type":""},{"name":"value0","nodeType":"YulTypedName","src":"13744:6:4","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"13755:4:4","type":""}],"src":"13618:310:4"},{"body":{"nodeType":"YulBlock","src":"14032:124:4","statements":[{"nodeType":"YulAssignment","src":"14042:26:4","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14054:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"14065:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14050:3:4"},"nodeType":"YulFunctionCall","src":"14050:18:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"14042:4:4"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"14122:6:4"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14135:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"14146:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14131:3:4"},"nodeType":"YulFunctionCall","src":"14131:17:4"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"14078:43:4"},"nodeType":"YulFunctionCall","src":"14078:71:4"},"nodeType":"YulExpressionStatement","src":"14078:71:4"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"14004:9:4","type":""},{"name":"value0","nodeType":"YulTypedName","src":"14016:6:4","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"14027:4:4","type":""}],"src":"13934:222:4"},{"body":{"nodeType":"YulBlock","src":"14288:206:4","statements":[{"nodeType":"YulAssignment","src":"14298:26:4","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14310:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"14321:2:4","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14306:3:4"},"nodeType":"YulFunctionCall","src":"14306:18:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"14298:4:4"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"14378:6:4"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14391:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"14402:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14387:3:4"},"nodeType":"YulFunctionCall","src":"14387:17:4"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"14334:43:4"},"nodeType":"YulFunctionCall","src":"14334:71:4"},"nodeType":"YulExpressionStatement","src":"14334:71:4"},{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"14459:6:4"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14472:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"14483:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14468:3:4"},"nodeType":"YulFunctionCall","src":"14468:18:4"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"14415:43:4"},"nodeType":"YulFunctionCall","src":"14415:72:4"},"nodeType":"YulExpressionStatement","src":"14415:72:4"}]},"name":"abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"14252:9:4","type":""},{"name":"value1","nodeType":"YulTypedName","src":"14264:6:4","type":""},{"name":"value0","nodeType":"YulTypedName","src":"14272:6:4","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"14283:4:4","type":""}],"src":"14162:332:4"},{"body":{"nodeType":"YulBlock","src":"14541:88:4","statements":[{"nodeType":"YulAssignment","src":"14551:30:4","value":{"arguments":[],"functionName":{"name":"allocate_unbounded","nodeType":"YulIdentifier","src":"14561:18:4"},"nodeType":"YulFunctionCall","src":"14561:20:4"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"14551:6:4"}]},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"14610:6:4"},{"name":"size","nodeType":"YulIdentifier","src":"14618:4:4"}],"functionName":{"name":"finalize_allocation","nodeType":"YulIdentifier","src":"14590:19:4"},"nodeType":"YulFunctionCall","src":"14590:33:4"},"nodeType":"YulExpressionStatement","src":"14590:33:4"}]},"name":"allocate_memory","nodeType":"YulFunctionDefinition","parameters":[{"name":"size","nodeType":"YulTypedName","src":"14525:4:4","type":""}],"returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"14534:6:4","type":""}],"src":"14500:129:4"},{"body":{"nodeType":"YulBlock","src":"14675:35:4","statements":[{"nodeType":"YulAssignment","src":"14685:19:4","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"14701:2:4","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"14695:5:4"},"nodeType":"YulFunctionCall","src":"14695:9:4"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"14685:6:4"}]}]},"name":"allocate_unbounded","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"14668:6:4","type":""}],"src":"14635:75:4"},{"body":{"nodeType":"YulBlock","src":"14782:241:4","statements":[{"body":{"nodeType":"YulBlock","src":"14887:22:4","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"14889:16:4"},"nodeType":"YulFunctionCall","src":"14889:18:4"},"nodeType":"YulExpressionStatement","src":"14889:18:4"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"14859:6:4"},{"kind":"number","nodeType":"YulLiteral","src":"14867:18:4","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"14856:2:4"},"nodeType":"YulFunctionCall","src":"14856:30:4"},"nodeType":"YulIf","src":"14853:2:4"},{"nodeType":"YulAssignment","src":"14919:37:4","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"14949:6:4"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"14927:21:4"},"nodeType":"YulFunctionCall","src":"14927:29:4"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"14919:4:4"}]},{"nodeType":"YulAssignment","src":"14993:23:4","value":{"arguments":[{"name":"size","nodeType":"YulIdentifier","src":"15005:4:4"},{"kind":"number","nodeType":"YulLiteral","src":"15011:4:4","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15001:3:4"},"nodeType":"YulFunctionCall","src":"15001:15:4"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"14993:4:4"}]}]},"name":"array_allocation_size_t_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"length","nodeType":"YulTypedName","src":"14766:6:4","type":""}],"returnVariables":[{"name":"size","nodeType":"YulTypedName","src":"14777:4:4","type":""}],"src":"14716:307:4"},{"body":{"nodeType":"YulBlock","src":"15096:241:4","statements":[{"body":{"nodeType":"YulBlock","src":"15201:22:4","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"15203:16:4"},"nodeType":"YulFunctionCall","src":"15203:18:4"},"nodeType":"YulExpressionStatement","src":"15203:18:4"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"15173:6:4"},{"kind":"number","nodeType":"YulLiteral","src":"15181:18:4","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"15170:2:4"},"nodeType":"YulFunctionCall","src":"15170:30:4"},"nodeType":"YulIf","src":"15167:2:4"},{"nodeType":"YulAssignment","src":"15233:37:4","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"15263:6:4"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"15241:21:4"},"nodeType":"YulFunctionCall","src":"15241:29:4"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"15233:4:4"}]},{"nodeType":"YulAssignment","src":"15307:23:4","value":{"arguments":[{"name":"size","nodeType":"YulIdentifier","src":"15319:4:4"},{"kind":"number","nodeType":"YulLiteral","src":"15325:4:4","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15315:3:4"},"nodeType":"YulFunctionCall","src":"15315:15:4"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"15307:4:4"}]}]},"name":"array_allocation_size_t_string_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"length","nodeType":"YulTypedName","src":"15080:6:4","type":""}],"returnVariables":[{"name":"size","nodeType":"YulTypedName","src":"15091:4:4","type":""}],"src":"15029:308:4"},{"body":{"nodeType":"YulBlock","src":"15413:28:4","statements":[{"nodeType":"YulAssignment","src":"15423:11:4","value":{"name":"ptr","nodeType":"YulIdentifier","src":"15431:3:4"},"variableNames":[{"name":"data","nodeType":"YulIdentifier","src":"15423:4:4"}]}]},"name":"array_dataslot_t_array$_t_bytes32_$2_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nodeType":"YulTypedName","src":"15400:3:4","type":""}],"returnVariables":[{"name":"data","nodeType":"YulTypedName","src":"15408:4:4","type":""}],"src":"15343:98:4"},{"body":{"nodeType":"YulBlock","src":"15517:28:4","statements":[{"nodeType":"YulAssignment","src":"15527:11:4","value":{"name":"ptr","nodeType":"YulIdentifier","src":"15535:3:4"},"variableNames":[{"name":"data","nodeType":"YulIdentifier","src":"15527:4:4"}]}]},"name":"array_dataslot_t_array$_t_uint256_$2_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nodeType":"YulTypedName","src":"15504:3:4","type":""}],"returnVariables":[{"name":"data","nodeType":"YulTypedName","src":"15512:4:4","type":""}],"src":"15447:98:4"},{"body":{"nodeType":"YulBlock","src":"15623:32:4","statements":[{"nodeType":"YulAssignment","src":"15634:14:4","value":{"kind":"number","nodeType":"YulLiteral","src":"15644:4:4","type":"","value":"0x02"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"15634:6:4"}]}]},"name":"array_length_t_array$_t_bytes32_$2_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"15606:5:4","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"15616:6:4","type":""}],"src":"15551:104:4"},{"body":{"nodeType":"YulBlock","src":"15733:32:4","statements":[{"nodeType":"YulAssignment","src":"15744:14:4","value":{"kind":"number","nodeType":"YulLiteral","src":"15754:4:4","type":"","value":"0x02"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"15744:6:4"}]}]},"name":"array_length_t_array$_t_uint256_$2_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"15716:5:4","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"15726:6:4","type":""}],"src":"15661:104:4"},{"body":{"nodeType":"YulBlock","src":"15829:40:4","statements":[{"nodeType":"YulAssignment","src":"15840:22:4","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"15856:5:4"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"15850:5:4"},"nodeType":"YulFunctionCall","src":"15850:12:4"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"15840:6:4"}]}]},"name":"array_length_t_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"15812:5:4","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"15822:6:4","type":""}],"src":"15771:98:4"},{"body":{"nodeType":"YulBlock","src":"15934:40:4","statements":[{"nodeType":"YulAssignment","src":"15945:22:4","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"15961:5:4"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"15955:5:4"},"nodeType":"YulFunctionCall","src":"15955:12:4"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"15945:6:4"}]}]},"name":"array_length_t_string_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"15917:5:4","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"15927:6:4","type":""}],"src":"15875:99:4"},{"body":{"nodeType":"YulBlock","src":"16053:38:4","statements":[{"nodeType":"YulAssignment","src":"16063:22:4","value":{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"16075:3:4"},{"kind":"number","nodeType":"YulLiteral","src":"16080:4:4","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16071:3:4"},"nodeType":"YulFunctionCall","src":"16071:14:4"},"variableNames":[{"name":"next","nodeType":"YulIdentifier","src":"16063:4:4"}]}]},"name":"array_nextElement_t_array$_t_bytes32_$2_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nodeType":"YulTypedName","src":"16040:3:4","type":""}],"returnVariables":[{"name":"next","nodeType":"YulTypedName","src":"16048:4:4","type":""}],"src":"15980:111:4"},{"body":{"nodeType":"YulBlock","src":"16170:38:4","statements":[{"nodeType":"YulAssignment","src":"16180:22:4","value":{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"16192:3:4"},{"kind":"number","nodeType":"YulLiteral","src":"16197:4:4","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16188:3:4"},"nodeType":"YulFunctionCall","src":"16188:14:4"},"variableNames":[{"name":"next","nodeType":"YulIdentifier","src":"16180:4:4"}]}]},"name":"array_nextElement_t_array$_t_uint256_$2_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nodeType":"YulTypedName","src":"16157:3:4","type":""}],"returnVariables":[{"name":"next","nodeType":"YulTypedName","src":"16165:4:4","type":""}],"src":"16097:111:4"},{"body":{"nodeType":"YulBlock","src":"16323:34:4","statements":[{"nodeType":"YulAssignment","src":"16333:18:4","value":{"name":"pos","nodeType":"YulIdentifier","src":"16348:3:4"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"16333:11:4"}]}]},"name":"array_storeLengthForEncoding_t_array$_t_bytes32_$2_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"16295:3:4","type":""},{"name":"length","nodeType":"YulTypedName","src":"16300:6:4","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"16311:11:4","type":""}],"src":"16214:143:4"},{"body":{"nodeType":"YulBlock","src":"16472:34:4","statements":[{"nodeType":"YulAssignment","src":"16482:18:4","value":{"name":"pos","nodeType":"YulIdentifier","src":"16497:3:4"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"16482:11:4"}]}]},"name":"array_storeLengthForEncoding_t_array$_t_uint256_$2_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"16444:3:4","type":""},{"name":"length","nodeType":"YulTypedName","src":"16449:6:4","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"16460:11:4","type":""}],"src":"16363:143:4"},{"body":{"nodeType":"YulBlock","src":"16607:73:4","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"16624:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"16629:6:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"16617:6:4"},"nodeType":"YulFunctionCall","src":"16617:19:4"},"nodeType":"YulExpressionStatement","src":"16617:19:4"},{"nodeType":"YulAssignment","src":"16645:29:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"16664:3:4"},{"kind":"number","nodeType":"YulLiteral","src":"16669:4:4","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16660:3:4"},"nodeType":"YulFunctionCall","src":"16660:14:4"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"16645:11:4"}]}]},"name":"array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"16579:3:4","type":""},{"name":"length","nodeType":"YulTypedName","src":"16584:6:4","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"16595:11:4","type":""}],"src":"16512:168:4"},{"body":{"nodeType":"YulBlock","src":"16799:34:4","statements":[{"nodeType":"YulAssignment","src":"16809:18:4","value":{"name":"pos","nodeType":"YulIdentifier","src":"16824:3:4"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"16809:11:4"}]}]},"name":"array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"16771:3:4","type":""},{"name":"length","nodeType":"YulTypedName","src":"16776:6:4","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"16787:11:4","type":""}],"src":"16686:147:4"},{"body":{"nodeType":"YulBlock","src":"16935:73:4","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"16952:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"16957:6:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"16945:6:4"},"nodeType":"YulFunctionCall","src":"16945:19:4"},"nodeType":"YulExpressionStatement","src":"16945:19:4"},{"nodeType":"YulAssignment","src":"16973:29:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"16992:3:4"},{"kind":"number","nodeType":"YulLiteral","src":"16997:4:4","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16988:3:4"},"nodeType":"YulFunctionCall","src":"16988:14:4"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"16973:11:4"}]}]},"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"16907:3:4","type":""},{"name":"length","nodeType":"YulTypedName","src":"16912:6:4","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"16923:11:4","type":""}],"src":"16839:169:4"},{"body":{"nodeType":"YulBlock","src":"17128:34:4","statements":[{"nodeType":"YulAssignment","src":"17138:18:4","value":{"name":"pos","nodeType":"YulIdentifier","src":"17153:3:4"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"17138:11:4"}]}]},"name":"array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"17100:3:4","type":""},{"name":"length","nodeType":"YulTypedName","src":"17105:6:4","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"17116:11:4","type":""}],"src":"17014:148:4"},{"body":{"nodeType":"YulBlock","src":"17213:51:4","statements":[{"nodeType":"YulAssignment","src":"17223:35:4","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"17252:5:4"}],"functionName":{"name":"cleanup_t_uint160","nodeType":"YulIdentifier","src":"17234:17:4"},"nodeType":"YulFunctionCall","src":"17234:24:4"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"17223:7:4"}]}]},"name":"cleanup_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"17195:5:4","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"17205:7:4","type":""}],"src":"17168:96:4"},{"body":{"nodeType":"YulBlock","src":"17315:32:4","statements":[{"nodeType":"YulAssignment","src":"17325:16:4","value":{"name":"value","nodeType":"YulIdentifier","src":"17336:5:4"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"17325:7:4"}]}]},"name":"cleanup_t_bytes32","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"17297:5:4","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"17307:7:4","type":""}],"src":"17270:77:4"},{"body":{"nodeType":"YulBlock","src":"17397:32:4","statements":[{"nodeType":"YulAssignment","src":"17407:16:4","value":{"name":"value","nodeType":"YulIdentifier","src":"17418:5:4"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"17407:7:4"}]}]},"name":"cleanup_t_int256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"17379:5:4","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"17389:7:4","type":""}],"src":"17353:76:4"},{"body":{"nodeType":"YulBlock","src":"17480:81:4","statements":[{"nodeType":"YulAssignment","src":"17490:65:4","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"17505:5:4"},{"kind":"number","nodeType":"YulLiteral","src":"17512:42:4","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"17501:3:4"},"nodeType":"YulFunctionCall","src":"17501:54:4"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"17490:7:4"}]}]},"name":"cleanup_t_uint160","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"17462:5:4","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"17472:7:4","type":""}],"src":"17435:126:4"},{"body":{"nodeType":"YulBlock","src":"17612:32:4","statements":[{"nodeType":"YulAssignment","src":"17622:16:4","value":{"name":"value","nodeType":"YulIdentifier","src":"17633:5:4"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"17622:7:4"}]}]},"name":"cleanup_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"17594:5:4","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"17604:7:4","type":""}],"src":"17567:77:4"},{"body":{"nodeType":"YulBlock","src":"17701:103:4","statements":[{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"17724:3:4"},{"name":"src","nodeType":"YulIdentifier","src":"17729:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"17734:6:4"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"17711:12:4"},"nodeType":"YulFunctionCall","src":"17711:30:4"},"nodeType":"YulExpressionStatement","src":"17711:30:4"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"17782:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"17787:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17778:3:4"},"nodeType":"YulFunctionCall","src":"17778:16:4"},{"kind":"number","nodeType":"YulLiteral","src":"17796:1:4","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17771:6:4"},"nodeType":"YulFunctionCall","src":"17771:27:4"},"nodeType":"YulExpressionStatement","src":"17771:27:4"}]},"name":"copy_calldata_to_memory","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"17683:3:4","type":""},{"name":"dst","nodeType":"YulTypedName","src":"17688:3:4","type":""},{"name":"length","nodeType":"YulTypedName","src":"17693:6:4","type":""}],"src":"17650:154:4"},{"body":{"nodeType":"YulBlock","src":"17859:258:4","statements":[{"nodeType":"YulVariableDeclaration","src":"17869:10:4","value":{"kind":"number","nodeType":"YulLiteral","src":"17878:1:4","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"17873:1:4","type":""}]},{"body":{"nodeType":"YulBlock","src":"17938:63:4","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"17963:3:4"},{"name":"i","nodeType":"YulIdentifier","src":"17968:1:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17959:3:4"},"nodeType":"YulFunctionCall","src":"17959:11:4"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"17982:3:4"},{"name":"i","nodeType":"YulIdentifier","src":"17987:1:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17978:3:4"},"nodeType":"YulFunctionCall","src":"17978:11:4"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"17972:5:4"},"nodeType":"YulFunctionCall","src":"17972:18:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17952:6:4"},"nodeType":"YulFunctionCall","src":"17952:39:4"},"nodeType":"YulExpressionStatement","src":"17952:39:4"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"17899:1:4"},{"name":"length","nodeType":"YulIdentifier","src":"17902:6:4"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"17896:2:4"},"nodeType":"YulFunctionCall","src":"17896:13:4"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"17910:19:4","statements":[{"nodeType":"YulAssignment","src":"17912:15:4","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"17921:1:4"},{"kind":"number","nodeType":"YulLiteral","src":"17924:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17917:3:4"},"nodeType":"YulFunctionCall","src":"17917:10:4"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"17912:1:4"}]}]},"pre":{"nodeType":"YulBlock","src":"17892:3:4","statements":[]},"src":"17888:113:4"},{"body":{"nodeType":"YulBlock","src":"18035:76:4","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"18085:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"18090:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18081:3:4"},"nodeType":"YulFunctionCall","src":"18081:16:4"},{"kind":"number","nodeType":"YulLiteral","src":"18099:1:4","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"18074:6:4"},"nodeType":"YulFunctionCall","src":"18074:27:4"},"nodeType":"YulExpressionStatement","src":"18074:27:4"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"18016:1:4"},{"name":"length","nodeType":"YulIdentifier","src":"18019:6:4"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"18013:2:4"},"nodeType":"YulFunctionCall","src":"18013:13:4"},"nodeType":"YulIf","src":"18010:2:4"}]},"name":"copy_memory_to_memory","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"17841:3:4","type":""},{"name":"dst","nodeType":"YulTypedName","src":"17846:3:4","type":""},{"name":"length","nodeType":"YulTypedName","src":"17851:6:4","type":""}],"src":"17810:307:4"},{"body":{"nodeType":"YulBlock","src":"18166:238:4","statements":[{"nodeType":"YulVariableDeclaration","src":"18176:58:4","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"18198:6:4"},{"arguments":[{"name":"size","nodeType":"YulIdentifier","src":"18228:4:4"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"18206:21:4"},"nodeType":"YulFunctionCall","src":"18206:27:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18194:3:4"},"nodeType":"YulFunctionCall","src":"18194:40:4"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"18180:10:4","type":""}]},{"body":{"nodeType":"YulBlock","src":"18345:22:4","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"18347:16:4"},"nodeType":"YulFunctionCall","src":"18347:18:4"},"nodeType":"YulExpressionStatement","src":"18347:18:4"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"18288:10:4"},{"kind":"number","nodeType":"YulLiteral","src":"18300:18:4","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"18285:2:4"},"nodeType":"YulFunctionCall","src":"18285:34:4"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"18324:10:4"},{"name":"memPtr","nodeType":"YulIdentifier","src":"18336:6:4"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"18321:2:4"},"nodeType":"YulFunctionCall","src":"18321:22:4"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"18282:2:4"},"nodeType":"YulFunctionCall","src":"18282:62:4"},"nodeType":"YulIf","src":"18279:2:4"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"18383:2:4","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"18387:10:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"18376:6:4"},"nodeType":"YulFunctionCall","src":"18376:22:4"},"nodeType":"YulExpressionStatement","src":"18376:22:4"}]},"name":"finalize_allocation","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"18152:6:4","type":""},{"name":"size","nodeType":"YulTypedName","src":"18160:4:4","type":""}],"src":"18123:281:4"},{"body":{"nodeType":"YulBlock","src":"18438:152:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"18455:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"18458:77:4","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"18448:6:4"},"nodeType":"YulFunctionCall","src":"18448:88:4"},"nodeType":"YulExpressionStatement","src":"18448:88:4"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"18552:1:4","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"18555:4:4","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"18545:6:4"},"nodeType":"YulFunctionCall","src":"18545:15:4"},"nodeType":"YulExpressionStatement","src":"18545:15:4"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"18576:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"18579:4:4","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"18569:6:4"},"nodeType":"YulFunctionCall","src":"18569:15:4"},"nodeType":"YulExpressionStatement","src":"18569:15:4"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"18410:180:4"},{"body":{"nodeType":"YulBlock","src":"18644:54:4","statements":[{"nodeType":"YulAssignment","src":"18654:38:4","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"18672:5:4"},{"kind":"number","nodeType":"YulLiteral","src":"18679:2:4","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18668:3:4"},"nodeType":"YulFunctionCall","src":"18668:14:4"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"18688:2:4","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"18684:3:4"},"nodeType":"YulFunctionCall","src":"18684:7:4"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"18664:3:4"},"nodeType":"YulFunctionCall","src":"18664:28:4"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"18654:6:4"}]}]},"name":"round_up_to_mul_of_32","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"18627:5:4","type":""}],"returnVariables":[{"name":"result","nodeType":"YulTypedName","src":"18637:6:4","type":""}],"src":"18596:102:4"},{"body":{"nodeType":"YulBlock","src":"18747:79:4","statements":[{"body":{"nodeType":"YulBlock","src":"18804:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"18813:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"18816:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"18806:6:4"},"nodeType":"YulFunctionCall","src":"18806:12:4"},"nodeType":"YulExpressionStatement","src":"18806:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"18770:5:4"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"18795:5:4"}],"functionName":{"name":"cleanup_t_address","nodeType":"YulIdentifier","src":"18777:17:4"},"nodeType":"YulFunctionCall","src":"18777:24:4"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"18767:2:4"},"nodeType":"YulFunctionCall","src":"18767:35:4"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"18760:6:4"},"nodeType":"YulFunctionCall","src":"18760:43:4"},"nodeType":"YulIf","src":"18757:2:4"}]},"name":"validator_revert_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"18740:5:4","type":""}],"src":"18704:122:4"},{"body":{"nodeType":"YulBlock","src":"18875:79:4","statements":[{"body":{"nodeType":"YulBlock","src":"18932:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"18941:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"18944:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"18934:6:4"},"nodeType":"YulFunctionCall","src":"18934:12:4"},"nodeType":"YulExpressionStatement","src":"18934:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"18898:5:4"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"18923:5:4"}],"functionName":{"name":"cleanup_t_bytes32","nodeType":"YulIdentifier","src":"18905:17:4"},"nodeType":"YulFunctionCall","src":"18905:24:4"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"18895:2:4"},"nodeType":"YulFunctionCall","src":"18895:35:4"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"18888:6:4"},"nodeType":"YulFunctionCall","src":"18888:43:4"},"nodeType":"YulIf","src":"18885:2:4"}]},"name":"validator_revert_t_bytes32","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"18868:5:4","type":""}],"src":"18832:122:4"},{"body":{"nodeType":"YulBlock","src":"19002:78:4","statements":[{"body":{"nodeType":"YulBlock","src":"19058:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"19067:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"19070:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"19060:6:4"},"nodeType":"YulFunctionCall","src":"19060:12:4"},"nodeType":"YulExpressionStatement","src":"19060:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"19025:5:4"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"19049:5:4"}],"functionName":{"name":"cleanup_t_int256","nodeType":"YulIdentifier","src":"19032:16:4"},"nodeType":"YulFunctionCall","src":"19032:23:4"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"19022:2:4"},"nodeType":"YulFunctionCall","src":"19022:34:4"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"19015:6:4"},"nodeType":"YulFunctionCall","src":"19015:42:4"},"nodeType":"YulIf","src":"19012:2:4"}]},"name":"validator_revert_t_int256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"18995:5:4","type":""}],"src":"18960:120:4"},{"body":{"nodeType":"YulBlock","src":"19129:79:4","statements":[{"body":{"nodeType":"YulBlock","src":"19186:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"19195:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"19198:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"19188:6:4"},"nodeType":"YulFunctionCall","src":"19188:12:4"},"nodeType":"YulExpressionStatement","src":"19188:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"19152:5:4"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"19177:5:4"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"19159:17:4"},"nodeType":"YulFunctionCall","src":"19159:24:4"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"19149:2:4"},"nodeType":"YulFunctionCall","src":"19149:35:4"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"19142:6:4"},"nodeType":"YulFunctionCall","src":"19142:43:4"},"nodeType":"YulIf","src":"19139:2:4"}]},"name":"validator_revert_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"19122:5:4","type":""}],"src":"19086:122:4"}]},"contents":"{\n\n function abi_decode_available_length_t_bytes_memory_ptr(src, length, end) -> array {\n array := allocate_memory(array_allocation_size_t_bytes_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_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_bytes32(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_bytes32(value)\n }\n\n // bytes\n function abi_decode_t_bytes_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_bytes_memory_ptr(add(offset, 0x20), length, end)\n }\n\n function abi_decode_t_int256(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_int256(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_bytes32(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_bytes32(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_bytes32t_bytes32(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_bytes32(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_bytes32(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_bytes_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_bytes_memory_ptr(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_int256(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_int256(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_decode_tuple_t_uint256(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_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_uint256t_string_memory_ptr(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_uint256(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := calldataload(add(headStart, 32))\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n\n value1 := abi_decode_t_string_memory_ptr(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_uint256t_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_uint256(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_uint256t_uint256t_string_memory_ptrt_string_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3 {\n if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint256(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 let offset := calldataload(add(headStart, 64))\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n\n value2 := abi_decode_t_string_memory_ptr(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := calldataload(add(headStart, 96))\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n\n value3 := abi_decode_t_string_memory_ptr(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encodeUpdatedPos_t_bytes32_to_t_bytes32(value0, pos) -> updatedPos {\n abi_encode_t_bytes32_to_t_bytes32(value0, pos)\n updatedPos := add(pos, 0x20)\n }\n\n function abi_encodeUpdatedPos_t_uint256_to_t_uint256(value0, pos) -> updatedPos {\n abi_encode_t_uint256_to_t_uint256(value0, pos)\n updatedPos := add(pos, 0x20)\n }\n\n function abi_encode_t_address_to_t_address_fromStack(value, pos) {\n mstore(pos, cleanup_t_address(value))\n }\n\n // bytes32[2] -> bytes32[2]\n function abi_encode_t_array$_t_bytes32_$2_memory_ptr_to_t_array$_t_bytes32_$2_memory_ptr_fromStack(value, pos) {\n let length := array_length_t_array$_t_bytes32_$2_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_array$_t_bytes32_$2_memory_ptr_fromStack(pos, length)\n let baseRef := array_dataslot_t_array$_t_bytes32_$2_memory_ptr(value)\n let srcPtr := baseRef\n for { let i := 0 } lt(i, length) { i := add(i, 1) }\n {\n let elementValue0 := mload(srcPtr)\n pos := abi_encodeUpdatedPos_t_bytes32_to_t_bytes32(elementValue0, pos)\n srcPtr := array_nextElement_t_array$_t_bytes32_$2_memory_ptr(srcPtr)\n }\n\n }\n\n // uint256[2] -> uint256[2]\n function abi_encode_t_array$_t_uint256_$2_memory_ptr_to_t_array$_t_uint256_$2_memory_ptr_fromStack(value, pos) {\n let length := array_length_t_array$_t_uint256_$2_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_array$_t_uint256_$2_memory_ptr_fromStack(pos, length)\n let baseRef := array_dataslot_t_array$_t_uint256_$2_memory_ptr(value)\n let srcPtr := baseRef\n for { let i := 0 } lt(i, length) { i := add(i, 1) }\n {\n let elementValue0 := mload(srcPtr)\n pos := abi_encodeUpdatedPos_t_uint256_to_t_uint256(elementValue0, pos)\n srcPtr := array_nextElement_t_array$_t_uint256_$2_memory_ptr(srcPtr)\n }\n\n }\n\n function abi_encode_t_bytes32_to_t_bytes32(value, pos) {\n mstore(pos, cleanup_t_bytes32(value))\n }\n\n function abi_encode_t_bytes32_to_t_bytes32_fromStack(value, pos) {\n mstore(pos, cleanup_t_bytes32(value))\n }\n\n function abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack(value, pos) -> end {\n let length := array_length_t_bytes_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_bytes_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_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack(value, pos) -> end {\n let length := array_length_t_bytes_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack(pos, length)\n copy_memory_to_memory(add(value, 0x20), pos, length)\n end := add(pos, length)\n }\n\n function abi_encode_t_int256_to_t_int256_fromStack(value, pos) {\n mstore(pos, cleanup_t_int256(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_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack(value, pos) -> end {\n let length := array_length_t_string_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack(pos, length)\n copy_memory_to_memory(add(value, 0x20), pos, length)\n end := add(pos, length)\n }\n\n // struct Events.Struct -> struct Events.Struct\n function abi_encode_t_struct$_Struct_$47_memory_ptr_to_t_struct$_Struct_$47_memory_ptr_fromStack(value, pos) {\n let tail := add(pos, 0x40)\n\n {\n // u\n\n let memberValue0 := mload(add(value, 0x00))\n abi_encode_t_uint256_to_t_uint256(memberValue0, add(pos, 0x00))\n }\n\n {\n // v\n\n let memberValue0 := mload(add(value, 0x20))\n abi_encode_t_uint256_to_t_uint256(memberValue0, add(pos, 0x20))\n }\n\n }\n\n function abi_encode_t_uint256_to_t_uint256(value, pos) {\n mstore(pos, cleanup_t_uint256(value))\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_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos , value0) -> end {\n\n pos := abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack(value0, pos)\n\n end := pos\n }\n\n function abi_encode_tuple_packed_t_string_memory_ptr__to_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos , value0) -> end {\n\n pos := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack(value0, pos)\n\n end := pos\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_array$_t_bytes32_$2_memory_ptr__to_t_array$_t_bytes32_$2_memory_ptr__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_array$_t_bytes32_$2_memory_ptr_to_t_array$_t_bytes32_$2_memory_ptr_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_encode_tuple_t_array$_t_uint256_$2_memory_ptr__to_t_array$_t_uint256_$2_memory_ptr__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_array$_t_uint256_$2_memory_ptr_to_t_array$_t_uint256_$2_memory_ptr_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_bytes32_to_t_bytes32_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_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_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack(value0, tail)\n\n }\n\n function abi_encode_tuple_t_int256__to_t_int256__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_int256_to_t_int256_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_string_memory_ptr_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr__fromStack_reversed(headStart , value1, value0) -> tail {\n tail := add(headStart, 64)\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 mstore(add(headStart, 32), sub(tail, headStart))\n tail := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack(value1, tail)\n\n }\n\n function abi_encode_tuple_t_struct$_Struct_$47_memory_ptr__to_t_struct$_Struct_$47_memory_ptr__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_struct$_Struct_$47_memory_ptr_to_t_struct$_Struct_$47_memory_ptr_fromStack(value0, add(headStart, 0))\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_bytes_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_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_dataslot_t_array$_t_bytes32_$2_memory_ptr(ptr) -> data {\n data := ptr\n\n }\n\n function array_dataslot_t_array$_t_uint256_$2_memory_ptr(ptr) -> data {\n data := ptr\n\n }\n\n function array_length_t_array$_t_bytes32_$2_memory_ptr(value) -> length {\n\n length := 0x02\n\n }\n\n function array_length_t_array$_t_uint256_$2_memory_ptr(value) -> length {\n\n length := 0x02\n\n }\n\n function array_length_t_bytes_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function array_length_t_string_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function array_nextElement_t_array$_t_bytes32_$2_memory_ptr(ptr) -> next {\n next := add(ptr, 0x20)\n }\n\n function array_nextElement_t_array$_t_uint256_$2_memory_ptr(ptr) -> next {\n next := add(ptr, 0x20)\n }\n\n function array_storeLengthForEncoding_t_array$_t_bytes32_$2_memory_ptr_fromStack(pos, length) -> updated_pos {\n updated_pos := pos\n }\n\n function array_storeLengthForEncoding_t_array$_t_uint256_$2_memory_ptr_fromStack(pos, length) -> updated_pos {\n updated_pos := pos\n }\n\n function array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack(pos, length) -> updated_pos {\n updated_pos := pos\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 array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack(pos, length) -> updated_pos {\n updated_pos := pos\n }\n\n function cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function cleanup_t_bytes32(value) -> cleaned {\n cleaned := value\n }\n\n function cleanup_t_int256(value) -> cleaned {\n cleaned := 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 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_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 validator_revert_t_address(value) {\n if iszero(eq(value, cleanup_t_address(value))) { revert(0, 0) }\n }\n\n function validator_revert_t_bytes32(value) {\n if iszero(eq(value, cleanup_t_bytes32(value))) { revert(0, 0) }\n }\n\n function validator_revert_t_int256(value) {\n if iszero(eq(value, cleanup_t_int256(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":4,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b506004361061012c5760003560e01c80638a618191116100ad578063c76f063511610071578063c76f0635146102c3578063cc07e605146102df578063d3931e57146102fb578063db6cdf6814610317578063ec5c3ede146103215761012c565b80638a6181911461024957806390b37ea214610265578063919402441461026f5780639f31a2231461028b578063c0cd80e6146102a75761012c565b806333311ef3116100f457806333311ef3146101bd57806338393646146101d9578063443690a0146101f5578063532b9cce14610211578063813a8cf51461022d5761012c565b8063048858e5146101315780630c0c941a1461014d57806317aba537146101695780632536f127146101855780632785f8d6146101a1575b600080fd5b61014b600480360381019061014691906109f0565b61033d565b005b61016760048036038101906101629190610b7d565b61036d565b005b610183600480360381019061017e9190610b7d565b6103df565b005b61019f600480360381019061019a9190610abf565b61042e565b005b6101bb60048036038101906101b69190610b29565b610468565b005b6101d760048036038101906101d291906109f0565b6104da565b005b6101f360048036038101906101ee9190610b7d565b610514565b005b61020f600480360381019061020a9190610abf565b610551565b005b61022b60048036038101906102269190610bb9565b610596565b005b61024760048036038101906102429190610b00565b61060e565b005b610263600480360381019061025e9190610a96565b61061a565b005b61026d610654565b005b61028960048036038101906102849190610b00565b610682565b005b6102a560048036038101906102a09190610b7d565b6106bc565b005b6102c160048036038101906102bc9190610a19565b61070b565b005b6102dd60048036038101906102d89190610a55565b61075a565b005b6102f960048036038101906102f49190610a55565b610794565b005b61031560048036038101906103109190610b00565b6107d9565b005b61031f610867565b005b61033b600480360381019061033691906109c7565b610869565b005b807fb421ad092cfce88844bfbfaa9654e824ba0ee5b6b0a220f822406b62c05364c060405160405180910390a250565b7f97535d4b4270d3f1a499c85ae918ba6798cbdcc83a26529331a25dcd2194cfce8260405161039c9190610fd2565b60405180910390a17f97535d4b4270d3f1a499c85ae918ba6798cbdcc83a26529331a25dcd2194cfce816040516103d39190610fd2565b60405180910390a15050565b7f73e687a2685d698f7acf934b4929a29ae783a4bcb640d71c5d6994d74e2380ca6040518060400160405280848152602001838152506040516104229190610eeb565b60405180910390a15050565b7f9b7ddcbde8dac280e036f87acafec72f9eee31a640c08087e8439139c7e5b52a8160405161045d9190610f5e565b60405180910390a150565b7f9b7ddcbde8dac280e036f87acafec72f9eee31a640c08087e8439139c7e5b52a816040516104979190610f5e565b60405180910390a17f97535d4b4270d3f1a499c85ae918ba6798cbdcc83a26529331a25dcd2194cfce826040516104ce9190610fd2565b60405180910390a15050565b7f425517d2678bbca3c0d9d8d9fdbec34c81194e7935ed48a6a19f97db93bcef6a816040516105099190610f06565b60405180910390a150565b7f8b268bb46a33a55bece084a8b6858719c9f2985c860fa06c155a341df0b73c0e8282604051610545929190610fed565b60405180910390a15050565b8060405161055f9190610e9e565b60405180910390207fd9ca28363e2d8739e0e9c4fea1d2df98d1bd7d9d915d00e5fccbf78c0fddcdb060405160405180910390a250565b7f8b268bb46a33a55bece084a8b6858719c9f2985c860fa06c155a341df0b73c0e84846040516105c7929190610fed565b60405180910390a17f1f1a2c748505fcd8f16a719fa88d517b1b41111c4f5e07bb28311cdc4d1515388282604051610600929190610f80565b60405180910390a150505050565b61061781610682565b50565b7f39feab747bb4f579008aea963d7ebac85ad410bb83ee663a42af01464654e93f816040516106499190610f43565b60405180910390a150565b7f917b7bf7ab24d61500cb699921a3a1cc22b8833da6484fea20f262b2610604af60405160405180910390a1565b7f97535d4b4270d3f1a499c85ae918ba6798cbdcc83a26529331a25dcd2194cfce816040516106b19190610fd2565b60405180910390a150565b7fd59ab87bf64b9d737998f3dc70c649d16b135f085029c1666ca0634beb75a7736040518060400160405280848152602001838152506040516106ff9190610fb7565b60405180910390a15050565b7f15100859f3ffe92910dc3f11ed3db4e9cf32ff657c05066e44be4e69b2b488bc60405180604001604052808481526020018381525060405161074e9190610ed0565b60405180910390a15050565b7f433470edcdd53b50238be4d8e048e2baa269af5be2a4e29515c138883c745aa8816040516107899190610f21565b60405180910390a150565b806040516107a29190610e87565b60405180910390207f160e4655df40987951accf7c731d5c504f77d20c139bd73032821b91a426dd9860405160405180910390a250565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166391940244826040518263ffffffff1660e01b81526004016108329190610fd2565b600060405180830381600087803b15801561084c57600080fd5b505af1158015610860573d6000803e3d6000fd5b5050505050565b565b7f336bcd960d2e5a52cef6094ba33727f309dc2c675eebefc6d9b6b6d79abac877816040516108989190610eb5565b60405180910390a150565b60006108b66108b18461103b565b611016565b9050828152602081018484840111156108ce57600080fd5b6108d9848285611195565b509392505050565b60006108f46108ef8461106c565b611016565b90508281526020810184848401111561090c57600080fd5b610917848285611195565b509392505050565b60008135905061092e81611248565b92915050565b6000813590506109438161125f565b92915050565b600082601f83011261095a57600080fd5b813561096a8482602086016108a3565b91505092915050565b60008135905061098281611276565b92915050565b600082601f83011261099957600080fd5b81356109a98482602086016108e1565b91505092915050565b6000813590506109c18161128d565b92915050565b6000602082840312156109d957600080fd5b60006109e78482850161091f565b91505092915050565b600060208284031215610a0257600080fd5b6000610a1084828501610934565b91505092915050565b60008060408385031215610a2c57600080fd5b6000610a3a85828601610934565b9250506020610a4b85828601610934565b9150509250929050565b600060208284031215610a6757600080fd5b600082013567ffffffffffffffff811115610a8157600080fd5b610a8d84828501610949565b91505092915050565b600060208284031215610aa857600080fd5b6000610ab684828501610973565b91505092915050565b600060208284031215610ad157600080fd5b600082013567ffffffffffffffff811115610aeb57600080fd5b610af784828501610988565b91505092915050565b600060208284031215610b1257600080fd5b6000610b20848285016109b2565b91505092915050565b60008060408385031215610b3c57600080fd5b6000610b4a858286016109b2565b925050602083013567ffffffffffffffff811115610b6757600080fd5b610b7385828601610988565b9150509250929050565b60008060408385031215610b9057600080fd5b6000610b9e858286016109b2565b9250506020610baf858286016109b2565b9150509250929050565b60008060008060808587031215610bcf57600080fd5b6000610bdd878288016109b2565b9450506020610bee878288016109b2565b935050604085013567ffffffffffffffff811115610c0b57600080fd5b610c1787828801610988565b925050606085013567ffffffffffffffff811115610c3457600080fd5b610c4087828801610988565b91505092959194509250565b6000610c588383610d39565b60208301905092915050565b6000610c708383610e69565b60208301905092915050565b610c8581611145565b82525050565b610c94816110b1565b610c9e81846110f7565b9250610ca98261109d565b8060005b83811015610cda578151610cc18782610c4c565b9650610ccc836110dd565b925050600181019050610cad565b505050505050565b610ceb816110bc565b610cf58184611102565b9250610d00826110a7565b8060005b83811015610d31578151610d188782610c64565b9650610d23836110ea565b925050600181019050610d04565b505050505050565b610d4281611157565b82525050565b610d5181611157565b82525050565b6000610d62826110c7565b610d6c818561110d565b9350610d7c8185602086016111a4565b610d8581611237565b840191505092915050565b6000610d9b826110c7565b610da5818561111e565b9350610db58185602086016111a4565b80840191505092915050565b610dca81611161565b82525050565b6000610ddb826110d2565b610de58185611129565b9350610df58185602086016111a4565b610dfe81611237565b840191505092915050565b6000610e14826110d2565b610e1e818561113a565b9350610e2e8185602086016111a4565b80840191505092915050565b604082016000820151610e506000850182610e69565b506020820151610e636020850182610e69565b50505050565b610e728161118b565b82525050565b610e818161118b565b82525050565b6000610e938284610d90565b915081905092915050565b6000610eaa8284610e09565b915081905092915050565b6000602082019050610eca6000830184610c7c565b92915050565b6000604082019050610ee56000830184610c8b565b92915050565b6000604082019050610f006000830184610ce2565b92915050565b6000602082019050610f1b6000830184610d48565b92915050565b60006020820190508181036000830152610f3b8184610d57565b905092915050565b6000602082019050610f586000830184610dc1565b92915050565b60006020820190508181036000830152610f788184610dd0565b905092915050565b60006040820190508181036000830152610f9a8185610dd0565b90508181036020830152610fae8184610dd0565b90509392505050565b6000604082019050610fcc6000830184610e3a565b92915050565b6000602082019050610fe76000830184610e78565b92915050565b60006040820190506110026000830185610e78565b61100f6020830184610e78565b9392505050565b6000611020611031565b905061102c82826111d7565b919050565b6000604051905090565b600067ffffffffffffffff82111561105657611055611208565b5b61105f82611237565b9050602081019050919050565b600067ffffffffffffffff82111561108757611086611208565b5b61109082611237565b9050602081019050919050565b6000819050919050565b6000819050919050565b600060029050919050565b600060029050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b600081905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b60006111508261116b565b9050919050565b6000819050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b838110156111c25780820151818401526020810190506111a7565b838111156111d1576000848401525b50505050565b6111e082611237565b810181811067ffffffffffffffff821117156111ff576111fe611208565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b61125181611145565b811461125c57600080fd5b50565b61126881611157565b811461127357600080fd5b50565b61127f81611161565b811461128a57600080fd5b50565b6112968161118b565b81146112a157600080fd5b5056fea264697066735822122073a91a740c0de3883c5213c5981d98d2396a8b60b3cf2fb364d7e4cc826a841e64736f6c63430008040033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x12C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8A618191 GT PUSH2 0xAD JUMPI DUP1 PUSH4 0xC76F0635 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xC76F0635 EQ PUSH2 0x2C3 JUMPI DUP1 PUSH4 0xCC07E605 EQ PUSH2 0x2DF JUMPI DUP1 PUSH4 0xD3931E57 EQ PUSH2 0x2FB JUMPI DUP1 PUSH4 0xDB6CDF68 EQ PUSH2 0x317 JUMPI DUP1 PUSH4 0xEC5C3EDE EQ PUSH2 0x321 JUMPI PUSH2 0x12C JUMP JUMPDEST DUP1 PUSH4 0x8A618191 EQ PUSH2 0x249 JUMPI DUP1 PUSH4 0x90B37EA2 EQ PUSH2 0x265 JUMPI DUP1 PUSH4 0x91940244 EQ PUSH2 0x26F JUMPI DUP1 PUSH4 0x9F31A223 EQ PUSH2 0x28B JUMPI DUP1 PUSH4 0xC0CD80E6 EQ PUSH2 0x2A7 JUMPI PUSH2 0x12C JUMP JUMPDEST DUP1 PUSH4 0x33311EF3 GT PUSH2 0xF4 JUMPI DUP1 PUSH4 0x33311EF3 EQ PUSH2 0x1BD JUMPI DUP1 PUSH4 0x38393646 EQ PUSH2 0x1D9 JUMPI DUP1 PUSH4 0x443690A0 EQ PUSH2 0x1F5 JUMPI DUP1 PUSH4 0x532B9CCE EQ PUSH2 0x211 JUMPI DUP1 PUSH4 0x813A8CF5 EQ PUSH2 0x22D JUMPI PUSH2 0x12C JUMP JUMPDEST DUP1 PUSH4 0x48858E5 EQ PUSH2 0x131 JUMPI DUP1 PUSH4 0xC0C941A EQ PUSH2 0x14D JUMPI DUP1 PUSH4 0x17ABA537 EQ PUSH2 0x169 JUMPI DUP1 PUSH4 0x2536F127 EQ PUSH2 0x185 JUMPI DUP1 PUSH4 0x2785F8D6 EQ PUSH2 0x1A1 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x14B PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x146 SWAP2 SWAP1 PUSH2 0x9F0 JUMP JUMPDEST PUSH2 0x33D JUMP JUMPDEST STOP JUMPDEST PUSH2 0x167 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x162 SWAP2 SWAP1 PUSH2 0xB7D JUMP JUMPDEST PUSH2 0x36D JUMP JUMPDEST STOP JUMPDEST PUSH2 0x183 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x17E SWAP2 SWAP1 PUSH2 0xB7D JUMP JUMPDEST PUSH2 0x3DF JUMP JUMPDEST STOP JUMPDEST PUSH2 0x19F PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x19A SWAP2 SWAP1 PUSH2 0xABF JUMP JUMPDEST PUSH2 0x42E JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1BB PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1B6 SWAP2 SWAP1 PUSH2 0xB29 JUMP JUMPDEST PUSH2 0x468 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1D7 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1D2 SWAP2 SWAP1 PUSH2 0x9F0 JUMP JUMPDEST PUSH2 0x4DA JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1F3 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1EE SWAP2 SWAP1 PUSH2 0xB7D JUMP JUMPDEST PUSH2 0x514 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x20F PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x20A SWAP2 SWAP1 PUSH2 0xABF JUMP JUMPDEST PUSH2 0x551 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x22B PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x226 SWAP2 SWAP1 PUSH2 0xBB9 JUMP JUMPDEST PUSH2 0x596 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x247 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x242 SWAP2 SWAP1 PUSH2 0xB00 JUMP JUMPDEST PUSH2 0x60E JUMP JUMPDEST STOP JUMPDEST PUSH2 0x263 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x25E SWAP2 SWAP1 PUSH2 0xA96 JUMP JUMPDEST PUSH2 0x61A JUMP JUMPDEST STOP JUMPDEST PUSH2 0x26D PUSH2 0x654 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x289 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x284 SWAP2 SWAP1 PUSH2 0xB00 JUMP JUMPDEST PUSH2 0x682 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2A5 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2A0 SWAP2 SWAP1 PUSH2 0xB7D JUMP JUMPDEST PUSH2 0x6BC JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2C1 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2BC SWAP2 SWAP1 PUSH2 0xA19 JUMP JUMPDEST PUSH2 0x70B JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2DD PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2D8 SWAP2 SWAP1 PUSH2 0xA55 JUMP JUMPDEST PUSH2 0x75A JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2F9 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2F4 SWAP2 SWAP1 PUSH2 0xA55 JUMP JUMPDEST PUSH2 0x794 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x315 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x310 SWAP2 SWAP1 PUSH2 0xB00 JUMP JUMPDEST PUSH2 0x7D9 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x31F PUSH2 0x867 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x33B PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x336 SWAP2 SWAP1 PUSH2 0x9C7 JUMP JUMPDEST PUSH2 0x869 JUMP JUMPDEST STOP JUMPDEST DUP1 PUSH32 0xB421AD092CFCE88844BFBFAA9654E824BA0EE5B6B0A220F822406B62C05364C0 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP JUMP JUMPDEST PUSH32 0x97535D4B4270D3F1A499C85AE918BA6798CBDCC83A26529331A25DCD2194CFCE DUP3 PUSH1 0x40 MLOAD PUSH2 0x39C SWAP2 SWAP1 PUSH2 0xFD2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH32 0x97535D4B4270D3F1A499C85AE918BA6798CBDCC83A26529331A25DCD2194CFCE DUP2 PUSH1 0x40 MLOAD PUSH2 0x3D3 SWAP2 SWAP1 PUSH2 0xFD2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH32 0x73E687A2685D698F7ACF934B4929A29AE783A4BCB640D71C5D6994D74E2380CA PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE POP PUSH1 0x40 MLOAD PUSH2 0x422 SWAP2 SWAP1 PUSH2 0xEEB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH32 0x9B7DDCBDE8DAC280E036F87ACAFEC72F9EEE31A640C08087E8439139C7E5B52A DUP2 PUSH1 0x40 MLOAD PUSH2 0x45D SWAP2 SWAP1 PUSH2 0xF5E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH32 0x9B7DDCBDE8DAC280E036F87ACAFEC72F9EEE31A640C08087E8439139C7E5B52A DUP2 PUSH1 0x40 MLOAD PUSH2 0x497 SWAP2 SWAP1 PUSH2 0xF5E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH32 0x97535D4B4270D3F1A499C85AE918BA6798CBDCC83A26529331A25DCD2194CFCE DUP3 PUSH1 0x40 MLOAD PUSH2 0x4CE SWAP2 SWAP1 PUSH2 0xFD2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH32 0x425517D2678BBCA3C0D9D8D9FDBEC34C81194E7935ED48A6A19F97DB93BCEF6A DUP2 PUSH1 0x40 MLOAD PUSH2 0x509 SWAP2 SWAP1 PUSH2 0xF06 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH32 0x8B268BB46A33A55BECE084A8B6858719C9F2985C860FA06C155A341DF0B73C0E DUP3 DUP3 PUSH1 0x40 MLOAD PUSH2 0x545 SWAP3 SWAP2 SWAP1 PUSH2 0xFED JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH2 0x55F SWAP2 SWAP1 PUSH2 0xE9E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 PUSH32 0xD9CA28363E2D8739E0E9C4FEA1D2DF98D1BD7D9D915D00E5FCCBF78C0FDDCDB0 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP JUMP JUMPDEST PUSH32 0x8B268BB46A33A55BECE084A8B6858719C9F2985C860FA06C155A341DF0B73C0E DUP5 DUP5 PUSH1 0x40 MLOAD PUSH2 0x5C7 SWAP3 SWAP2 SWAP1 PUSH2 0xFED JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH32 0x1F1A2C748505FCD8F16A719FA88D517B1B41111C4F5E07BB28311CDC4D151538 DUP3 DUP3 PUSH1 0x40 MLOAD PUSH2 0x600 SWAP3 SWAP2 SWAP1 PUSH2 0xF80 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP JUMP JUMPDEST PUSH2 0x617 DUP2 PUSH2 0x682 JUMP JUMPDEST POP JUMP JUMPDEST PUSH32 0x39FEAB747BB4F579008AEA963D7EBAC85AD410BB83EE663A42AF01464654E93F DUP2 PUSH1 0x40 MLOAD PUSH2 0x649 SWAP2 SWAP1 PUSH2 0xF43 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH32 0x917B7BF7AB24D61500CB699921A3A1CC22B8833DA6484FEA20F262B2610604AF PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMP JUMPDEST PUSH32 0x97535D4B4270D3F1A499C85AE918BA6798CBDCC83A26529331A25DCD2194CFCE DUP2 PUSH1 0x40 MLOAD PUSH2 0x6B1 SWAP2 SWAP1 PUSH2 0xFD2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH32 0xD59AB87BF64B9D737998F3DC70C649D16B135F085029C1666CA0634BEB75A773 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE POP PUSH1 0x40 MLOAD PUSH2 0x6FF SWAP2 SWAP1 PUSH2 0xFB7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH32 0x15100859F3FFE92910DC3F11ED3DB4E9CF32FF657C05066E44BE4E69B2B488BC PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE POP PUSH1 0x40 MLOAD PUSH2 0x74E SWAP2 SWAP1 PUSH2 0xED0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH32 0x433470EDCDD53B50238BE4D8E048E2BAA269AF5BE2A4E29515C138883C745AA8 DUP2 PUSH1 0x40 MLOAD PUSH2 0x789 SWAP2 SWAP1 PUSH2 0xF21 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH2 0x7A2 SWAP2 SWAP1 PUSH2 0xE87 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 PUSH32 0x160E4655DF40987951ACCF7C731D5C504F77D20C139BD73032821B91A426DD98 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x91940244 DUP3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x832 SWAP2 SWAP1 PUSH2 0xFD2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x84C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x860 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST JUMP JUMPDEST PUSH32 0x336BCD960D2E5A52CEF6094BA33727F309DC2C675EEBEFC6D9B6B6D79ABAC877 DUP2 PUSH1 0x40 MLOAD PUSH2 0x898 SWAP2 SWAP1 PUSH2 0xEB5 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8B6 PUSH2 0x8B1 DUP5 PUSH2 0x103B JUMP JUMPDEST PUSH2 0x1016 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 DUP5 DUP5 ADD GT ISZERO PUSH2 0x8CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8D9 DUP5 DUP3 DUP6 PUSH2 0x1195 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8F4 PUSH2 0x8EF DUP5 PUSH2 0x106C JUMP JUMPDEST PUSH2 0x1016 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 DUP5 DUP5 ADD GT ISZERO PUSH2 0x90C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x917 DUP5 DUP3 DUP6 PUSH2 0x1195 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x92E DUP2 PUSH2 0x1248 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x943 DUP2 PUSH2 0x125F JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x95A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x96A DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x8A3 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x982 DUP2 PUSH2 0x1276 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x999 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x9A9 DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x8E1 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x9C1 DUP2 PUSH2 0x128D JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x9D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x9E7 DUP5 DUP3 DUP6 ADD PUSH2 0x91F JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xA02 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xA10 DUP5 DUP3 DUP6 ADD PUSH2 0x934 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xA2C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xA3A DUP6 DUP3 DUP7 ADD PUSH2 0x934 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0xA4B DUP6 DUP3 DUP7 ADD PUSH2 0x934 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xA67 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xA81 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA8D DUP5 DUP3 DUP6 ADD PUSH2 0x949 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xAA8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xAB6 DUP5 DUP3 DUP6 ADD PUSH2 0x973 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xAD1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xAEB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xAF7 DUP5 DUP3 DUP6 ADD PUSH2 0x988 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xB12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xB20 DUP5 DUP3 DUP6 ADD PUSH2 0x9B2 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xB3C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xB4A DUP6 DUP3 DUP7 ADD PUSH2 0x9B2 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xB67 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB73 DUP6 DUP3 DUP7 ADD PUSH2 0x988 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xB90 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xB9E DUP6 DUP3 DUP7 ADD PUSH2 0x9B2 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0xBAF DUP6 DUP3 DUP7 ADD PUSH2 0x9B2 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0xBCF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xBDD DUP8 DUP3 DUP9 ADD PUSH2 0x9B2 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 PUSH2 0xBEE DUP8 DUP3 DUP9 ADD PUSH2 0x9B2 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xC0B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xC17 DUP8 DUP3 DUP9 ADD PUSH2 0x988 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xC34 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xC40 DUP8 DUP3 DUP9 ADD PUSH2 0x988 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC58 DUP4 DUP4 PUSH2 0xD39 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC70 DUP4 DUP4 PUSH2 0xE69 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xC85 DUP2 PUSH2 0x1145 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0xC94 DUP2 PUSH2 0x10B1 JUMP JUMPDEST PUSH2 0xC9E DUP2 DUP5 PUSH2 0x10F7 JUMP JUMPDEST SWAP3 POP PUSH2 0xCA9 DUP3 PUSH2 0x109D JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xCDA JUMPI DUP2 MLOAD PUSH2 0xCC1 DUP8 DUP3 PUSH2 0xC4C JUMP JUMPDEST SWAP7 POP PUSH2 0xCCC DUP4 PUSH2 0x10DD JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0xCAD JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0xCEB DUP2 PUSH2 0x10BC JUMP JUMPDEST PUSH2 0xCF5 DUP2 DUP5 PUSH2 0x1102 JUMP JUMPDEST SWAP3 POP PUSH2 0xD00 DUP3 PUSH2 0x10A7 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xD31 JUMPI DUP2 MLOAD PUSH2 0xD18 DUP8 DUP3 PUSH2 0xC64 JUMP JUMPDEST SWAP7 POP PUSH2 0xD23 DUP4 PUSH2 0x10EA JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0xD04 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0xD42 DUP2 PUSH2 0x1157 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0xD51 DUP2 PUSH2 0x1157 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD62 DUP3 PUSH2 0x10C7 JUMP JUMPDEST PUSH2 0xD6C DUP2 DUP6 PUSH2 0x110D JUMP JUMPDEST SWAP4 POP PUSH2 0xD7C DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x11A4 JUMP JUMPDEST PUSH2 0xD85 DUP2 PUSH2 0x1237 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD9B DUP3 PUSH2 0x10C7 JUMP JUMPDEST PUSH2 0xDA5 DUP2 DUP6 PUSH2 0x111E JUMP JUMPDEST SWAP4 POP PUSH2 0xDB5 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x11A4 JUMP JUMPDEST DUP1 DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xDCA DUP2 PUSH2 0x1161 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xDDB DUP3 PUSH2 0x10D2 JUMP JUMPDEST PUSH2 0xDE5 DUP2 DUP6 PUSH2 0x1129 JUMP JUMPDEST SWAP4 POP PUSH2 0xDF5 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x11A4 JUMP JUMPDEST PUSH2 0xDFE DUP2 PUSH2 0x1237 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE14 DUP3 PUSH2 0x10D2 JUMP JUMPDEST PUSH2 0xE1E DUP2 DUP6 PUSH2 0x113A JUMP JUMPDEST SWAP4 POP PUSH2 0xE2E DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x11A4 JUMP JUMPDEST DUP1 DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP3 ADD PUSH1 0x0 DUP3 ADD MLOAD PUSH2 0xE50 PUSH1 0x0 DUP6 ADD DUP3 PUSH2 0xE69 JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0xE63 PUSH1 0x20 DUP6 ADD DUP3 PUSH2 0xE69 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0xE72 DUP2 PUSH2 0x118B JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0xE81 DUP2 PUSH2 0x118B JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE93 DUP3 DUP5 PUSH2 0xD90 JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xEAA DUP3 DUP5 PUSH2 0xE09 JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xECA PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xC7C JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0xEE5 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xC8B JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0xF00 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xCE2 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xF1B PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xD48 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 0xF3B DUP2 DUP5 PUSH2 0xD57 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xF58 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xDC1 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 0xF78 DUP2 DUP5 PUSH2 0xDD0 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0xF9A DUP2 DUP6 PUSH2 0xDD0 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0xFAE DUP2 DUP5 PUSH2 0xDD0 JUMP JUMPDEST SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0xFCC PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xE3A JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xFE7 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xE78 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x1002 PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0xE78 JUMP JUMPDEST PUSH2 0x100F PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0xE78 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1020 PUSH2 0x1031 JUMP JUMPDEST SWAP1 POP PUSH2 0x102C DUP3 DUP3 PUSH2 0x11D7 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 0x1056 JUMPI PUSH2 0x1055 PUSH2 0x1208 JUMP JUMPDEST JUMPDEST PUSH2 0x105F DUP3 PUSH2 0x1237 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x1087 JUMPI PUSH2 0x1086 PUSH2 0x1208 JUMP JUMPDEST JUMPDEST PUSH2 0x1090 DUP3 PUSH2 0x1237 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1150 DUP3 PUSH2 0x116B JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 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 0x11C2 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x11A7 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x11D1 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x11E0 DUP3 PUSH2 0x1237 JUMP JUMPDEST DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x11FF JUMPI PUSH2 0x11FE PUSH2 0x1208 JUMP JUMPDEST JUMPDEST DUP1 PUSH1 0x40 MSTORE POP POP POP JUMP 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 PUSH2 0x1251 DUP2 PUSH2 0x1145 JUMP JUMPDEST DUP2 EQ PUSH2 0x125C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x1268 DUP2 PUSH2 0x1157 JUMP JUMPDEST DUP2 EQ PUSH2 0x1273 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x127F DUP2 PUSH2 0x1161 JUMP JUMPDEST DUP2 EQ PUSH2 0x128A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x1296 DUP2 PUSH2 0x118B JUMP JUMPDEST DUP2 EQ PUSH2 0x12A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH20 0xA91A740C0DE3883C5213C5981D98D2396A8B60B3 0xCF 0x2F 0xB3 PUSH5 0xD7E4CC826A DUP5 0x1E PUSH5 0x736F6C6343 STOP ADDMOD DIV STOP CALLER ","sourceMap":"57:2471:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1696:86;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1087:101;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2163:83;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1278:76;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1786:116;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1620:72;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1192:82;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1358:90;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1906:163;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2349:77;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;947:60;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;813:63;;;:::i;:::-;;880;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2073:86;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2250:95;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1452:73;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1529:87;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2430:96;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;779:30;;;:::i;:::-;;1011:72;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1696:86;1775:1;1753:24;;;;;;;;;;1696:86;:::o;1087:101::-;1144:14;1156:1;1144:14;;;;;;:::i;:::-;;;;;;;;1169;1181:1;1169:14;;;;;;:::i;:::-;;;;;;;;1087:101;;:::o;2163:83::-;2220:21;;;;;;;;;2235:1;2220:21;;;;2238:1;2220:21;;;;;;;;;:::i;:::-;;;;;;;;2163:83;;:::o;1278:76::-;1333:16;1347:1;1333:16;;;;;;:::i;:::-;;;;;;;;1278:76;:::o;1786:116::-;1856:16;1870:1;1856:16;;;;;;:::i;:::-;;;;;;;;1883:14;1895:1;1883:14;;;;;;:::i;:::-;;;;;;;;1786:116;;:::o;1620:72::-;1670:17;1685:1;1670:17;;;;;;:::i;:::-;;;;;;;;1620:72;:::o;1192:82::-;1248:21;1264:1;1267;1248:21;;;;;;;:::i;:::-;;;;;;;;1192:82;;:::o;1358:90::-;1441:1;1420:23;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;1358:90;:::o;1906:163::-;2009:21;2025:1;2028;2009:21;;;;;;;:::i;:::-;;;;;;;;2041:23;2059:1;2062;2041:23;;;;;;;:::i;:::-;;;;;;;;1906:163;;;;:::o;2349:77::-;2410:11;2419:1;2410:8;:11::i;:::-;2349:77;:::o;947:60::-;989:13;1000:1;989:13;;;;;;:::i;:::-;;;;;;;;947:60;:::o;813:63::-;858:13;;;;;;;;;;813:63::o;880:::-;924:14;936:1;924:14;;;;;;:::i;:::-;;;;;;;;880:63;:::o;2073:86::-;2127:27;2141:12;;;;;;;;2148:1;2141:12;;;;2151:1;2141:12;;;2127:27;;;;;;:::i;:::-;;;;;;;;2073:86;;:::o;2250:95::-;2316:24;;;;;;;;;2334:1;2316:24;;;;2337:1;2316:24;;;;;;;;;:::i;:::-;;;;;;;;2250:95;;:::o;1452:73::-;1505:15;1518:1;1505:15;;;;;;:::i;:::-;;;;;;;;1452:73;:::o;1529:87::-;1609:1;1589:22;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;1529:87;:::o;2430:96::-;2494:15;;;;;;;;;;:24;;;2519:1;2494:27;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2430:96;:::o;779:30::-;:::o;1011:72::-;1061:17;1076:1;1061:17;;;;;;:::i;:::-;;;;;;;;1011:72;:::o;7:343:4:-;84:5;109:65;125:48;166:6;125:48;:::i;:::-;109:65;:::i;:::-;100:74;;197:6;190:5;183:21;235:4;228:5;224:16;273:3;264:6;259:3;255:16;252:25;249:2;;;290:1;287;280:12;249:2;303:41;337:6;332:3;327;303:41;:::i;:::-;90:260;;;;;;:::o;356:345::-;434:5;459:66;475:49;517:6;475:49;:::i;:::-;459:66;:::i;:::-;450:75;;548:6;541:5;534:21;586:4;579:5;575:16;624:3;615:6;610:3;606:16;603:25;600:2;;;641:1;638;631:12;600:2;654:41;688:6;683:3;678;654:41;:::i;:::-;440:261;;;;;;:::o;707:139::-;753:5;791:6;778:20;769:29;;807:33;834:5;807:33;:::i;:::-;759:87;;;;:::o;852:139::-;898:5;936:6;923:20;914:29;;952:33;979:5;952:33;:::i;:::-;904:87;;;;:::o;1010:271::-;1065:5;1114:3;1107:4;1099:6;1095:17;1091:27;1081:2;;1132:1;1129;1122:12;1081:2;1172:6;1159:20;1197:78;1271:3;1263:6;1256:4;1248:6;1244:17;1197:78;:::i;:::-;1188:87;;1071:210;;;;;:::o;1287:137::-;1332:5;1370:6;1357:20;1348:29;;1386:32;1412:5;1386:32;:::i;:::-;1338:86;;;;:::o;1444:273::-;1500:5;1549:3;1542:4;1534:6;1530:17;1526:27;1516:2;;1567:1;1564;1557:12;1516:2;1607:6;1594:20;1632:79;1707:3;1699:6;1692:4;1684:6;1680:17;1632:79;:::i;:::-;1623:88;;1506:211;;;;;:::o;1723:139::-;1769:5;1807:6;1794:20;1785:29;;1823:33;1850:5;1823:33;:::i;:::-;1775:87;;;;:::o;1868:262::-;1927:6;1976:2;1964:9;1955:7;1951:23;1947:32;1944:2;;;1992:1;1989;1982:12;1944:2;2035:1;2060:53;2105:7;2096:6;2085:9;2081:22;2060:53;:::i;:::-;2050:63;;2006:117;1934:196;;;;:::o;2136:262::-;2195:6;2244:2;2232:9;2223:7;2219:23;2215:32;2212:2;;;2260:1;2257;2250:12;2212:2;2303:1;2328:53;2373:7;2364:6;2353:9;2349:22;2328:53;:::i;:::-;2318:63;;2274:117;2202:196;;;;:::o;2404:407::-;2472:6;2480;2529:2;2517:9;2508:7;2504:23;2500:32;2497:2;;;2545:1;2542;2535:12;2497:2;2588:1;2613:53;2658:7;2649:6;2638:9;2634:22;2613:53;:::i;:::-;2603:63;;2559:117;2715:2;2741:53;2786:7;2777:6;2766:9;2762:22;2741:53;:::i;:::-;2731:63;;2686:118;2487:324;;;;;:::o;2817:373::-;2885:6;2934:2;2922:9;2913:7;2909:23;2905:32;2902:2;;;2950:1;2947;2940:12;2902:2;3021:1;3010:9;3006:17;2993:31;3051:18;3043:6;3040:30;3037:2;;;3083:1;3080;3073:12;3037:2;3111:62;3165:7;3156:6;3145:9;3141:22;3111:62;:::i;:::-;3101:72;;2964:219;2892:298;;;;:::o;3196:260::-;3254:6;3303:2;3291:9;3282:7;3278:23;3274:32;3271:2;;;3319:1;3316;3309:12;3271:2;3362:1;3387:52;3431:7;3422:6;3411:9;3407:22;3387:52;:::i;:::-;3377:62;;3333:116;3261:195;;;;:::o;3462:375::-;3531:6;3580:2;3568:9;3559:7;3555:23;3551:32;3548:2;;;3596:1;3593;3586:12;3548:2;3667:1;3656:9;3652:17;3639:31;3697:18;3689:6;3686:30;3683:2;;;3729:1;3726;3719:12;3683:2;3757:63;3812:7;3803:6;3792:9;3788:22;3757:63;:::i;:::-;3747:73;;3610:220;3538:299;;;;:::o;3843:262::-;3902:6;3951:2;3939:9;3930:7;3926:23;3922:32;3919:2;;;3967:1;3964;3957:12;3919:2;4010:1;4035:53;4080:7;4071:6;4060:9;4056:22;4035:53;:::i;:::-;4025:63;;3981:117;3909:196;;;;:::o;4111:520::-;4189:6;4197;4246:2;4234:9;4225:7;4221:23;4217:32;4214:2;;;4262:1;4259;4252:12;4214:2;4305:1;4330:53;4375:7;4366:6;4355:9;4351:22;4330:53;:::i;:::-;4320:63;;4276:117;4460:2;4449:9;4445:18;4432:32;4491:18;4483:6;4480:30;4477:2;;;4523:1;4520;4513:12;4477:2;4551:63;4606:7;4597:6;4586:9;4582:22;4551:63;:::i;:::-;4541:73;;4403:221;4204:427;;;;;:::o;4637:407::-;4705:6;4713;4762:2;4750:9;4741:7;4737:23;4733:32;4730:2;;;4778:1;4775;4768:12;4730:2;4821:1;4846:53;4891:7;4882:6;4871:9;4867:22;4846:53;:::i;:::-;4836:63;;4792:117;4948:2;4974:53;5019:7;5010:6;4999:9;4995:22;4974:53;:::i;:::-;4964:63;;4919:118;4720:324;;;;;:::o;5050:924::-;5156:6;5164;5172;5180;5229:3;5217:9;5208:7;5204:23;5200:33;5197:2;;;5246:1;5243;5236:12;5197:2;5289:1;5314:53;5359:7;5350:6;5339:9;5335:22;5314:53;:::i;:::-;5304:63;;5260:117;5416:2;5442:53;5487:7;5478:6;5467:9;5463:22;5442:53;:::i;:::-;5432:63;;5387:118;5572:2;5561:9;5557:18;5544:32;5603:18;5595:6;5592:30;5589:2;;;5635:1;5632;5625:12;5589:2;5663:63;5718:7;5709:6;5698:9;5694:22;5663:63;:::i;:::-;5653:73;;5515:221;5803:2;5792:9;5788:18;5775:32;5834:18;5826:6;5823:30;5820:2;;;5866:1;5863;5856:12;5820:2;5894:63;5949:7;5940:6;5929:9;5925:22;5894:63;:::i;:::-;5884:73;;5746:221;5187:787;;;;;;;:::o;5980:179::-;6049:10;6070:46;6112:3;6104:6;6070:46;:::i;:::-;6148:4;6143:3;6139:14;6125:28;;6060:99;;;;:::o;6165:179::-;6234:10;6255:46;6297:3;6289:6;6255:46;:::i;:::-;6333:4;6328:3;6324:14;6310:28;;6245:99;;;;:::o;6350:118::-;6437:24;6455:5;6437:24;:::i;:::-;6432:3;6425:37;6415:53;;:::o;6506:694::-;6642:52;6688:5;6642:52;:::i;:::-;6710:84;6787:6;6782:3;6710:84;:::i;:::-;6703:91;;6818:54;6866:5;6818:54;:::i;:::-;6895:7;6926:1;6911:282;6936:6;6933:1;6930:13;6911:282;;;7012:6;7006:13;7039:63;7098:3;7083:13;7039:63;:::i;:::-;7032:70;;7125:58;7176:6;7125:58;:::i;:::-;7115:68;;6971:222;6958:1;6955;6951:9;6946:14;;6911:282;;;6915:14;6618:582;;;;;:::o;7238:694::-;7374:52;7420:5;7374:52;:::i;:::-;7442:84;7519:6;7514:3;7442:84;:::i;:::-;7435:91;;7550:54;7598:5;7550:54;:::i;:::-;7627:7;7658:1;7643:282;7668:6;7665:1;7662:13;7643:282;;;7744:6;7738:13;7771:63;7830:3;7815:13;7771:63;:::i;:::-;7764:70;;7857:58;7908:6;7857:58;:::i;:::-;7847:68;;7703:222;7690:1;7687;7683:9;7678:14;;7643:282;;;7647:14;7350:582;;;;;:::o;7938:108::-;8015:24;8033:5;8015:24;:::i;:::-;8010:3;8003:37;7993:53;;:::o;8052:118::-;8139:24;8157:5;8139:24;:::i;:::-;8134:3;8127:37;8117:53;;:::o;8176:360::-;8262:3;8290:38;8322:5;8290:38;:::i;:::-;8344:70;8407:6;8402:3;8344:70;:::i;:::-;8337:77;;8423:52;8468:6;8463:3;8456:4;8449:5;8445:16;8423:52;:::i;:::-;8500:29;8522:6;8500:29;:::i;:::-;8495:3;8491:39;8484:46;;8266:270;;;;;:::o;8542:373::-;8646:3;8674:38;8706:5;8674:38;:::i;:::-;8728:88;8809:6;8804:3;8728:88;:::i;:::-;8721:95;;8825:52;8870:6;8865:3;8858:4;8851:5;8847:16;8825:52;:::i;:::-;8902:6;8897:3;8893:16;8886:23;;8650:265;;;;;:::o;8921:115::-;9006:23;9023:5;9006:23;:::i;:::-;9001:3;8994:36;8984:52;;:::o;9042:364::-;9130:3;9158:39;9191:5;9158:39;:::i;:::-;9213:71;9277:6;9272:3;9213:71;:::i;:::-;9206:78;;9293:52;9338:6;9333:3;9326:4;9319:5;9315:16;9293:52;:::i;:::-;9370:29;9392:6;9370:29;:::i;:::-;9365:3;9361:39;9354:46;;9134:272;;;;;:::o;9412:377::-;9518:3;9546:39;9579:5;9546:39;:::i;:::-;9601:89;9683:6;9678:3;9601:89;:::i;:::-;9594:96;;9699:52;9744:6;9739:3;9732:4;9725:5;9721:16;9699:52;:::i;:::-;9776:6;9771:3;9767:16;9760:23;;9522:267;;;;;:::o;9847:495::-;9988:4;9983:3;9979:14;10072:4;10065:5;10061:16;10055:23;10091:63;10148:4;10143:3;10139:14;10125:12;10091:63;:::i;:::-;10003:161;10243:4;10236:5;10232:16;10226:23;10262:63;10319:4;10314:3;10310:14;10296:12;10262:63;:::i;:::-;10174:161;9957:385;;;:::o;10348:108::-;10425:24;10443:5;10425:24;:::i;:::-;10420:3;10413:37;10403:53;;:::o;10462:118::-;10549:24;10567:5;10549:24;:::i;:::-;10544:3;10537:37;10527:53;;:::o;10586:271::-;10716:3;10738:93;10827:3;10818:6;10738:93;:::i;:::-;10731:100;;10848:3;10841:10;;10720:137;;;;:::o;10863:275::-;10995:3;11017:95;11108:3;11099:6;11017:95;:::i;:::-;11010:102;;11129:3;11122:10;;10999:139;;;;:::o;11144:222::-;11237:4;11275:2;11264:9;11260:18;11252:26;;11288:71;11356:1;11345:9;11341:17;11332:6;11288:71;:::i;:::-;11242:124;;;;:::o;11372:314::-;11511:4;11549:2;11538:9;11534:18;11526:26;;11562:117;11676:1;11665:9;11661:17;11652:6;11562:117;:::i;:::-;11516:170;;;;:::o;11692:314::-;11831:4;11869:2;11858:9;11854:18;11846:26;;11882:117;11996:1;11985:9;11981:17;11972:6;11882:117;:::i;:::-;11836:170;;;;:::o;12012:222::-;12105:4;12143:2;12132:9;12128:18;12120:26;;12156:71;12224:1;12213:9;12209:17;12200:6;12156:71;:::i;:::-;12110:124;;;;:::o;12240:309::-;12351:4;12389:2;12378:9;12374:18;12366:26;;12438:9;12432:4;12428:20;12424:1;12413:9;12409:17;12402:47;12466:76;12537:4;12528:6;12466:76;:::i;:::-;12458:84;;12356:193;;;;:::o;12555:218::-;12646:4;12684:2;12673:9;12669:18;12661:26;;12697:69;12763:1;12752:9;12748:17;12739:6;12697:69;:::i;:::-;12651:122;;;;:::o;12779:313::-;12892:4;12930:2;12919:9;12915:18;12907:26;;12979:9;12973:4;12969:20;12965:1;12954:9;12950:17;12943:47;13007:78;13080:4;13071:6;13007:78;:::i;:::-;12999:86;;12897:195;;;;:::o;13098:514::-;13259:4;13297:2;13286:9;13282:18;13274:26;;13346:9;13340:4;13336:20;13332:1;13321:9;13317:17;13310:47;13374:78;13447:4;13438:6;13374:78;:::i;:::-;13366:86;;13499:9;13493:4;13489:20;13484:2;13473:9;13469:18;13462:48;13527:78;13600:4;13591:6;13527:78;:::i;:::-;13519:86;;13264:348;;;;;:::o;13618:310::-;13755:4;13793:2;13782:9;13778:18;13770:26;;13806:115;13918:1;13907:9;13903:17;13894:6;13806:115;:::i;:::-;13760:168;;;;:::o;13934:222::-;14027:4;14065:2;14054:9;14050:18;14042:26;;14078:71;14146:1;14135:9;14131:17;14122:6;14078:71;:::i;:::-;14032:124;;;;:::o;14162:332::-;14283:4;14321:2;14310:9;14306:18;14298:26;;14334:71;14402:1;14391:9;14387:17;14378:6;14334:71;:::i;:::-;14415:72;14483:2;14472:9;14468:18;14459:6;14415:72;:::i;:::-;14288:206;;;;;:::o;14500:129::-;14534:6;14561:20;;:::i;:::-;14551:30;;14590:33;14618:4;14610:6;14590:33;:::i;:::-;14541:88;;;:::o;14635:75::-;14668:6;14701:2;14695:9;14685:19;;14675:35;:::o;14716:307::-;14777:4;14867:18;14859:6;14856:30;14853:2;;;14889:18;;:::i;:::-;14853:2;14927:29;14949:6;14927:29;:::i;:::-;14919:37;;15011:4;15005;15001:15;14993:23;;14782:241;;;:::o;15029:308::-;15091:4;15181:18;15173:6;15170:30;15167:2;;;15203:18;;:::i;:::-;15167:2;15241:29;15263:6;15241:29;:::i;:::-;15233:37;;15325:4;15319;15315:15;15307:23;;15096:241;;;:::o;15343:98::-;15408:4;15431:3;15423:11;;15413:28;;;:::o;15447:98::-;15512:4;15535:3;15527:11;;15517:28;;;:::o;15551:104::-;15616:6;15644:4;15634:14;;15623:32;;;:::o;15661:104::-;15726:6;15754:4;15744:14;;15733:32;;;:::o;15771:98::-;15822:6;15856:5;15850:12;15840:22;;15829:40;;;:::o;15875:99::-;15927:6;15961:5;15955:12;15945:22;;15934:40;;;:::o;15980:111::-;16048:4;16080;16075:3;16071:14;16063:22;;16053:38;;;:::o;16097:111::-;16165:4;16197;16192:3;16188:14;16180:22;;16170:38;;;:::o;16214:143::-;16311:11;16348:3;16333:18;;16323:34;;;;:::o;16363:143::-;16460:11;16497:3;16482:18;;16472:34;;;;:::o;16512:168::-;16595:11;16629:6;16624:3;16617:19;16669:4;16664:3;16660:14;16645:29;;16607:73;;;;:::o;16686:147::-;16787:11;16824:3;16809:18;;16799:34;;;;:::o;16839:169::-;16923:11;16957:6;16952:3;16945:19;16997:4;16992:3;16988:14;16973:29;;16935:73;;;;:::o;17014:148::-;17116:11;17153:3;17138:18;;17128:34;;;;:::o;17168:96::-;17205:7;17234:24;17252:5;17234:24;:::i;:::-;17223:35;;17213:51;;;:::o;17270:77::-;17307:7;17336:5;17325:16;;17315:32;;;:::o;17353:76::-;17389:7;17418:5;17407:16;;17397:32;;;:::o;17435:126::-;17472:7;17512:42;17505:5;17501:54;17490:65;;17480:81;;;:::o;17567:77::-;17604:7;17633:5;17622:16;;17612:32;;;:::o;17650:154::-;17734:6;17729:3;17724;17711:30;17796:1;17787:6;17782:3;17778:16;17771:27;17701:103;;;:::o;17810:307::-;17878:1;17888:113;17902:6;17899:1;17896:13;17888:113;;;17987:1;17982:3;17978:11;17972:18;17968:1;17963:3;17959:11;17952:39;17924:2;17921:1;17917:10;17912:15;;17888:113;;;18019:6;18016:1;18013:13;18010:2;;;18099:1;18090:6;18085:3;18081:16;18074:27;18010:2;17859:258;;;;:::o;18123:281::-;18206:27;18228:4;18206:27;:::i;:::-;18198:6;18194:40;18336:6;18324:10;18321:22;18300:18;18288:10;18285:34;18282:62;18279:2;;;18347:18;;:::i;:::-;18279:2;18387:10;18383:2;18376:22;18166:238;;;:::o;18410:180::-;18458:77;18455:1;18448:88;18555:4;18552:1;18545:15;18579:4;18576:1;18569:15;18596:102;18637:6;18688:2;18684:7;18679:2;18672:5;18668:14;18664:28;18654:38;;18644:54;;;:::o;18704:122::-;18777:24;18795:5;18777:24;:::i;:::-;18770:5;18767:35;18757:2;;18816:1;18813;18806:12;18757:2;18747:79;:::o;18832:122::-;18905:24;18923:5;18905:24;:::i;:::-;18898:5;18895:35;18885:2;;18944:1;18941;18934:12;18885:2;18875:79;:::o;18960:120::-;19032:23;19049:5;19032:23;:::i;:::-;19025:5;19022:34;19012:2;;19070:1;19067;19060:12;19012:2;19002:78;:::o;19086:122::-;19159:24;19177:5;19159:24;:::i;:::-;19152:5;19149:35;19139:2;;19198:1;19195;19188:12;19139:2;19129:79;:::o"},"methodIdentifiers":{"doNotEmit()":"db6cdf68","emitAddress(address)":"ec5c3ede","emitBytes(bytes)":"c76f0635","emitBytes32(bytes32)":"33311ef3","emitBytes32Array(bytes32,bytes32)":"c0cd80e6","emitIndexedBytes(bytes)":"cc07e605","emitIndexedBytes32(bytes32)":"048858e5","emitIndexedString(string)":"443690a0","emitInt(int256)":"8a618191","emitNestedUintFromAnotherContract(uint256)":"d3931e57","emitNestedUintFromSameContract(uint256)":"813a8cf5","emitString(string)":"2536f127","emitStruct(uint256,uint256)":"9f31a223","emitTwoUints(uint256,uint256)":"38393646","emitTwoUintsAndTwoStrings(uint256,uint256,string,string)":"532b9cce","emitUint(uint256)":"91940244","emitUintAndString(uint256,string)":"2785f8d6","emitUintArray(uint256,uint256)":"17aba537","emitUintTwice(uint256,uint256)":"0c0c941a","emitWithoutArgs()":"90b37ea2"}},"metadata":"{\"compiler\":{\"version\":\"0.8.4+commit.c7e474f2\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract AnotherContract\",\"name\":\"c\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"a\",\"type\":\"address\"}],\"name\":\"WithAddressArg\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"b\",\"type\":\"bytes32\"}],\"name\":\"WithBytes32Arg\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32[2]\",\"name\":\"a\",\"type\":\"bytes32[2]\"}],\"name\":\"WithBytes32Array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"b\",\"type\":\"bytes\"}],\"name\":\"WithBytesArg\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"b\",\"type\":\"bytes32\"}],\"name\":\"WithIndexedBytes32Arg\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"b\",\"type\":\"bytes\"}],\"name\":\"WithIndexedBytesArg\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"string\",\"name\":\"s\",\"type\":\"string\"}],\"name\":\"WithIndexedStringArg\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"i\",\"type\":\"int256\"}],\"name\":\"WithIntArg\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"s\",\"type\":\"string\"}],\"name\":\"WithStringArg\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"u\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"v\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"struct Events.Struct\",\"name\":\"s\",\"type\":\"tuple\"}],\"name\":\"WithStructArg\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"s\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"t\",\"type\":\"string\"}],\"name\":\"WithTwoStringArgs\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"u\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"v\",\"type\":\"uint256\"}],\"name\":\"WithTwoUintArgs\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"u\",\"type\":\"uint256\"}],\"name\":\"WithUintArg\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[2]\",\"name\":\"a\",\"type\":\"uint256[2]\"}],\"name\":\"WithUintArray\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"WithoutArgs\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"doNotEmit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"a\",\"type\":\"address\"}],\"name\":\"emitAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"b\",\"type\":\"bytes\"}],\"name\":\"emitBytes\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"b\",\"type\":\"bytes32\"}],\"name\":\"emitBytes32\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"b\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"c\",\"type\":\"bytes32\"}],\"name\":\"emitBytes32Array\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"b\",\"type\":\"bytes\"}],\"name\":\"emitIndexedBytes\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"b\",\"type\":\"bytes32\"}],\"name\":\"emitIndexedBytes32\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"s\",\"type\":\"string\"}],\"name\":\"emitIndexedString\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"i\",\"type\":\"int256\"}],\"name\":\"emitInt\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"u\",\"type\":\"uint256\"}],\"name\":\"emitNestedUintFromAnotherContract\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"u\",\"type\":\"uint256\"}],\"name\":\"emitNestedUintFromSameContract\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"s\",\"type\":\"string\"}],\"name\":\"emitString\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"u\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"v\",\"type\":\"uint256\"}],\"name\":\"emitStruct\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"u\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"v\",\"type\":\"uint256\"}],\"name\":\"emitTwoUints\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"u\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"v\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"s\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"t\",\"type\":\"string\"}],\"name\":\"emitTwoUintsAndTwoStrings\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"u\",\"type\":\"uint256\"}],\"name\":\"emitUint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"u\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"s\",\"type\":\"string\"}],\"name\":\"emitUintAndString\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"u\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"v\",\"type\":\"uint256\"}],\"name\":\"emitUintArray\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"u\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"v\",\"type\":\"uint256\"}],\"name\":\"emitUintTwice\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"emitWithoutArgs\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/Events.sol\":\"Events\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/Events.sol\":{\"keccak256\":\"0x1f12bbd1b991a4eb017f864e7ca09d99cee0730630313442e99fc32a29b28b91\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c8ba3dbc99ecfbb05a95a9a89e8ea74e86f7cbd5441a53fca9f3de94651313d5\",\"dweb:/ipfs/QmYr9HUxkuQxuEwxtLn3f9gB7i2epM95Znt6fRj9xL9T6Y\"]}},\"version\":1}"},"OverrideEventContract":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"u","type":"uint256"}],"name":"simpleEvent","type":"event"},{"anonymous":false,"inputs":[],"name":"simpleEvent","type":"event"},{"inputs":[{"internalType":"uint256","name":"u","type":"uint256"}],"name":"emitSimpleEventWithUintArg","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"emitSimpleEventWithoutArg","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"608060405234801561001057600080fd5b50610188806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80632ce136d91461003b5780638e1c72bb14610057575b600080fd5b610055600480360381019061005091906100de565b610061565b005b61005f61009b565b005b7fb2dc4835200bc382210c109031e47d05b37c9244807898f5910a43f961e6719a816040516100909190610116565b60405180910390a150565b7f8922a6ca0f59f137d8e739a3dca968247fca890d147a5006a57da5bc782f6ae960405160405180910390a1565b6000813590506100d88161013b565b92915050565b6000602082840312156100f057600080fd5b60006100fe848285016100c9565b91505092915050565b61011081610131565b82525050565b600060208201905061012b6000830184610107565b92915050565b6000819050919050565b61014481610131565b811461014f57600080fd5b5056fea264697066735822122016232a4f6ea73657adfebd142c8d15f5593e419f600cb1983aba440defd27a5064736f6c63430008040033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x188 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x36 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x2CE136D9 EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0x8E1C72BB EQ PUSH2 0x57 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x55 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x50 SWAP2 SWAP1 PUSH2 0xDE JUMP JUMPDEST PUSH2 0x61 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x5F PUSH2 0x9B JUMP JUMPDEST STOP JUMPDEST PUSH32 0xB2DC4835200BC382210C109031E47D05B37C9244807898F5910A43F961E6719A DUP2 PUSH1 0x40 MLOAD PUSH2 0x90 SWAP2 SWAP1 PUSH2 0x116 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH32 0x8922A6CA0F59F137D8E739A3DCA968247FCA890D147A5006A57DA5BC782F6AE9 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0xD8 DUP2 PUSH2 0x13B JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xF0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xFE DUP5 DUP3 DUP6 ADD PUSH2 0xC9 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x110 DUP2 PUSH2 0x131 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x12B PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x107 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x144 DUP2 PUSH2 0x131 JUMP JUMPDEST DUP2 EQ PUSH2 0x14F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 AND 0x23 0x2A 0x4F PUSH15 0xA73657ADFEBD142C8D15F5593E419F PUSH1 0xC 0xB1 SWAP9 GASPRICE 0xBA DIFFICULTY 0xD 0xEF 0xD2 PUSH27 0x5064736F6C63430008040033000000000000000000000000000000 ","sourceMap":"2656:248:1:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:980:4","statements":[{"body":{"nodeType":"YulBlock","src":"59:87:4","statements":[{"nodeType":"YulAssignment","src":"69:29:4","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"91:6:4"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"78:12:4"},"nodeType":"YulFunctionCall","src":"78:20:4"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"69:5:4"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"134:5:4"}],"functionName":{"name":"validator_revert_t_uint256","nodeType":"YulIdentifier","src":"107:26:4"},"nodeType":"YulFunctionCall","src":"107:33:4"},"nodeType":"YulExpressionStatement","src":"107:33:4"}]},"name":"abi_decode_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"37:6:4","type":""},{"name":"end","nodeType":"YulTypedName","src":"45:3:4","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"53:5:4","type":""}],"src":"7:139:4"},{"body":{"nodeType":"YulBlock","src":"218:196:4","statements":[{"body":{"nodeType":"YulBlock","src":"264:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"273:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"276:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"266:6:4"},"nodeType":"YulFunctionCall","src":"266:12:4"},"nodeType":"YulExpressionStatement","src":"266:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"239:7:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"248:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"235:3:4"},"nodeType":"YulFunctionCall","src":"235:23:4"},{"kind":"number","nodeType":"YulLiteral","src":"260:2:4","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"231:3:4"},"nodeType":"YulFunctionCall","src":"231:32:4"},"nodeType":"YulIf","src":"228:2:4"},{"nodeType":"YulBlock","src":"290:117:4","statements":[{"nodeType":"YulVariableDeclaration","src":"305:15:4","value":{"kind":"number","nodeType":"YulLiteral","src":"319:1:4","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"309:6:4","type":""}]},{"nodeType":"YulAssignment","src":"334:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"369:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"380:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"365:3:4"},"nodeType":"YulFunctionCall","src":"365:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"389:7:4"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"344:20:4"},"nodeType":"YulFunctionCall","src":"344:53:4"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"334:6:4"}]}]}]},"name":"abi_decode_tuple_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"188:9:4","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"199:7:4","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"211:6:4","type":""}],"src":"152:262:4"},{"body":{"nodeType":"YulBlock","src":"485:53:4","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"502:3:4"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"525:5:4"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"507:17:4"},"nodeType":"YulFunctionCall","src":"507:24:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"495:6:4"},"nodeType":"YulFunctionCall","src":"495:37:4"},"nodeType":"YulExpressionStatement","src":"495:37:4"}]},"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"473:5:4","type":""},{"name":"pos","nodeType":"YulTypedName","src":"480:3:4","type":""}],"src":"420:118:4"},{"body":{"nodeType":"YulBlock","src":"642:124:4","statements":[{"nodeType":"YulAssignment","src":"652:26:4","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"664:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"675:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"660:3:4"},"nodeType":"YulFunctionCall","src":"660:18:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"652:4:4"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"732:6:4"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"745:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"756:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"741:3:4"},"nodeType":"YulFunctionCall","src":"741:17:4"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"688:43:4"},"nodeType":"YulFunctionCall","src":"688:71:4"},"nodeType":"YulExpressionStatement","src":"688:71:4"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"614:9:4","type":""},{"name":"value0","nodeType":"YulTypedName","src":"626:6:4","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"637:4:4","type":""}],"src":"544:222:4"},{"body":{"nodeType":"YulBlock","src":"817:32:4","statements":[{"nodeType":"YulAssignment","src":"827:16:4","value":{"name":"value","nodeType":"YulIdentifier","src":"838:5:4"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"827:7:4"}]}]},"name":"cleanup_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"799:5:4","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"809:7:4","type":""}],"src":"772:77:4"},{"body":{"nodeType":"YulBlock","src":"898:79:4","statements":[{"body":{"nodeType":"YulBlock","src":"955:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"964:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"967:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"957:6:4"},"nodeType":"YulFunctionCall","src":"957:12:4"},"nodeType":"YulExpressionStatement","src":"957:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"921:5:4"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"946:5:4"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"928:17:4"},"nodeType":"YulFunctionCall","src":"928:24:4"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"918:2:4"},"nodeType":"YulFunctionCall","src":"918:35:4"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"911:6:4"},"nodeType":"YulFunctionCall","src":"911:43:4"},"nodeType":"YulIf","src":"908:2:4"}]},"name":"validator_revert_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"891:5:4","type":""}],"src":"855:122:4"}]},"contents":"{\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_uint256(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_uint256(add(headStart, offset), dataEnd)\n }\n\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_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 cleanup_t_uint256(value) -> cleaned {\n cleaned := value\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":4,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100365760003560e01c80632ce136d91461003b5780638e1c72bb14610057575b600080fd5b610055600480360381019061005091906100de565b610061565b005b61005f61009b565b005b7fb2dc4835200bc382210c109031e47d05b37c9244807898f5910a43f961e6719a816040516100909190610116565b60405180910390a150565b7f8922a6ca0f59f137d8e739a3dca968247fca890d147a5006a57da5bc782f6ae960405160405180910390a1565b6000813590506100d88161013b565b92915050565b6000602082840312156100f057600080fd5b60006100fe848285016100c9565b91505092915050565b61011081610131565b82525050565b600060208201905061012b6000830184610107565b92915050565b6000819050919050565b61014481610131565b811461014f57600080fd5b5056fea264697066735822122016232a4f6ea73657adfebd142c8d15f5593e419f600cb1983aba440defd27a5064736f6c63430008040033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x36 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x2CE136D9 EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0x8E1C72BB EQ PUSH2 0x57 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x55 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x50 SWAP2 SWAP1 PUSH2 0xDE JUMP JUMPDEST PUSH2 0x61 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x5F PUSH2 0x9B JUMP JUMPDEST STOP JUMPDEST PUSH32 0xB2DC4835200BC382210C109031E47D05B37C9244807898F5910A43F961E6719A DUP2 PUSH1 0x40 MLOAD PUSH2 0x90 SWAP2 SWAP1 PUSH2 0x116 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH32 0x8922A6CA0F59F137D8E739A3DCA968247FCA890D147A5006A57DA5BC782F6AE9 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0xD8 DUP2 PUSH2 0x13B JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xF0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xFE DUP5 DUP3 DUP6 ADD PUSH2 0xC9 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x110 DUP2 PUSH2 0x131 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x12B PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x107 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x144 DUP2 PUSH2 0x131 JUMP JUMPDEST DUP2 EQ PUSH2 0x14F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 AND 0x23 0x2A 0x4F PUSH15 0xA73657ADFEBD142C8D15F5593E419F PUSH1 0xC 0xB1 SWAP9 GASPRICE 0xBA DIFFICULTY 0xD 0xEF 0xD2 PUSH27 0x5064736F6C63430008040033000000000000000000000000000000 ","sourceMap":"2656:248:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2744:81;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2829:73;;;:::i;:::-;;2744:81;2806:14;2818:1;2806:14;;;;;;:::i;:::-;;;;;;;;2744:81;:::o;2829:73::-;2884:13;;;;;;;;;;2829:73::o;7:139:4:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:262::-;211:6;260:2;248:9;239:7;235:23;231:32;228:2;;;276:1;273;266:12;228:2;319:1;344:53;389:7;380:6;369:9;365:22;344:53;:::i;:::-;334:63;;290:117;218:196;;;;:::o;420:118::-;507:24;525:5;507:24;:::i;:::-;502:3;495:37;485:53;;:::o;544:222::-;637:4;675:2;664:9;660:18;652:26;;688:71;756:1;745:9;741:17;732:6;688:71;:::i;:::-;642:124;;;;:::o;772:77::-;809:7;838:5;827:16;;817:32;;;:::o;855:122::-;928:24;946:5;928:24;:::i;:::-;921:5;918:35;908:2;;967:1;964;957:12;908:2;898:79;:::o"},"methodIdentifiers":{"emitSimpleEventWithUintArg(uint256)":"2ce136d9","emitSimpleEventWithoutArg()":"8e1c72bb"}},"metadata":"{\"compiler\":{\"version\":\"0.8.4+commit.c7e474f2\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"u\",\"type\":\"uint256\"}],\"name\":\"simpleEvent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"simpleEvent\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"u\",\"type\":\"uint256\"}],\"name\":\"emitSimpleEventWithUintArg\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"emitSimpleEventWithoutArg\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/Events.sol\":\"OverrideEventContract\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/Events.sol\":{\"keccak256\":\"0x1f12bbd1b991a4eb017f864e7ca09d99cee0730630313442e99fc32a29b28b91\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c8ba3dbc99ecfbb05a95a9a89e8ea74e86f7cbd5441a53fca9f3de94651313d5\",\"dweb:/ipfs/QmYr9HUxkuQxuEwxtLn3f9gB7i2epM95Znt6fRj9xL9T6Y\"]}},\"version\":1}"}},"contracts/Matchers.sol":{"AnotherMatchersContract":{"abi":[{"inputs":[],"name":"YetAnotherCustomError","type":"error"},{"inputs":[],"name":"revertWithYetAnotherCustomError","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revertWithYetAnotherCustomErrorView","outputs":[],"stateMutability":"pure","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"608060405234801561001057600080fd5b50610182806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c806340d83b241461003b5780634b2bd7e914610045575b600080fd5b61004361004f565b005b61004d610081565b005b6040517fff05e87500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080815480929190610093906100d4565b91905055506040517fff05e87500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000819050919050565b60006100df826100ca565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156101125761011161011d565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea2646970667358221220188b4117d3c1f35f2fcbff7fbf51ee28f08c8abd18e3796ccd1d2fbc8c862e3f64736f6c63430008040033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x182 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x36 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x40D83B24 EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0x4B2BD7E9 EQ PUSH2 0x45 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x43 PUSH2 0x4F JUMP JUMPDEST STOP JUMPDEST PUSH2 0x4D PUSH2 0x81 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xFF05E87500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP2 SLOAD DUP1 SWAP3 SWAP2 SWAP1 PUSH2 0x93 SWAP1 PUSH2 0xD4 JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE POP PUSH1 0x40 MLOAD PUSH32 0xFF05E87500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xDF DUP3 PUSH2 0xCA JUMP JUMPDEST SWAP2 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 EQ ISZERO PUSH2 0x112 JUMPI PUSH2 0x111 PUSH2 0x11D JUMP JUMPDEST JUMPDEST PUSH1 0x1 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 XOR DUP12 COINBASE OR 0xD3 0xC1 RETURN 0x5F 0x2F 0xCB SELFDESTRUCT PUSH32 0xBF51EE28F08C8ABD18E3796CCD1D2FBC8C862E3F64736F6C6343000804003300 ","sourceMap":"2776:288:2:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:512:4","statements":[{"body":{"nodeType":"YulBlock","src":"52:32:4","statements":[{"nodeType":"YulAssignment","src":"62:16:4","value":{"name":"value","nodeType":"YulIdentifier","src":"73:5:4"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"62:7:4"}]}]},"name":"cleanup_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"34:5:4","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"44:7:4","type":""}],"src":"7:77:4"},{"body":{"nodeType":"YulBlock","src":"133:190:4","statements":[{"nodeType":"YulAssignment","src":"143:33:4","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"170:5:4"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"152:17:4"},"nodeType":"YulFunctionCall","src":"152:24:4"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"143:5:4"}]},{"body":{"nodeType":"YulBlock","src":"266:22:4","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"268:16:4"},"nodeType":"YulFunctionCall","src":"268:18:4"},"nodeType":"YulExpressionStatement","src":"268:18:4"}]},"condition":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"191:5:4"},{"kind":"number","nodeType":"YulLiteral","src":"198:66:4","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"188:2:4"},"nodeType":"YulFunctionCall","src":"188:77:4"},"nodeType":"YulIf","src":"185:2:4"},{"nodeType":"YulAssignment","src":"297:20:4","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"308:5:4"},{"kind":"number","nodeType":"YulLiteral","src":"315:1:4","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"304:3:4"},"nodeType":"YulFunctionCall","src":"304:13:4"},"variableNames":[{"name":"ret","nodeType":"YulIdentifier","src":"297:3:4"}]}]},"name":"increment_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"119:5:4","type":""}],"returnVariables":[{"name":"ret","nodeType":"YulTypedName","src":"129:3:4","type":""}],"src":"90:233:4"},{"body":{"nodeType":"YulBlock","src":"357:152:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"374:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"377:77:4","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"367:6:4"},"nodeType":"YulFunctionCall","src":"367:88:4"},"nodeType":"YulExpressionStatement","src":"367:88:4"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"471:1:4","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"474:4:4","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"464:6:4"},"nodeType":"YulFunctionCall","src":"464:15:4"},"nodeType":"YulExpressionStatement","src":"464:15:4"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"495:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"498:4:4","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"488:6:4"},"nodeType":"YulFunctionCall","src":"488:15:4"},"nodeType":"YulExpressionStatement","src":"488:15:4"}]},"name":"panic_error_0x11","nodeType":"YulFunctionDefinition","src":"329:180:4"}]},"contents":"{\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function increment_t_uint256(value) -> ret {\n value := cleanup_t_uint256(value)\n if eq(value, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) { panic_error_0x11() }\n ret := add(value, 1)\n }\n\n function panic_error_0x11() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n\n}\n","id":4,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100365760003560e01c806340d83b241461003b5780634b2bd7e914610045575b600080fd5b61004361004f565b005b61004d610081565b005b6040517fff05e87500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080815480929190610093906100d4565b91905055506040517fff05e87500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000819050919050565b60006100df826100ca565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156101125761011161011d565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea2646970667358221220188b4117d3c1f35f2fcbff7fbf51ee28f08c8abd18e3796ccd1d2fbc8c862e3f64736f6c63430008040033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x36 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x40D83B24 EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0x4B2BD7E9 EQ PUSH2 0x45 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x43 PUSH2 0x4F JUMP JUMPDEST STOP JUMPDEST PUSH2 0x4D PUSH2 0x81 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xFF05E87500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP2 SLOAD DUP1 SWAP3 SWAP2 SWAP1 PUSH2 0x93 SWAP1 PUSH2 0xD4 JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE POP PUSH1 0x40 MLOAD PUSH32 0xFF05E87500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xDF DUP3 PUSH2 0xCA JUMP JUMPDEST SWAP2 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 EQ ISZERO PUSH2 0x112 JUMPI PUSH2 0x111 PUSH2 0x11D JUMP JUMPDEST JUMPDEST PUSH1 0x1 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 XOR DUP12 COINBASE OR 0xD3 0xC1 RETURN 0x5F 0x2F 0xCB SELFDESTRUCT PUSH32 0xBF51EE28F08C8ABD18E3796CCD1D2FBC8C862E3F64736F6C6343000804003300 ","sourceMap":"2776:288:2:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2962:100;;;:::i;:::-;;2858;;;:::i;:::-;;2962;3034:23;;;;;;;;;;;;;;2858:100;2914:1;;:3;;;;;;;;;:::i;:::-;;;;;;2930:23;;;;;;;;;;;;;;7:77:4;44:7;73:5;62:16;;52:32;;;:::o;90:233::-;129:3;152:24;170:5;152:24;:::i;:::-;143:33;;198:66;191:5;188:77;185:2;;;268:18;;:::i;:::-;185:2;315:1;308:5;304:13;297:20;;133:190;;;:::o;329:180::-;377:77;374:1;367:88;474:4;471:1;464:15;498:4;495:1;488:15"},"methodIdentifiers":{"revertWithYetAnotherCustomError()":"4b2bd7e9","revertWithYetAnotherCustomErrorView()":"40d83b24"}},"metadata":"{\"compiler\":{\"version\":\"0.8.4+commit.c7e474f2\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"YetAnotherCustomError\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"revertWithYetAnotherCustomError\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"revertWithYetAnotherCustomErrorView\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/Matchers.sol\":\"AnotherMatchersContract\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/Matchers.sol\":{\"keccak256\":\"0x5a69001d60d8f2498c88a26a86619900f4a7d1e7443adcb5f6bf73b112e659df\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://ca96217e25bd9b0beccc5038bcde4bb32fc71f7828c01e2254f7c6eb06b2ec1c\",\"dweb:/ipfs/QmaHs3KgdszUPBCWbYsxriReGFePSG1AE23BxSCa98cnT9\"]}},\"version\":1}"},"Matchers":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"AnotherCustomError","type":"error"},{"inputs":[{"internalType":"int256","name":"","type":"int256"}],"name":"CustomErrorWithInt","type":"error"},{"inputs":[{"components":[{"internalType":"uint256","name":"a","type":"uint256"},{"internalType":"uint256","name":"b","type":"uint256"}],"internalType":"struct Matchers.Pair","name":"","type":"tuple"}],"name":"CustomErrorWithPair","type":"error"},{"inputs":[{"internalType":"uint256","name":"nameToForceEthersToUseAnArrayLikeWithNamedProperties","type":"uint256"}],"name":"CustomErrorWithUint","type":"error"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"string","name":"","type":"string"}],"name":"CustomErrorWithUintAndString","type":"error"},{"inputs":[],"name":"SomeCustomError","type":"error"},{"anonymous":false,"inputs":[],"name":"SomeEvent","type":"event"},{"inputs":[],"name":"panicAssert","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"panicAssertView","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"revertWithAnotherContractCustomError","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revertWithAnotherContractCustomErrorView","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[],"name":"revertWithAnotherCustomError","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revertWithAnotherCustomErrorView","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"int256","name":"i","type":"int256"}],"name":"revertWithCustomErrorWithInt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"int256","name":"i","type":"int256"}],"name":"revertWithCustomErrorWithIntView","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"a","type":"uint256"},{"internalType":"uint256","name":"b","type":"uint256"}],"name":"revertWithCustomErrorWithPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"a","type":"uint256"},{"internalType":"uint256","name":"b","type":"uint256"}],"name":"revertWithCustomErrorWithPairView","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"n","type":"uint256"}],"name":"revertWithCustomErrorWithUint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"n","type":"uint256"},{"internalType":"string","name":"s","type":"string"}],"name":"revertWithCustomErrorWithUintAndString","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"n","type":"uint256"},{"internalType":"string","name":"s","type":"string"}],"name":"revertWithCustomErrorWithUintAndStringView","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"n","type":"uint256"}],"name":"revertWithCustomErrorWithUintView","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"revertWithSomeCustomError","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revertWithSomeCustomErrorView","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"reason","type":"string"}],"name":"revertsWith","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"reason","type":"string"}],"name":"revertsWithView","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"revertsWithoutReason","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revertsWithoutReasonView","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"succeeds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"succeedsView","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"608060405234801561001057600080fd5b5060405161001d9061007f565b604051809103906000f080158015610039573d6000803e3d6000fd5b50600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061008c565b6101a280610e8a83390190565b610def8061009b6000396000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c806373d2ea85116100b8578063aac014e01161007c578063aac014e01461028b578063b6bbe06114610295578063bad92aa91461029f578063e0a03812146102a9578063fe276a34146102c5578063ffb4746b146102e157610142565b806373d2ea851461022357806374afd4521461023f578063772f243a146102495780637c3cb0af146102535780638f9330301461026f57610142565b80634b5bbf6a1161010a5780634b5bbf6a146101c157806358a1d1ed146101cb5780635b94e31e146101d5578063622051f1146101df5780636f1fdc31146101e95780636fc588d21461020557610142565b80631b4f3f3d146101475780631f542cf3146101515780633ba4178b1461016d578063467e3d371461018957806347c56769146101a5575b600080fd5b61014f6102eb565b005b61016b60048036038101906101669190610a66565b61030f565b005b61018760048036038101906101829190610a12565b610360565b005b6101a3600480360381019061019e91906109a8565b61039f565b005b6101bf60048036038101906101ba919061097f565b6103e7565b005b6101c9610424565b005b6101d361046d565b005b6101dd61047a565b005b6101e76104b1565b005b61020360048036038101906101fe91906109a8565b610533565b005b61020d610592565b60405161021a9190610b8f565b60405180910390f35b61023d600480360381019061023891906109e9565b61059b565b005b6102476105ef565b005b610251610608565b005b61026d600480360381019061026891906109e9565b6106a3565b005b6102896004803603810190610284919061097f565b6106e0565b005b610293610734565b005b61029d610766565b005b6102a76107b4565b005b6102c360048036038101906102be9190610a66565b6107fd565b005b6102df60048036038101906102da9190610a12565b610865565b005b6102e96108bb565b005b6000808154809291906102fd90610cd3565b9190505550600061030d57600080fd5b565b6040518060400160405280838152602001828152506040517fdecab0e70000000000000000000000000000000000000000000000000000000081526004016103579190610b74565b60405180910390fd5b81816040517fa92ee8e3000000000000000000000000000000000000000000000000000000008152600401610396929190610baa565b60405180910390fd5b600081906103e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103da9190610b52565b60405180910390fd5b5050565b806040517fcdd7a0cc00000000000000000000000000000000000000000000000000000000815260040161041b9190610b37565b60405180910390fd5b60008081548092919061043690610cd3565b91905055506040517fd2c097a600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061047857600080fd5b565b60006104af577f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340d83b246040518163ffffffff1660e01b815260040160006040518083038186803b15801561051957600080fd5b505afa15801561052d573d6000803e3d6000fd5b50505050565b60008081548092919061054590610cd3565b91905055506000819061058e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105859190610b52565b60405180910390fd5b5050565b60008054905090565b6000808154809291906105ad90610cd3565b9190505550806040517f01f4d5d20000000000000000000000000000000000000000000000000000000081526004016105e69190610b8f565b60405180910390fd5b60008081548092919061060190610cd3565b9190505550565b60008081548092919061061a90610cd3565b9190505550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634b2bd7e96040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561068957600080fd5b505af115801561069d573d6000803e3d6000fd5b50505050565b806040517f01f4d5d20000000000000000000000000000000000000000000000000000000081526004016106d79190610b8f565b60405180910390fd5b6000808154809291906106f290610cd3565b9190505550806040517fcdd7a0cc00000000000000000000000000000000000000000000000000000000815260040161072b9190610b37565b60405180910390fd5b6040517fd2c097a600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008081548092919061077890610cd3565b919050555060006107b2577f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b565b6000808154809291906107c690610cd3565b91905055506040517f0bd3d39c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008081548092919061080f90610cd3565b91905055506040518060400160405280838152602001828152506040517fdecab0e700000000000000000000000000000000000000000000000000000000815260040161085c9190610b74565b60405180910390fd5b60008081548092919061087790610cd3565b919050555081816040517fa92ee8e30000000000000000000000000000000000000000000000000000000081526004016108b2929190610baa565b60405180910390fd5b6040517f0bd3d39c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006109006108fb84610bff565b610bda565b90508281526020810184848401111561091857600080fd5b610923848285610c60565b509392505050565b60008135905061093a81610d8b565b92915050565b600082601f83011261095157600080fd5b81356109618482602086016108ed565b91505092915050565b60008135905061097981610da2565b92915050565b60006020828403121561099157600080fd5b600061099f8482850161092b565b91505092915050565b6000602082840312156109ba57600080fd5b600082013567ffffffffffffffff8111156109d457600080fd5b6109e084828501610940565b91505092915050565b6000602082840312156109fb57600080fd5b6000610a098482850161096a565b91505092915050565b60008060408385031215610a2557600080fd5b6000610a338582860161096a565b925050602083013567ffffffffffffffff811115610a5057600080fd5b610a5c85828601610940565b9150509250929050565b60008060408385031215610a7957600080fd5b6000610a878582860161096a565b9250506020610a988582860161096a565b9150509250929050565b610aab81610c4c565b82525050565b6000610abc82610c30565b610ac68185610c3b565b9350610ad6818560208601610c6f565b610adf81610d7a565b840191505092915050565b604082016000820151610b006000850182610b19565b506020820151610b136020850182610b19565b50505050565b610b2281610c56565b82525050565b610b3181610c56565b82525050565b6000602082019050610b4c6000830184610aa2565b92915050565b60006020820190508181036000830152610b6c8184610ab1565b905092915050565b6000604082019050610b896000830184610aea565b92915050565b6000602082019050610ba46000830184610b28565b92915050565b6000604082019050610bbf6000830185610b28565b8181036020830152610bd18184610ab1565b90509392505050565b6000610be4610bf5565b9050610bf08282610ca2565b919050565b6000604051905090565b600067ffffffffffffffff821115610c1a57610c19610d4b565b5b610c2382610d7a565b9050602081019050919050565b600081519050919050565b600082825260208201905092915050565b6000819050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015610c8d578082015181840152602081019050610c72565b83811115610c9c576000848401525b50505050565b610cab82610d7a565b810181811067ffffffffffffffff82111715610cca57610cc9610d4b565b5b80604052505050565b6000610cde82610c56565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415610d1157610d10610d1c565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b610d9481610c4c565b8114610d9f57600080fd5b50565b610dab81610c56565b8114610db657600080fd5b5056fea264697066735822122025e4c9eca28af81eeb16cfbb3832355e24c64c7eae221a5034159a671d61281464736f6c63430008040033608060405234801561001057600080fd5b50610182806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c806340d83b241461003b5780634b2bd7e914610045575b600080fd5b61004361004f565b005b61004d610081565b005b6040517fff05e87500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080815480929190610093906100d4565b91905055506040517fff05e87500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000819050919050565b60006100df826100ca565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156101125761011161011d565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea2646970667358221220188b4117d3c1f35f2fcbff7fbf51ee28f08c8abd18e3796ccd1d2fbc8c862e3f64736f6c63430008040033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x1D SWAP1 PUSH2 0x7F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH2 0x39 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH2 0x8C JUMP JUMPDEST PUSH2 0x1A2 DUP1 PUSH2 0xE8A DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH2 0xDEF DUP1 PUSH2 0x9B PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x142 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x73D2EA85 GT PUSH2 0xB8 JUMPI DUP1 PUSH4 0xAAC014E0 GT PUSH2 0x7C JUMPI DUP1 PUSH4 0xAAC014E0 EQ PUSH2 0x28B JUMPI DUP1 PUSH4 0xB6BBE061 EQ PUSH2 0x295 JUMPI DUP1 PUSH4 0xBAD92AA9 EQ PUSH2 0x29F JUMPI DUP1 PUSH4 0xE0A03812 EQ PUSH2 0x2A9 JUMPI DUP1 PUSH4 0xFE276A34 EQ PUSH2 0x2C5 JUMPI DUP1 PUSH4 0xFFB4746B EQ PUSH2 0x2E1 JUMPI PUSH2 0x142 JUMP JUMPDEST DUP1 PUSH4 0x73D2EA85 EQ PUSH2 0x223 JUMPI DUP1 PUSH4 0x74AFD452 EQ PUSH2 0x23F JUMPI DUP1 PUSH4 0x772F243A EQ PUSH2 0x249 JUMPI DUP1 PUSH4 0x7C3CB0AF EQ PUSH2 0x253 JUMPI DUP1 PUSH4 0x8F933030 EQ PUSH2 0x26F JUMPI PUSH2 0x142 JUMP JUMPDEST DUP1 PUSH4 0x4B5BBF6A GT PUSH2 0x10A JUMPI DUP1 PUSH4 0x4B5BBF6A EQ PUSH2 0x1C1 JUMPI DUP1 PUSH4 0x58A1D1ED EQ PUSH2 0x1CB JUMPI DUP1 PUSH4 0x5B94E31E EQ PUSH2 0x1D5 JUMPI DUP1 PUSH4 0x622051F1 EQ PUSH2 0x1DF JUMPI DUP1 PUSH4 0x6F1FDC31 EQ PUSH2 0x1E9 JUMPI DUP1 PUSH4 0x6FC588D2 EQ PUSH2 0x205 JUMPI PUSH2 0x142 JUMP JUMPDEST DUP1 PUSH4 0x1B4F3F3D EQ PUSH2 0x147 JUMPI DUP1 PUSH4 0x1F542CF3 EQ PUSH2 0x151 JUMPI DUP1 PUSH4 0x3BA4178B EQ PUSH2 0x16D JUMPI DUP1 PUSH4 0x467E3D37 EQ PUSH2 0x189 JUMPI DUP1 PUSH4 0x47C56769 EQ PUSH2 0x1A5 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x14F PUSH2 0x2EB JUMP JUMPDEST STOP JUMPDEST PUSH2 0x16B PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x166 SWAP2 SWAP1 PUSH2 0xA66 JUMP JUMPDEST PUSH2 0x30F JUMP JUMPDEST STOP JUMPDEST PUSH2 0x187 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x182 SWAP2 SWAP1 PUSH2 0xA12 JUMP JUMPDEST PUSH2 0x360 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1A3 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x19E SWAP2 SWAP1 PUSH2 0x9A8 JUMP JUMPDEST PUSH2 0x39F JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1BF PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1BA SWAP2 SWAP1 PUSH2 0x97F JUMP JUMPDEST PUSH2 0x3E7 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1C9 PUSH2 0x424 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1D3 PUSH2 0x46D JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1DD PUSH2 0x47A JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1E7 PUSH2 0x4B1 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x203 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1FE SWAP2 SWAP1 PUSH2 0x9A8 JUMP JUMPDEST PUSH2 0x533 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x20D PUSH2 0x592 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x21A SWAP2 SWAP1 PUSH2 0xB8F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x23D PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x238 SWAP2 SWAP1 PUSH2 0x9E9 JUMP JUMPDEST PUSH2 0x59B JUMP JUMPDEST STOP JUMPDEST PUSH2 0x247 PUSH2 0x5EF JUMP JUMPDEST STOP JUMPDEST PUSH2 0x251 PUSH2 0x608 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x26D PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x268 SWAP2 SWAP1 PUSH2 0x9E9 JUMP JUMPDEST PUSH2 0x6A3 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x289 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x284 SWAP2 SWAP1 PUSH2 0x97F JUMP JUMPDEST PUSH2 0x6E0 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x293 PUSH2 0x734 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x29D PUSH2 0x766 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2A7 PUSH2 0x7B4 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2C3 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2BE SWAP2 SWAP1 PUSH2 0xA66 JUMP JUMPDEST PUSH2 0x7FD JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2DF PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2DA SWAP2 SWAP1 PUSH2 0xA12 JUMP JUMPDEST PUSH2 0x865 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2E9 PUSH2 0x8BB JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 DUP2 SLOAD DUP1 SWAP3 SWAP2 SWAP1 PUSH2 0x2FD SWAP1 PUSH2 0xCD3 JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE POP PUSH1 0x0 PUSH2 0x30D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE POP PUSH1 0x40 MLOAD PUSH32 0xDECAB0E700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x357 SWAP2 SWAP1 PUSH2 0xB74 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 DUP2 PUSH1 0x40 MLOAD PUSH32 0xA92EE8E300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x396 SWAP3 SWAP2 SWAP1 PUSH2 0xBAA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 SWAP1 PUSH2 0x3E3 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DA SWAP2 SWAP1 PUSH2 0xB52 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP JUMP JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH32 0xCDD7A0CC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x41B SWAP2 SWAP1 PUSH2 0xB37 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP2 SLOAD DUP1 SWAP3 SWAP2 SWAP1 PUSH2 0x436 SWAP1 PUSH2 0xCD3 JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE POP PUSH1 0x40 MLOAD PUSH32 0xD2C097A600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x478 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4AF JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x1 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x40D83B24 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x519 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x52D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP2 SLOAD DUP1 SWAP3 SWAP2 SWAP1 PUSH2 0x545 SWAP1 PUSH2 0xCD3 JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE POP PUSH1 0x0 DUP2 SWAP1 PUSH2 0x58E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x585 SWAP2 SWAP1 PUSH2 0xB52 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP2 SLOAD DUP1 SWAP3 SWAP2 SWAP1 PUSH2 0x5AD SWAP1 PUSH2 0xCD3 JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE POP DUP1 PUSH1 0x40 MLOAD PUSH32 0x1F4D5D200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5E6 SWAP2 SWAP1 PUSH2 0xB8F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP2 SLOAD DUP1 SWAP3 SWAP2 SWAP1 PUSH2 0x601 SWAP1 PUSH2 0xCD3 JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP2 SLOAD DUP1 SWAP3 SWAP2 SWAP1 PUSH2 0x61A SWAP1 PUSH2 0xCD3 JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE POP PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x4B2BD7E9 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x689 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x69D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMP JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH32 0x1F4D5D200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x6D7 SWAP2 SWAP1 PUSH2 0xB8F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP2 SLOAD DUP1 SWAP3 SWAP2 SWAP1 PUSH2 0x6F2 SWAP1 PUSH2 0xCD3 JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE POP DUP1 PUSH1 0x40 MLOAD PUSH32 0xCDD7A0CC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x72B SWAP2 SWAP1 PUSH2 0xB37 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xD2C097A600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP2 SLOAD DUP1 SWAP3 SWAP2 SWAP1 PUSH2 0x778 SWAP1 PUSH2 0xCD3 JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE POP PUSH1 0x0 PUSH2 0x7B2 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x1 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST JUMP JUMPDEST PUSH1 0x0 DUP1 DUP2 SLOAD DUP1 SWAP3 SWAP2 SWAP1 PUSH2 0x7C6 SWAP1 PUSH2 0xCD3 JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE POP PUSH1 0x40 MLOAD PUSH32 0xBD3D39C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP2 SLOAD DUP1 SWAP3 SWAP2 SWAP1 PUSH2 0x80F SWAP1 PUSH2 0xCD3 JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE POP PUSH1 0x40 MLOAD PUSH32 0xDECAB0E700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x85C SWAP2 SWAP1 PUSH2 0xB74 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP2 SLOAD DUP1 SWAP3 SWAP2 SWAP1 PUSH2 0x877 SWAP1 PUSH2 0xCD3 JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE POP DUP2 DUP2 PUSH1 0x40 MLOAD PUSH32 0xA92EE8E300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x8B2 SWAP3 SWAP2 SWAP1 PUSH2 0xBAA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xBD3D39C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x900 PUSH2 0x8FB DUP5 PUSH2 0xBFF JUMP JUMPDEST PUSH2 0xBDA JUMP JUMPDEST SWAP1 POP DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 DUP5 DUP5 ADD GT ISZERO PUSH2 0x918 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x923 DUP5 DUP3 DUP6 PUSH2 0xC60 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x93A DUP2 PUSH2 0xD8B JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x951 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x961 DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x8ED JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x979 DUP2 PUSH2 0xDA2 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x991 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x99F DUP5 DUP3 DUP6 ADD PUSH2 0x92B JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x9BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x9D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9E0 DUP5 DUP3 DUP6 ADD PUSH2 0x940 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x9FB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xA09 DUP5 DUP3 DUP6 ADD PUSH2 0x96A JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xA25 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xA33 DUP6 DUP3 DUP7 ADD PUSH2 0x96A JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xA50 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA5C DUP6 DUP3 DUP7 ADD PUSH2 0x940 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xA79 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xA87 DUP6 DUP3 DUP7 ADD PUSH2 0x96A JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0xA98 DUP6 DUP3 DUP7 ADD PUSH2 0x96A JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH2 0xAAB DUP2 PUSH2 0xC4C JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xABC DUP3 PUSH2 0xC30 JUMP JUMPDEST PUSH2 0xAC6 DUP2 DUP6 PUSH2 0xC3B JUMP JUMPDEST SWAP4 POP PUSH2 0xAD6 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0xC6F JUMP JUMPDEST PUSH2 0xADF DUP2 PUSH2 0xD7A JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP3 ADD PUSH1 0x0 DUP3 ADD MLOAD PUSH2 0xB00 PUSH1 0x0 DUP6 ADD DUP3 PUSH2 0xB19 JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0xB13 PUSH1 0x20 DUP6 ADD DUP3 PUSH2 0xB19 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0xB22 DUP2 PUSH2 0xC56 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0xB31 DUP2 PUSH2 0xC56 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xB4C PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xAA2 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 0xB6C DUP2 DUP5 PUSH2 0xAB1 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0xB89 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xAEA JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xBA4 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xB28 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0xBBF PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0xB28 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0xBD1 DUP2 DUP5 PUSH2 0xAB1 JUMP JUMPDEST SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xBE4 PUSH2 0xBF5 JUMP JUMPDEST SWAP1 POP PUSH2 0xBF0 DUP3 DUP3 PUSH2 0xCA2 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 0xC1A JUMPI PUSH2 0xC19 PUSH2 0xD4B JUMP JUMPDEST JUMPDEST PUSH2 0xC23 DUP3 PUSH2 0xD7A 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 DUP2 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 0xC8D JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0xC72 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0xC9C JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0xCAB DUP3 PUSH2 0xD7A JUMP JUMPDEST DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0xCCA JUMPI PUSH2 0xCC9 PUSH2 0xD4B JUMP JUMPDEST JUMPDEST DUP1 PUSH1 0x40 MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCDE DUP3 PUSH2 0xC56 JUMP JUMPDEST SWAP2 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 EQ ISZERO PUSH2 0xD11 JUMPI PUSH2 0xD10 PUSH2 0xD1C JUMP JUMPDEST JUMPDEST PUSH1 0x1 DUP3 ADD SWAP1 POP SWAP2 SWAP1 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 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 PUSH2 0xD94 DUP2 PUSH2 0xC4C JUMP JUMPDEST DUP2 EQ PUSH2 0xD9F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0xDAB DUP2 PUSH2 0xC56 JUMP JUMPDEST DUP2 EQ PUSH2 0xDB6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x25 0xE4 0xC9 0xEC LOG2 DUP11 0xF8 0x1E 0xEB AND 0xCF 0xBB CODESIZE ORIGIN CALLDATALOAD 0x5E 0x24 0xC6 0x4C PUSH31 0xAE221A5034159A671D61281464736F6C634300080400336080604052348015 PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x182 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x36 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x40D83B24 EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0x4B2BD7E9 EQ PUSH2 0x45 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x43 PUSH2 0x4F JUMP JUMPDEST STOP JUMPDEST PUSH2 0x4D PUSH2 0x81 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xFF05E87500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP2 SLOAD DUP1 SWAP3 SWAP2 SWAP1 PUSH2 0x93 SWAP1 PUSH2 0xD4 JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE POP PUSH1 0x40 MLOAD PUSH32 0xFF05E87500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xDF DUP3 PUSH2 0xCA JUMP JUMPDEST SWAP2 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 EQ ISZERO PUSH2 0x112 JUMPI PUSH2 0x111 PUSH2 0x11D JUMP JUMPDEST JUMPDEST PUSH1 0x1 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 XOR DUP12 COINBASE OR 0xD3 0xC1 RETURN 0x5F 0x2F 0xCB SELFDESTRUCT PUSH32 0xBF51EE28F08C8ABD18E3796CCD1D2FBC8C862E3F64736F6C6343000804003300 ","sourceMap":"65:2709:2:-:0;;;465:73;;;;;;;;;;504:29;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;486:15;;:47;;;;;;;;;;;;;;;;;;65:2709;;;;;;;;;;:::o;:::-;;;;;;;"},"deployedBytecode":{"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:8290:4","statements":[{"body":{"nodeType":"YulBlock","src":"91:261:4","statements":[{"nodeType":"YulAssignment","src":"101:75:4","value":{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"168:6:4"}],"functionName":{"name":"array_allocation_size_t_string_memory_ptr","nodeType":"YulIdentifier","src":"126:41:4"},"nodeType":"YulFunctionCall","src":"126:49:4"}],"functionName":{"name":"allocate_memory","nodeType":"YulIdentifier","src":"110:15:4"},"nodeType":"YulFunctionCall","src":"110:66:4"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"101:5:4"}]},{"expression":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"192:5:4"},{"name":"length","nodeType":"YulIdentifier","src":"199:6:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"185:6:4"},"nodeType":"YulFunctionCall","src":"185:21:4"},"nodeType":"YulExpressionStatement","src":"185:21:4"},{"nodeType":"YulVariableDeclaration","src":"215:27:4","value":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"230:5:4"},{"kind":"number","nodeType":"YulLiteral","src":"237:4:4","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"226:3:4"},"nodeType":"YulFunctionCall","src":"226:16:4"},"variables":[{"name":"dst","nodeType":"YulTypedName","src":"219:3:4","type":""}]},{"body":{"nodeType":"YulBlock","src":"280:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"289:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"292:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"282:6:4"},"nodeType":"YulFunctionCall","src":"282:12:4"},"nodeType":"YulExpressionStatement","src":"282:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"261:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"266:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"257:3:4"},"nodeType":"YulFunctionCall","src":"257:16:4"},{"name":"end","nodeType":"YulIdentifier","src":"275:3:4"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"254:2:4"},"nodeType":"YulFunctionCall","src":"254:25:4"},"nodeType":"YulIf","src":"251:2:4"},{"expression":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"329:3:4"},{"name":"dst","nodeType":"YulIdentifier","src":"334:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"339:6:4"}],"functionName":{"name":"copy_calldata_to_memory","nodeType":"YulIdentifier","src":"305:23:4"},"nodeType":"YulFunctionCall","src":"305:41:4"},"nodeType":"YulExpressionStatement","src":"305:41:4"}]},"name":"abi_decode_available_length_t_string_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"64:3:4","type":""},{"name":"length","nodeType":"YulTypedName","src":"69:6:4","type":""},{"name":"end","nodeType":"YulTypedName","src":"77:3:4","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"85:5:4","type":""}],"src":"7:345:4"},{"body":{"nodeType":"YulBlock","src":"409:86:4","statements":[{"nodeType":"YulAssignment","src":"419:29:4","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"441:6:4"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"428:12:4"},"nodeType":"YulFunctionCall","src":"428:20:4"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"419:5:4"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"483:5:4"}],"functionName":{"name":"validator_revert_t_int256","nodeType":"YulIdentifier","src":"457:25:4"},"nodeType":"YulFunctionCall","src":"457:32:4"},"nodeType":"YulExpressionStatement","src":"457:32:4"}]},"name":"abi_decode_t_int256","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"387:6:4","type":""},{"name":"end","nodeType":"YulTypedName","src":"395:3:4","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"403:5:4","type":""}],"src":"358:137:4"},{"body":{"nodeType":"YulBlock","src":"577:211:4","statements":[{"body":{"nodeType":"YulBlock","src":"626:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"635:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"638:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"628:6:4"},"nodeType":"YulFunctionCall","src":"628:12:4"},"nodeType":"YulExpressionStatement","src":"628:12:4"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"605:6:4"},{"kind":"number","nodeType":"YulLiteral","src":"613:4:4","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"601:3:4"},"nodeType":"YulFunctionCall","src":"601:17:4"},{"name":"end","nodeType":"YulIdentifier","src":"620:3:4"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"597:3:4"},"nodeType":"YulFunctionCall","src":"597:27:4"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"590:6:4"},"nodeType":"YulFunctionCall","src":"590:35:4"},"nodeType":"YulIf","src":"587:2:4"},{"nodeType":"YulVariableDeclaration","src":"651:34:4","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"678:6:4"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"665:12:4"},"nodeType":"YulFunctionCall","src":"665:20:4"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"655:6:4","type":""}]},{"nodeType":"YulAssignment","src":"694:88:4","value":{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"755:6:4"},{"kind":"number","nodeType":"YulLiteral","src":"763:4:4","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"751:3:4"},"nodeType":"YulFunctionCall","src":"751:17:4"},{"name":"length","nodeType":"YulIdentifier","src":"770:6:4"},{"name":"end","nodeType":"YulIdentifier","src":"778:3:4"}],"functionName":{"name":"abi_decode_available_length_t_string_memory_ptr","nodeType":"YulIdentifier","src":"703:47:4"},"nodeType":"YulFunctionCall","src":"703:79:4"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"694:5:4"}]}]},"name":"abi_decode_t_string_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"555:6:4","type":""},{"name":"end","nodeType":"YulTypedName","src":"563:3:4","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"571:5:4","type":""}],"src":"515:273:4"},{"body":{"nodeType":"YulBlock","src":"846:87:4","statements":[{"nodeType":"YulAssignment","src":"856:29:4","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"878:6:4"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"865:12:4"},"nodeType":"YulFunctionCall","src":"865:20:4"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"856:5:4"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"921:5:4"}],"functionName":{"name":"validator_revert_t_uint256","nodeType":"YulIdentifier","src":"894:26:4"},"nodeType":"YulFunctionCall","src":"894:33:4"},"nodeType":"YulExpressionStatement","src":"894:33:4"}]},"name":"abi_decode_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"824:6:4","type":""},{"name":"end","nodeType":"YulTypedName","src":"832:3:4","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"840:5:4","type":""}],"src":"794:139:4"},{"body":{"nodeType":"YulBlock","src":"1004:195:4","statements":[{"body":{"nodeType":"YulBlock","src":"1050:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1059:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1062:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1052:6:4"},"nodeType":"YulFunctionCall","src":"1052:12:4"},"nodeType":"YulExpressionStatement","src":"1052:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1025:7:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"1034:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1021:3:4"},"nodeType":"YulFunctionCall","src":"1021:23:4"},{"kind":"number","nodeType":"YulLiteral","src":"1046:2:4","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1017:3:4"},"nodeType":"YulFunctionCall","src":"1017:32:4"},"nodeType":"YulIf","src":"1014:2:4"},{"nodeType":"YulBlock","src":"1076:116:4","statements":[{"nodeType":"YulVariableDeclaration","src":"1091:15:4","value":{"kind":"number","nodeType":"YulLiteral","src":"1105:1:4","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1095:6:4","type":""}]},{"nodeType":"YulAssignment","src":"1120:62:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1154:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"1165:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1150:3:4"},"nodeType":"YulFunctionCall","src":"1150:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1174:7:4"}],"functionName":{"name":"abi_decode_t_int256","nodeType":"YulIdentifier","src":"1130:19:4"},"nodeType":"YulFunctionCall","src":"1130:52:4"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1120:6:4"}]}]}]},"name":"abi_decode_tuple_t_int256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"974:9:4","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"985:7:4","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"997:6:4","type":""}],"src":"939:260:4"},{"body":{"nodeType":"YulBlock","src":"1281:299:4","statements":[{"body":{"nodeType":"YulBlock","src":"1327:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1336:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1339:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1329:6:4"},"nodeType":"YulFunctionCall","src":"1329:12:4"},"nodeType":"YulExpressionStatement","src":"1329:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1302:7:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"1311:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1298:3:4"},"nodeType":"YulFunctionCall","src":"1298:23:4"},{"kind":"number","nodeType":"YulLiteral","src":"1323:2:4","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1294:3:4"},"nodeType":"YulFunctionCall","src":"1294:32:4"},"nodeType":"YulIf","src":"1291:2:4"},{"nodeType":"YulBlock","src":"1353:220:4","statements":[{"nodeType":"YulVariableDeclaration","src":"1368:45:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1399:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"1410:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1395:3:4"},"nodeType":"YulFunctionCall","src":"1395:17:4"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1382:12:4"},"nodeType":"YulFunctionCall","src":"1382:31:4"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1372:6:4","type":""}]},{"body":{"nodeType":"YulBlock","src":"1460:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1469:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1472:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1462:6:4"},"nodeType":"YulFunctionCall","src":"1462:12:4"},"nodeType":"YulExpressionStatement","src":"1462:12:4"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1432:6:4"},{"kind":"number","nodeType":"YulLiteral","src":"1440:18:4","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1429:2:4"},"nodeType":"YulFunctionCall","src":"1429:30:4"},"nodeType":"YulIf","src":"1426:2:4"},{"nodeType":"YulAssignment","src":"1490:73:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1535:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"1546:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1531:3:4"},"nodeType":"YulFunctionCall","src":"1531:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1555:7:4"}],"functionName":{"name":"abi_decode_t_string_memory_ptr","nodeType":"YulIdentifier","src":"1500:30:4"},"nodeType":"YulFunctionCall","src":"1500:63:4"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1490:6:4"}]}]}]},"name":"abi_decode_tuple_t_string_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1251:9:4","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1262:7:4","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1274:6:4","type":""}],"src":"1205:375:4"},{"body":{"nodeType":"YulBlock","src":"1652:196:4","statements":[{"body":{"nodeType":"YulBlock","src":"1698:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1707:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1710:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1700:6:4"},"nodeType":"YulFunctionCall","src":"1700:12:4"},"nodeType":"YulExpressionStatement","src":"1700:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1673:7:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"1682:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1669:3:4"},"nodeType":"YulFunctionCall","src":"1669:23:4"},{"kind":"number","nodeType":"YulLiteral","src":"1694:2:4","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1665:3:4"},"nodeType":"YulFunctionCall","src":"1665:32:4"},"nodeType":"YulIf","src":"1662:2:4"},{"nodeType":"YulBlock","src":"1724:117:4","statements":[{"nodeType":"YulVariableDeclaration","src":"1739:15:4","value":{"kind":"number","nodeType":"YulLiteral","src":"1753:1:4","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1743:6:4","type":""}]},{"nodeType":"YulAssignment","src":"1768:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1803:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"1814:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1799:3:4"},"nodeType":"YulFunctionCall","src":"1799:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1823:7:4"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"1778:20:4"},"nodeType":"YulFunctionCall","src":"1778:53:4"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1768:6:4"}]}]}]},"name":"abi_decode_tuple_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1622:9:4","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1633:7:4","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1645:6:4","type":""}],"src":"1586:262:4"},{"body":{"nodeType":"YulBlock","src":"1947:427:4","statements":[{"body":{"nodeType":"YulBlock","src":"1993:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2002:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2005:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1995:6:4"},"nodeType":"YulFunctionCall","src":"1995:12:4"},"nodeType":"YulExpressionStatement","src":"1995:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1968:7:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"1977:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1964:3:4"},"nodeType":"YulFunctionCall","src":"1964:23:4"},{"kind":"number","nodeType":"YulLiteral","src":"1989:2:4","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1960:3:4"},"nodeType":"YulFunctionCall","src":"1960:32:4"},"nodeType":"YulIf","src":"1957:2:4"},{"nodeType":"YulBlock","src":"2019:117:4","statements":[{"nodeType":"YulVariableDeclaration","src":"2034:15:4","value":{"kind":"number","nodeType":"YulLiteral","src":"2048:1:4","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"2038:6:4","type":""}]},{"nodeType":"YulAssignment","src":"2063:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2098:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"2109:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2094:3:4"},"nodeType":"YulFunctionCall","src":"2094:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2118:7:4"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"2073:20:4"},"nodeType":"YulFunctionCall","src":"2073:53:4"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2063:6:4"}]}]},{"nodeType":"YulBlock","src":"2146:221:4","statements":[{"nodeType":"YulVariableDeclaration","src":"2161:46:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2192:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"2203:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2188:3:4"},"nodeType":"YulFunctionCall","src":"2188:18:4"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2175:12:4"},"nodeType":"YulFunctionCall","src":"2175:32:4"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"2165:6:4","type":""}]},{"body":{"nodeType":"YulBlock","src":"2254:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2263:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2266:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2256:6:4"},"nodeType":"YulFunctionCall","src":"2256:12:4"},"nodeType":"YulExpressionStatement","src":"2256:12:4"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"2226:6:4"},{"kind":"number","nodeType":"YulLiteral","src":"2234:18:4","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2223:2:4"},"nodeType":"YulFunctionCall","src":"2223:30:4"},"nodeType":"YulIf","src":"2220:2:4"},{"nodeType":"YulAssignment","src":"2284:73:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2329:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"2340:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2325:3:4"},"nodeType":"YulFunctionCall","src":"2325:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2349:7:4"}],"functionName":{"name":"abi_decode_t_string_memory_ptr","nodeType":"YulIdentifier","src":"2294:30:4"},"nodeType":"YulFunctionCall","src":"2294:63:4"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"2284:6:4"}]}]}]},"name":"abi_decode_tuple_t_uint256t_string_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1909:9:4","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1920:7:4","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1932:6:4","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1940:6:4","type":""}],"src":"1854:520:4"},{"body":{"nodeType":"YulBlock","src":"2463:324:4","statements":[{"body":{"nodeType":"YulBlock","src":"2509:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2518:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2521:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2511:6:4"},"nodeType":"YulFunctionCall","src":"2511:12:4"},"nodeType":"YulExpressionStatement","src":"2511:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2484:7:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"2493:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2480:3:4"},"nodeType":"YulFunctionCall","src":"2480:23:4"},{"kind":"number","nodeType":"YulLiteral","src":"2505:2:4","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2476:3:4"},"nodeType":"YulFunctionCall","src":"2476:32:4"},"nodeType":"YulIf","src":"2473:2:4"},{"nodeType":"YulBlock","src":"2535:117:4","statements":[{"nodeType":"YulVariableDeclaration","src":"2550:15:4","value":{"kind":"number","nodeType":"YulLiteral","src":"2564:1:4","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"2554:6:4","type":""}]},{"nodeType":"YulAssignment","src":"2579:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2614:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"2625:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2610:3:4"},"nodeType":"YulFunctionCall","src":"2610:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2634:7:4"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"2589:20:4"},"nodeType":"YulFunctionCall","src":"2589:53:4"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2579:6:4"}]}]},{"nodeType":"YulBlock","src":"2662:118:4","statements":[{"nodeType":"YulVariableDeclaration","src":"2677:16:4","value":{"kind":"number","nodeType":"YulLiteral","src":"2691:2:4","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"2681:6:4","type":""}]},{"nodeType":"YulAssignment","src":"2707:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2742:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"2753:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2738:3:4"},"nodeType":"YulFunctionCall","src":"2738:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2762:7:4"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"2717:20:4"},"nodeType":"YulFunctionCall","src":"2717:53:4"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"2707:6:4"}]}]}]},"name":"abi_decode_tuple_t_uint256t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2425:9:4","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2436:7:4","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2448:6:4","type":""},{"name":"value1","nodeType":"YulTypedName","src":"2456:6:4","type":""}],"src":"2380:407:4"},{"body":{"nodeType":"YulBlock","src":"2856:52:4","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2873:3:4"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2895:5:4"}],"functionName":{"name":"cleanup_t_int256","nodeType":"YulIdentifier","src":"2878:16:4"},"nodeType":"YulFunctionCall","src":"2878:23:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2866:6:4"},"nodeType":"YulFunctionCall","src":"2866:36:4"},"nodeType":"YulExpressionStatement","src":"2866:36:4"}]},"name":"abi_encode_t_int256_to_t_int256_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"2844:5:4","type":""},{"name":"pos","nodeType":"YulTypedName","src":"2851:3:4","type":""}],"src":"2793:115:4"},{"body":{"nodeType":"YulBlock","src":"3006:272:4","statements":[{"nodeType":"YulVariableDeclaration","src":"3016:53:4","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3063:5:4"}],"functionName":{"name":"array_length_t_string_memory_ptr","nodeType":"YulIdentifier","src":"3030:32:4"},"nodeType":"YulFunctionCall","src":"3030:39:4"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"3020:6:4","type":""}]},{"nodeType":"YulAssignment","src":"3078:78:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3144:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"3149:6:4"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"3085:58:4"},"nodeType":"YulFunctionCall","src":"3085:71:4"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"3078:3:4"}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3191:5:4"},{"kind":"number","nodeType":"YulLiteral","src":"3198:4:4","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3187:3:4"},"nodeType":"YulFunctionCall","src":"3187:16:4"},{"name":"pos","nodeType":"YulIdentifier","src":"3205:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"3210:6:4"}],"functionName":{"name":"copy_memory_to_memory","nodeType":"YulIdentifier","src":"3165:21:4"},"nodeType":"YulFunctionCall","src":"3165:52:4"},"nodeType":"YulExpressionStatement","src":"3165:52:4"},{"nodeType":"YulAssignment","src":"3226:46:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3237:3:4"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"3264:6:4"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"3242:21:4"},"nodeType":"YulFunctionCall","src":"3242:29:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3233:3:4"},"nodeType":"YulFunctionCall","src":"3233:39:4"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"3226:3:4"}]}]},"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"2987:5:4","type":""},{"name":"pos","nodeType":"YulTypedName","src":"2994:3:4","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"3002:3:4","type":""}],"src":"2914:364:4"},{"body":{"nodeType":"YulBlock","src":"3444:385:4","statements":[{"nodeType":"YulVariableDeclaration","src":"3454:26:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3470:3:4"},{"kind":"number","nodeType":"YulLiteral","src":"3475:4:4","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3466:3:4"},"nodeType":"YulFunctionCall","src":"3466:14:4"},"variables":[{"name":"tail","nodeType":"YulTypedName","src":"3458:4:4","type":""}]},{"nodeType":"YulBlock","src":"3490:161:4","statements":[{"nodeType":"YulVariableDeclaration","src":"3522:43:4","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3552:5:4"},{"kind":"number","nodeType":"YulLiteral","src":"3559:4:4","type":"","value":"0x00"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3548:3:4"},"nodeType":"YulFunctionCall","src":"3548:16:4"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3542:5:4"},"nodeType":"YulFunctionCall","src":"3542:23:4"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"3526:12:4","type":""}]},{"expression":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"3612:12:4"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3630:3:4"},{"kind":"number","nodeType":"YulLiteral","src":"3635:4:4","type":"","value":"0x00"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3626:3:4"},"nodeType":"YulFunctionCall","src":"3626:14:4"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256","nodeType":"YulIdentifier","src":"3578:33:4"},"nodeType":"YulFunctionCall","src":"3578:63:4"},"nodeType":"YulExpressionStatement","src":"3578:63:4"}]},{"nodeType":"YulBlock","src":"3661:161:4","statements":[{"nodeType":"YulVariableDeclaration","src":"3693:43:4","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3723:5:4"},{"kind":"number","nodeType":"YulLiteral","src":"3730:4:4","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3719:3:4"},"nodeType":"YulFunctionCall","src":"3719:16:4"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3713:5:4"},"nodeType":"YulFunctionCall","src":"3713:23:4"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"3697:12:4","type":""}]},{"expression":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"3783:12:4"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3801:3:4"},{"kind":"number","nodeType":"YulLiteral","src":"3806:4:4","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3797:3:4"},"nodeType":"YulFunctionCall","src":"3797:14:4"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256","nodeType":"YulIdentifier","src":"3749:33:4"},"nodeType":"YulFunctionCall","src":"3749:63:4"},"nodeType":"YulExpressionStatement","src":"3749:63:4"}]}]},"name":"abi_encode_t_struct$_Pair_$412_memory_ptr_to_t_struct$_Pair_$412_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"3431:5:4","type":""},{"name":"pos","nodeType":"YulTypedName","src":"3438:3:4","type":""}],"src":"3336:493:4"},{"body":{"nodeType":"YulBlock","src":"3890:53:4","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3907:3:4"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3930:5:4"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"3912:17:4"},"nodeType":"YulFunctionCall","src":"3912:24:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3900:6:4"},"nodeType":"YulFunctionCall","src":"3900:37:4"},"nodeType":"YulExpressionStatement","src":"3900:37:4"}]},"name":"abi_encode_t_uint256_to_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"3878:5:4","type":""},{"name":"pos","nodeType":"YulTypedName","src":"3885:3:4","type":""}],"src":"3835:108:4"},{"body":{"nodeType":"YulBlock","src":"4014:53:4","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4031:3:4"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4054:5:4"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"4036:17:4"},"nodeType":"YulFunctionCall","src":"4036:24:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4024:6:4"},"nodeType":"YulFunctionCall","src":"4024:37:4"},"nodeType":"YulExpressionStatement","src":"4024:37:4"}]},"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"4002:5:4","type":""},{"name":"pos","nodeType":"YulTypedName","src":"4009:3:4","type":""}],"src":"3949:118:4"},{"body":{"nodeType":"YulBlock","src":"4169:122:4","statements":[{"nodeType":"YulAssignment","src":"4179:26:4","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4191:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"4202:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4187:3:4"},"nodeType":"YulFunctionCall","src":"4187:18:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4179:4:4"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4257:6:4"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4270:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"4281:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4266:3:4"},"nodeType":"YulFunctionCall","src":"4266:17:4"}],"functionName":{"name":"abi_encode_t_int256_to_t_int256_fromStack","nodeType":"YulIdentifier","src":"4215:41:4"},"nodeType":"YulFunctionCall","src":"4215:69:4"},"nodeType":"YulExpressionStatement","src":"4215:69:4"}]},"name":"abi_encode_tuple_t_int256__to_t_int256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4141:9:4","type":""},{"name":"value0","nodeType":"YulTypedName","src":"4153:6:4","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4164:4:4","type":""}],"src":"4073:218:4"},{"body":{"nodeType":"YulBlock","src":"4415:195:4","statements":[{"nodeType":"YulAssignment","src":"4425:26:4","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4437:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"4448:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4433:3:4"},"nodeType":"YulFunctionCall","src":"4433:18:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4425:4:4"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4472:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"4483:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4468:3:4"},"nodeType":"YulFunctionCall","src":"4468:17:4"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"4491:4:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"4497:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4487:3:4"},"nodeType":"YulFunctionCall","src":"4487:20:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4461:6:4"},"nodeType":"YulFunctionCall","src":"4461:47:4"},"nodeType":"YulExpressionStatement","src":"4461:47:4"},{"nodeType":"YulAssignment","src":"4517:86:4","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4589:6:4"},{"name":"tail","nodeType":"YulIdentifier","src":"4598:4:4"}],"functionName":{"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"4525:63:4"},"nodeType":"YulFunctionCall","src":"4525:78:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4517:4:4"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4387:9:4","type":""},{"name":"value0","nodeType":"YulTypedName","src":"4399:6:4","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4410:4:4","type":""}],"src":"4297:313:4"},{"body":{"nodeType":"YulBlock","src":"4756:166:4","statements":[{"nodeType":"YulAssignment","src":"4766:26:4","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4778:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"4789:2:4","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4774:3:4"},"nodeType":"YulFunctionCall","src":"4774:18:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4766:4:4"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4888:6:4"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4901:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"4912:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4897:3:4"},"nodeType":"YulFunctionCall","src":"4897:17:4"}],"functionName":{"name":"abi_encode_t_struct$_Pair_$412_memory_ptr_to_t_struct$_Pair_$412_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"4802:85:4"},"nodeType":"YulFunctionCall","src":"4802:113:4"},"nodeType":"YulExpressionStatement","src":"4802:113:4"}]},"name":"abi_encode_tuple_t_struct$_Pair_$412_memory_ptr__to_t_struct$_Pair_$412_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4728:9:4","type":""},{"name":"value0","nodeType":"YulTypedName","src":"4740:6:4","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4751:4:4","type":""}],"src":"4616:306:4"},{"body":{"nodeType":"YulBlock","src":"5026:124:4","statements":[{"nodeType":"YulAssignment","src":"5036:26:4","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5048:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"5059:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5044:3:4"},"nodeType":"YulFunctionCall","src":"5044:18:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5036:4:4"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5116:6:4"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5129:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"5140:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5125:3:4"},"nodeType":"YulFunctionCall","src":"5125:17:4"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"5072:43:4"},"nodeType":"YulFunctionCall","src":"5072:71:4"},"nodeType":"YulExpressionStatement","src":"5072:71:4"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4998:9:4","type":""},{"name":"value0","nodeType":"YulTypedName","src":"5010:6:4","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5021:4:4","type":""}],"src":"4928:222:4"},{"body":{"nodeType":"YulBlock","src":"5302:277:4","statements":[{"nodeType":"YulAssignment","src":"5312:26:4","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5324:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"5335:2:4","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5320:3:4"},"nodeType":"YulFunctionCall","src":"5320:18:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5312:4:4"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5392:6:4"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5405:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"5416:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5401:3:4"},"nodeType":"YulFunctionCall","src":"5401:17:4"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"5348:43:4"},"nodeType":"YulFunctionCall","src":"5348:71:4"},"nodeType":"YulExpressionStatement","src":"5348:71:4"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5440:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"5451:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5436:3:4"},"nodeType":"YulFunctionCall","src":"5436:18:4"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"5460:4:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"5466:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5456:3:4"},"nodeType":"YulFunctionCall","src":"5456:20:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5429:6:4"},"nodeType":"YulFunctionCall","src":"5429:48:4"},"nodeType":"YulExpressionStatement","src":"5429:48:4"},{"nodeType":"YulAssignment","src":"5486:86:4","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"5558:6:4"},{"name":"tail","nodeType":"YulIdentifier","src":"5567:4:4"}],"functionName":{"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"5494:63:4"},"nodeType":"YulFunctionCall","src":"5494:78:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5486:4:4"}]}]},"name":"abi_encode_tuple_t_uint256_t_string_memory_ptr__to_t_uint256_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5266:9:4","type":""},{"name":"value1","nodeType":"YulTypedName","src":"5278:6:4","type":""},{"name":"value0","nodeType":"YulTypedName","src":"5286:6:4","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5297:4:4","type":""}],"src":"5156:423:4"},{"body":{"nodeType":"YulBlock","src":"5626:88:4","statements":[{"nodeType":"YulAssignment","src":"5636:30:4","value":{"arguments":[],"functionName":{"name":"allocate_unbounded","nodeType":"YulIdentifier","src":"5646:18:4"},"nodeType":"YulFunctionCall","src":"5646:20:4"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"5636:6:4"}]},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"5695:6:4"},{"name":"size","nodeType":"YulIdentifier","src":"5703:4:4"}],"functionName":{"name":"finalize_allocation","nodeType":"YulIdentifier","src":"5675:19:4"},"nodeType":"YulFunctionCall","src":"5675:33:4"},"nodeType":"YulExpressionStatement","src":"5675:33:4"}]},"name":"allocate_memory","nodeType":"YulFunctionDefinition","parameters":[{"name":"size","nodeType":"YulTypedName","src":"5610:4:4","type":""}],"returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"5619:6:4","type":""}],"src":"5585:129:4"},{"body":{"nodeType":"YulBlock","src":"5760:35:4","statements":[{"nodeType":"YulAssignment","src":"5770:19:4","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5786:2:4","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5780:5:4"},"nodeType":"YulFunctionCall","src":"5780:9:4"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"5770:6:4"}]}]},"name":"allocate_unbounded","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"5753:6:4","type":""}],"src":"5720:75:4"},{"body":{"nodeType":"YulBlock","src":"5868:241:4","statements":[{"body":{"nodeType":"YulBlock","src":"5973:22:4","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"5975:16:4"},"nodeType":"YulFunctionCall","src":"5975:18:4"},"nodeType":"YulExpressionStatement","src":"5975:18:4"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"5945:6:4"},{"kind":"number","nodeType":"YulLiteral","src":"5953:18:4","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5942:2:4"},"nodeType":"YulFunctionCall","src":"5942:30:4"},"nodeType":"YulIf","src":"5939:2:4"},{"nodeType":"YulAssignment","src":"6005:37:4","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"6035:6:4"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"6013:21:4"},"nodeType":"YulFunctionCall","src":"6013:29:4"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"6005:4:4"}]},{"nodeType":"YulAssignment","src":"6079:23:4","value":{"arguments":[{"name":"size","nodeType":"YulIdentifier","src":"6091:4:4"},{"kind":"number","nodeType":"YulLiteral","src":"6097:4:4","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6087:3:4"},"nodeType":"YulFunctionCall","src":"6087:15:4"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"6079:4:4"}]}]},"name":"array_allocation_size_t_string_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"length","nodeType":"YulTypedName","src":"5852:6:4","type":""}],"returnVariables":[{"name":"size","nodeType":"YulTypedName","src":"5863:4:4","type":""}],"src":"5801:308:4"},{"body":{"nodeType":"YulBlock","src":"6174:40:4","statements":[{"nodeType":"YulAssignment","src":"6185:22:4","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6201:5:4"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6195:5:4"},"nodeType":"YulFunctionCall","src":"6195:12:4"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"6185:6:4"}]}]},"name":"array_length_t_string_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"6157:5:4","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"6167:6:4","type":""}],"src":"6115:99:4"},{"body":{"nodeType":"YulBlock","src":"6316:73:4","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6333:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"6338:6:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6326:6:4"},"nodeType":"YulFunctionCall","src":"6326:19:4"},"nodeType":"YulExpressionStatement","src":"6326:19:4"},{"nodeType":"YulAssignment","src":"6354:29:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6373:3:4"},{"kind":"number","nodeType":"YulLiteral","src":"6378:4:4","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6369:3:4"},"nodeType":"YulFunctionCall","src":"6369:14:4"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"6354:11:4"}]}]},"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"6288:3:4","type":""},{"name":"length","nodeType":"YulTypedName","src":"6293:6:4","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"6304:11:4","type":""}],"src":"6220:169:4"},{"body":{"nodeType":"YulBlock","src":"6439:32:4","statements":[{"nodeType":"YulAssignment","src":"6449:16:4","value":{"name":"value","nodeType":"YulIdentifier","src":"6460:5:4"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"6449:7:4"}]}]},"name":"cleanup_t_int256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"6421:5:4","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"6431:7:4","type":""}],"src":"6395:76:4"},{"body":{"nodeType":"YulBlock","src":"6522:32:4","statements":[{"nodeType":"YulAssignment","src":"6532:16:4","value":{"name":"value","nodeType":"YulIdentifier","src":"6543:5:4"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"6532:7:4"}]}]},"name":"cleanup_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"6504:5:4","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"6514:7:4","type":""}],"src":"6477:77:4"},{"body":{"nodeType":"YulBlock","src":"6611:103:4","statements":[{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"6634:3:4"},{"name":"src","nodeType":"YulIdentifier","src":"6639:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"6644:6:4"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"6621:12:4"},"nodeType":"YulFunctionCall","src":"6621:30:4"},"nodeType":"YulExpressionStatement","src":"6621:30:4"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"6692:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"6697:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6688:3:4"},"nodeType":"YulFunctionCall","src":"6688:16:4"},{"kind":"number","nodeType":"YulLiteral","src":"6706:1:4","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6681:6:4"},"nodeType":"YulFunctionCall","src":"6681:27:4"},"nodeType":"YulExpressionStatement","src":"6681:27:4"}]},"name":"copy_calldata_to_memory","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"6593:3:4","type":""},{"name":"dst","nodeType":"YulTypedName","src":"6598:3:4","type":""},{"name":"length","nodeType":"YulTypedName","src":"6603:6:4","type":""}],"src":"6560:154:4"},{"body":{"nodeType":"YulBlock","src":"6769:258:4","statements":[{"nodeType":"YulVariableDeclaration","src":"6779:10:4","value":{"kind":"number","nodeType":"YulLiteral","src":"6788:1:4","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"6783:1:4","type":""}]},{"body":{"nodeType":"YulBlock","src":"6848:63:4","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"6873:3:4"},{"name":"i","nodeType":"YulIdentifier","src":"6878:1:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6869:3:4"},"nodeType":"YulFunctionCall","src":"6869:11:4"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"6892:3:4"},{"name":"i","nodeType":"YulIdentifier","src":"6897:1:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6888:3:4"},"nodeType":"YulFunctionCall","src":"6888:11:4"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6882:5:4"},"nodeType":"YulFunctionCall","src":"6882:18:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6862:6:4"},"nodeType":"YulFunctionCall","src":"6862:39:4"},"nodeType":"YulExpressionStatement","src":"6862:39:4"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"6809:1:4"},{"name":"length","nodeType":"YulIdentifier","src":"6812:6:4"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"6806:2:4"},"nodeType":"YulFunctionCall","src":"6806:13:4"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"6820:19:4","statements":[{"nodeType":"YulAssignment","src":"6822:15:4","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"6831:1:4"},{"kind":"number","nodeType":"YulLiteral","src":"6834:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6827:3:4"},"nodeType":"YulFunctionCall","src":"6827:10:4"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"6822:1:4"}]}]},"pre":{"nodeType":"YulBlock","src":"6802:3:4","statements":[]},"src":"6798:113:4"},{"body":{"nodeType":"YulBlock","src":"6945:76:4","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"6995:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"7000:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6991:3:4"},"nodeType":"YulFunctionCall","src":"6991:16:4"},{"kind":"number","nodeType":"YulLiteral","src":"7009:1:4","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6984:6:4"},"nodeType":"YulFunctionCall","src":"6984:27:4"},"nodeType":"YulExpressionStatement","src":"6984:27:4"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"6926:1:4"},{"name":"length","nodeType":"YulIdentifier","src":"6929:6:4"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"6923:2:4"},"nodeType":"YulFunctionCall","src":"6923:13:4"},"nodeType":"YulIf","src":"6920:2:4"}]},"name":"copy_memory_to_memory","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"6751:3:4","type":""},{"name":"dst","nodeType":"YulTypedName","src":"6756:3:4","type":""},{"name":"length","nodeType":"YulTypedName","src":"6761:6:4","type":""}],"src":"6720:307:4"},{"body":{"nodeType":"YulBlock","src":"7076:238:4","statements":[{"nodeType":"YulVariableDeclaration","src":"7086:58:4","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7108:6:4"},{"arguments":[{"name":"size","nodeType":"YulIdentifier","src":"7138:4:4"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"7116:21:4"},"nodeType":"YulFunctionCall","src":"7116:27:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7104:3:4"},"nodeType":"YulFunctionCall","src":"7104:40:4"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"7090:10:4","type":""}]},{"body":{"nodeType":"YulBlock","src":"7255:22:4","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"7257:16:4"},"nodeType":"YulFunctionCall","src":"7257:18:4"},"nodeType":"YulExpressionStatement","src":"7257:18:4"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"7198:10:4"},{"kind":"number","nodeType":"YulLiteral","src":"7210:18:4","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"7195:2:4"},"nodeType":"YulFunctionCall","src":"7195:34:4"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"7234:10:4"},{"name":"memPtr","nodeType":"YulIdentifier","src":"7246:6:4"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"7231:2:4"},"nodeType":"YulFunctionCall","src":"7231:22:4"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"7192:2:4"},"nodeType":"YulFunctionCall","src":"7192:62:4"},"nodeType":"YulIf","src":"7189:2:4"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7293:2:4","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"7297:10:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7286:6:4"},"nodeType":"YulFunctionCall","src":"7286:22:4"},"nodeType":"YulExpressionStatement","src":"7286:22:4"}]},"name":"finalize_allocation","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"7062:6:4","type":""},{"name":"size","nodeType":"YulTypedName","src":"7070:4:4","type":""}],"src":"7033:281:4"},{"body":{"nodeType":"YulBlock","src":"7363:190:4","statements":[{"nodeType":"YulAssignment","src":"7373:33:4","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"7400:5:4"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"7382:17:4"},"nodeType":"YulFunctionCall","src":"7382:24:4"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"7373:5:4"}]},{"body":{"nodeType":"YulBlock","src":"7496:22:4","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"7498:16:4"},"nodeType":"YulFunctionCall","src":"7498:18:4"},"nodeType":"YulExpressionStatement","src":"7498:18:4"}]},"condition":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"7421:5:4"},{"kind":"number","nodeType":"YulLiteral","src":"7428:66:4","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"7418:2:4"},"nodeType":"YulFunctionCall","src":"7418:77:4"},"nodeType":"YulIf","src":"7415:2:4"},{"nodeType":"YulAssignment","src":"7527:20:4","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"7538:5:4"},{"kind":"number","nodeType":"YulLiteral","src":"7545:1:4","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7534:3:4"},"nodeType":"YulFunctionCall","src":"7534:13:4"},"variableNames":[{"name":"ret","nodeType":"YulIdentifier","src":"7527:3:4"}]}]},"name":"increment_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"7349:5:4","type":""}],"returnVariables":[{"name":"ret","nodeType":"YulTypedName","src":"7359:3:4","type":""}],"src":"7320:233:4"},{"body":{"nodeType":"YulBlock","src":"7587:152:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7604:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7607:77:4","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7597:6:4"},"nodeType":"YulFunctionCall","src":"7597:88:4"},"nodeType":"YulExpressionStatement","src":"7597:88:4"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7701:1:4","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"7704:4:4","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7694:6:4"},"nodeType":"YulFunctionCall","src":"7694:15:4"},"nodeType":"YulExpressionStatement","src":"7694:15:4"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7725:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7728:4:4","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7718:6:4"},"nodeType":"YulFunctionCall","src":"7718:15:4"},"nodeType":"YulExpressionStatement","src":"7718:15:4"}]},"name":"panic_error_0x11","nodeType":"YulFunctionDefinition","src":"7559:180:4"},{"body":{"nodeType":"YulBlock","src":"7773:152:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7790:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7793:77:4","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7783:6:4"},"nodeType":"YulFunctionCall","src":"7783:88:4"},"nodeType":"YulExpressionStatement","src":"7783:88:4"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7887:1:4","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"7890:4:4","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7880:6:4"},"nodeType":"YulFunctionCall","src":"7880:15:4"},"nodeType":"YulExpressionStatement","src":"7880:15:4"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7911:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7914:4:4","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7904:6:4"},"nodeType":"YulFunctionCall","src":"7904:15:4"},"nodeType":"YulExpressionStatement","src":"7904:15:4"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"7745:180:4"},{"body":{"nodeType":"YulBlock","src":"7979:54:4","statements":[{"nodeType":"YulAssignment","src":"7989:38:4","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8007:5:4"},{"kind":"number","nodeType":"YulLiteral","src":"8014:2:4","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8003:3:4"},"nodeType":"YulFunctionCall","src":"8003:14:4"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8023:2:4","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"8019:3:4"},"nodeType":"YulFunctionCall","src":"8019:7:4"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7999:3:4"},"nodeType":"YulFunctionCall","src":"7999:28:4"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"7989:6:4"}]}]},"name":"round_up_to_mul_of_32","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"7962:5:4","type":""}],"returnVariables":[{"name":"result","nodeType":"YulTypedName","src":"7972:6:4","type":""}],"src":"7931:102:4"},{"body":{"nodeType":"YulBlock","src":"8081:78:4","statements":[{"body":{"nodeType":"YulBlock","src":"8137:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8146:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8149:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8139:6:4"},"nodeType":"YulFunctionCall","src":"8139:12:4"},"nodeType":"YulExpressionStatement","src":"8139:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8104:5:4"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8128:5:4"}],"functionName":{"name":"cleanup_t_int256","nodeType":"YulIdentifier","src":"8111:16:4"},"nodeType":"YulFunctionCall","src":"8111:23:4"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"8101:2:4"},"nodeType":"YulFunctionCall","src":"8101:34:4"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"8094:6:4"},"nodeType":"YulFunctionCall","src":"8094:42:4"},"nodeType":"YulIf","src":"8091:2:4"}]},"name":"validator_revert_t_int256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"8074:5:4","type":""}],"src":"8039:120:4"},{"body":{"nodeType":"YulBlock","src":"8208:79:4","statements":[{"body":{"nodeType":"YulBlock","src":"8265:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8274:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8277:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8267:6:4"},"nodeType":"YulFunctionCall","src":"8267:12:4"},"nodeType":"YulExpressionStatement","src":"8267:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8231:5:4"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8256:5:4"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"8238:17:4"},"nodeType":"YulFunctionCall","src":"8238:24:4"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"8228:2:4"},"nodeType":"YulFunctionCall","src":"8228:35:4"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"8221:6:4"},"nodeType":"YulFunctionCall","src":"8221:43:4"},"nodeType":"YulIf","src":"8218:2:4"}]},"name":"validator_revert_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"8201:5:4","type":""}],"src":"8165:122:4"}]},"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_int256(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_int256(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_int256(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_int256(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_decode_tuple_t_uint256(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_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_uint256t_string_memory_ptr(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_uint256(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := calldataload(add(headStart, 32))\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n\n value1 := abi_decode_t_string_memory_ptr(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_uint256t_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_uint256(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_encode_t_int256_to_t_int256_fromStack(value, pos) {\n mstore(pos, cleanup_t_int256(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 // struct Matchers.Pair -> struct Matchers.Pair\n function abi_encode_t_struct$_Pair_$412_memory_ptr_to_t_struct$_Pair_$412_memory_ptr_fromStack(value, pos) {\n let tail := add(pos, 0x40)\n\n {\n // a\n\n let memberValue0 := mload(add(value, 0x00))\n abi_encode_t_uint256_to_t_uint256(memberValue0, add(pos, 0x00))\n }\n\n {\n // b\n\n let memberValue0 := mload(add(value, 0x20))\n abi_encode_t_uint256_to_t_uint256(memberValue0, add(pos, 0x20))\n }\n\n }\n\n function abi_encode_t_uint256_to_t_uint256(value, pos) {\n mstore(pos, cleanup_t_uint256(value))\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_int256__to_t_int256__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_int256_to_t_int256_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_struct$_Pair_$412_memory_ptr__to_t_struct$_Pair_$412_memory_ptr__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_struct$_Pair_$412_memory_ptr_to_t_struct$_Pair_$412_memory_ptr_fromStack(value0, add(headStart, 0))\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_string_memory_ptr__to_t_uint256_t_string_memory_ptr__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 mstore(add(headStart, 32), sub(tail, headStart))\n tail := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack(value1, tail)\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 cleanup_t_int256(value) -> cleaned {\n cleaned := value\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 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 increment_t_uint256(value) -> ret {\n value := cleanup_t_uint256(value)\n if eq(value, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) { panic_error_0x11() }\n ret := add(value, 1)\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_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 validator_revert_t_int256(value) {\n if iszero(eq(value, cleanup_t_int256(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":4,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106101425760003560e01c806373d2ea85116100b8578063aac014e01161007c578063aac014e01461028b578063b6bbe06114610295578063bad92aa91461029f578063e0a03812146102a9578063fe276a34146102c5578063ffb4746b146102e157610142565b806373d2ea851461022357806374afd4521461023f578063772f243a146102495780637c3cb0af146102535780638f9330301461026f57610142565b80634b5bbf6a1161010a5780634b5bbf6a146101c157806358a1d1ed146101cb5780635b94e31e146101d5578063622051f1146101df5780636f1fdc31146101e95780636fc588d21461020557610142565b80631b4f3f3d146101475780631f542cf3146101515780633ba4178b1461016d578063467e3d371461018957806347c56769146101a5575b600080fd5b61014f6102eb565b005b61016b60048036038101906101669190610a66565b61030f565b005b61018760048036038101906101829190610a12565b610360565b005b6101a3600480360381019061019e91906109a8565b61039f565b005b6101bf60048036038101906101ba919061097f565b6103e7565b005b6101c9610424565b005b6101d361046d565b005b6101dd61047a565b005b6101e76104b1565b005b61020360048036038101906101fe91906109a8565b610533565b005b61020d610592565b60405161021a9190610b8f565b60405180910390f35b61023d600480360381019061023891906109e9565b61059b565b005b6102476105ef565b005b610251610608565b005b61026d600480360381019061026891906109e9565b6106a3565b005b6102896004803603810190610284919061097f565b6106e0565b005b610293610734565b005b61029d610766565b005b6102a76107b4565b005b6102c360048036038101906102be9190610a66565b6107fd565b005b6102df60048036038101906102da9190610a12565b610865565b005b6102e96108bb565b005b6000808154809291906102fd90610cd3565b9190505550600061030d57600080fd5b565b6040518060400160405280838152602001828152506040517fdecab0e70000000000000000000000000000000000000000000000000000000081526004016103579190610b74565b60405180910390fd5b81816040517fa92ee8e3000000000000000000000000000000000000000000000000000000008152600401610396929190610baa565b60405180910390fd5b600081906103e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103da9190610b52565b60405180910390fd5b5050565b806040517fcdd7a0cc00000000000000000000000000000000000000000000000000000000815260040161041b9190610b37565b60405180910390fd5b60008081548092919061043690610cd3565b91905055506040517fd2c097a600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061047857600080fd5b565b60006104af577f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340d83b246040518163ffffffff1660e01b815260040160006040518083038186803b15801561051957600080fd5b505afa15801561052d573d6000803e3d6000fd5b50505050565b60008081548092919061054590610cd3565b91905055506000819061058e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105859190610b52565b60405180910390fd5b5050565b60008054905090565b6000808154809291906105ad90610cd3565b9190505550806040517f01f4d5d20000000000000000000000000000000000000000000000000000000081526004016105e69190610b8f565b60405180910390fd5b60008081548092919061060190610cd3565b9190505550565b60008081548092919061061a90610cd3565b9190505550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634b2bd7e96040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561068957600080fd5b505af115801561069d573d6000803e3d6000fd5b50505050565b806040517f01f4d5d20000000000000000000000000000000000000000000000000000000081526004016106d79190610b8f565b60405180910390fd5b6000808154809291906106f290610cd3565b9190505550806040517fcdd7a0cc00000000000000000000000000000000000000000000000000000000815260040161072b9190610b37565b60405180910390fd5b6040517fd2c097a600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008081548092919061077890610cd3565b919050555060006107b2577f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b565b6000808154809291906107c690610cd3565b91905055506040517f0bd3d39c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008081548092919061080f90610cd3565b91905055506040518060400160405280838152602001828152506040517fdecab0e700000000000000000000000000000000000000000000000000000000815260040161085c9190610b74565b60405180910390fd5b60008081548092919061087790610cd3565b919050555081816040517fa92ee8e30000000000000000000000000000000000000000000000000000000081526004016108b2929190610baa565b60405180910390fd5b6040517f0bd3d39c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006109006108fb84610bff565b610bda565b90508281526020810184848401111561091857600080fd5b610923848285610c60565b509392505050565b60008135905061093a81610d8b565b92915050565b600082601f83011261095157600080fd5b81356109618482602086016108ed565b91505092915050565b60008135905061097981610da2565b92915050565b60006020828403121561099157600080fd5b600061099f8482850161092b565b91505092915050565b6000602082840312156109ba57600080fd5b600082013567ffffffffffffffff8111156109d457600080fd5b6109e084828501610940565b91505092915050565b6000602082840312156109fb57600080fd5b6000610a098482850161096a565b91505092915050565b60008060408385031215610a2557600080fd5b6000610a338582860161096a565b925050602083013567ffffffffffffffff811115610a5057600080fd5b610a5c85828601610940565b9150509250929050565b60008060408385031215610a7957600080fd5b6000610a878582860161096a565b9250506020610a988582860161096a565b9150509250929050565b610aab81610c4c565b82525050565b6000610abc82610c30565b610ac68185610c3b565b9350610ad6818560208601610c6f565b610adf81610d7a565b840191505092915050565b604082016000820151610b006000850182610b19565b506020820151610b136020850182610b19565b50505050565b610b2281610c56565b82525050565b610b3181610c56565b82525050565b6000602082019050610b4c6000830184610aa2565b92915050565b60006020820190508181036000830152610b6c8184610ab1565b905092915050565b6000604082019050610b896000830184610aea565b92915050565b6000602082019050610ba46000830184610b28565b92915050565b6000604082019050610bbf6000830185610b28565b8181036020830152610bd18184610ab1565b90509392505050565b6000610be4610bf5565b9050610bf08282610ca2565b919050565b6000604051905090565b600067ffffffffffffffff821115610c1a57610c19610d4b565b5b610c2382610d7a565b9050602081019050919050565b600081519050919050565b600082825260208201905092915050565b6000819050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015610c8d578082015181840152602081019050610c72565b83811115610c9c576000848401525b50505050565b610cab82610d7a565b810181811067ffffffffffffffff82111715610cca57610cc9610d4b565b5b80604052505050565b6000610cde82610c56565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415610d1157610d10610d1c565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b610d9481610c4c565b8114610d9f57600080fd5b50565b610dab81610c56565b8114610db657600080fd5b5056fea264697066735822122025e4c9eca28af81eeb16cfbb3832355e24c64c7eae221a5034159a671d61281464736f6c63430008040033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x142 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x73D2EA85 GT PUSH2 0xB8 JUMPI DUP1 PUSH4 0xAAC014E0 GT PUSH2 0x7C JUMPI DUP1 PUSH4 0xAAC014E0 EQ PUSH2 0x28B JUMPI DUP1 PUSH4 0xB6BBE061 EQ PUSH2 0x295 JUMPI DUP1 PUSH4 0xBAD92AA9 EQ PUSH2 0x29F JUMPI DUP1 PUSH4 0xE0A03812 EQ PUSH2 0x2A9 JUMPI DUP1 PUSH4 0xFE276A34 EQ PUSH2 0x2C5 JUMPI DUP1 PUSH4 0xFFB4746B EQ PUSH2 0x2E1 JUMPI PUSH2 0x142 JUMP JUMPDEST DUP1 PUSH4 0x73D2EA85 EQ PUSH2 0x223 JUMPI DUP1 PUSH4 0x74AFD452 EQ PUSH2 0x23F JUMPI DUP1 PUSH4 0x772F243A EQ PUSH2 0x249 JUMPI DUP1 PUSH4 0x7C3CB0AF EQ PUSH2 0x253 JUMPI DUP1 PUSH4 0x8F933030 EQ PUSH2 0x26F JUMPI PUSH2 0x142 JUMP JUMPDEST DUP1 PUSH4 0x4B5BBF6A GT PUSH2 0x10A JUMPI DUP1 PUSH4 0x4B5BBF6A EQ PUSH2 0x1C1 JUMPI DUP1 PUSH4 0x58A1D1ED EQ PUSH2 0x1CB JUMPI DUP1 PUSH4 0x5B94E31E EQ PUSH2 0x1D5 JUMPI DUP1 PUSH4 0x622051F1 EQ PUSH2 0x1DF JUMPI DUP1 PUSH4 0x6F1FDC31 EQ PUSH2 0x1E9 JUMPI DUP1 PUSH4 0x6FC588D2 EQ PUSH2 0x205 JUMPI PUSH2 0x142 JUMP JUMPDEST DUP1 PUSH4 0x1B4F3F3D EQ PUSH2 0x147 JUMPI DUP1 PUSH4 0x1F542CF3 EQ PUSH2 0x151 JUMPI DUP1 PUSH4 0x3BA4178B EQ PUSH2 0x16D JUMPI DUP1 PUSH4 0x467E3D37 EQ PUSH2 0x189 JUMPI DUP1 PUSH4 0x47C56769 EQ PUSH2 0x1A5 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x14F PUSH2 0x2EB JUMP JUMPDEST STOP JUMPDEST PUSH2 0x16B PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x166 SWAP2 SWAP1 PUSH2 0xA66 JUMP JUMPDEST PUSH2 0x30F JUMP JUMPDEST STOP JUMPDEST PUSH2 0x187 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x182 SWAP2 SWAP1 PUSH2 0xA12 JUMP JUMPDEST PUSH2 0x360 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1A3 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x19E SWAP2 SWAP1 PUSH2 0x9A8 JUMP JUMPDEST PUSH2 0x39F JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1BF PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1BA SWAP2 SWAP1 PUSH2 0x97F JUMP JUMPDEST PUSH2 0x3E7 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1C9 PUSH2 0x424 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1D3 PUSH2 0x46D JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1DD PUSH2 0x47A JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1E7 PUSH2 0x4B1 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x203 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1FE SWAP2 SWAP1 PUSH2 0x9A8 JUMP JUMPDEST PUSH2 0x533 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x20D PUSH2 0x592 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x21A SWAP2 SWAP1 PUSH2 0xB8F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x23D PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x238 SWAP2 SWAP1 PUSH2 0x9E9 JUMP JUMPDEST PUSH2 0x59B JUMP JUMPDEST STOP JUMPDEST PUSH2 0x247 PUSH2 0x5EF JUMP JUMPDEST STOP JUMPDEST PUSH2 0x251 PUSH2 0x608 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x26D PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x268 SWAP2 SWAP1 PUSH2 0x9E9 JUMP JUMPDEST PUSH2 0x6A3 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x289 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x284 SWAP2 SWAP1 PUSH2 0x97F JUMP JUMPDEST PUSH2 0x6E0 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x293 PUSH2 0x734 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x29D PUSH2 0x766 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2A7 PUSH2 0x7B4 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2C3 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2BE SWAP2 SWAP1 PUSH2 0xA66 JUMP JUMPDEST PUSH2 0x7FD JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2DF PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2DA SWAP2 SWAP1 PUSH2 0xA12 JUMP JUMPDEST PUSH2 0x865 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2E9 PUSH2 0x8BB JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 DUP2 SLOAD DUP1 SWAP3 SWAP2 SWAP1 PUSH2 0x2FD SWAP1 PUSH2 0xCD3 JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE POP PUSH1 0x0 PUSH2 0x30D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE POP PUSH1 0x40 MLOAD PUSH32 0xDECAB0E700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x357 SWAP2 SWAP1 PUSH2 0xB74 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 DUP2 PUSH1 0x40 MLOAD PUSH32 0xA92EE8E300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x396 SWAP3 SWAP2 SWAP1 PUSH2 0xBAA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 SWAP1 PUSH2 0x3E3 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DA SWAP2 SWAP1 PUSH2 0xB52 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP JUMP JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH32 0xCDD7A0CC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x41B SWAP2 SWAP1 PUSH2 0xB37 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP2 SLOAD DUP1 SWAP3 SWAP2 SWAP1 PUSH2 0x436 SWAP1 PUSH2 0xCD3 JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE POP PUSH1 0x40 MLOAD PUSH32 0xD2C097A600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x478 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4AF JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x1 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x40D83B24 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x519 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x52D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP2 SLOAD DUP1 SWAP3 SWAP2 SWAP1 PUSH2 0x545 SWAP1 PUSH2 0xCD3 JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE POP PUSH1 0x0 DUP2 SWAP1 PUSH2 0x58E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x585 SWAP2 SWAP1 PUSH2 0xB52 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP2 SLOAD DUP1 SWAP3 SWAP2 SWAP1 PUSH2 0x5AD SWAP1 PUSH2 0xCD3 JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE POP DUP1 PUSH1 0x40 MLOAD PUSH32 0x1F4D5D200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5E6 SWAP2 SWAP1 PUSH2 0xB8F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP2 SLOAD DUP1 SWAP3 SWAP2 SWAP1 PUSH2 0x601 SWAP1 PUSH2 0xCD3 JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP2 SLOAD DUP1 SWAP3 SWAP2 SWAP1 PUSH2 0x61A SWAP1 PUSH2 0xCD3 JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE POP PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x4B2BD7E9 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x689 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x69D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMP JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH32 0x1F4D5D200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x6D7 SWAP2 SWAP1 PUSH2 0xB8F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP2 SLOAD DUP1 SWAP3 SWAP2 SWAP1 PUSH2 0x6F2 SWAP1 PUSH2 0xCD3 JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE POP DUP1 PUSH1 0x40 MLOAD PUSH32 0xCDD7A0CC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x72B SWAP2 SWAP1 PUSH2 0xB37 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xD2C097A600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP2 SLOAD DUP1 SWAP3 SWAP2 SWAP1 PUSH2 0x778 SWAP1 PUSH2 0xCD3 JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE POP PUSH1 0x0 PUSH2 0x7B2 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x1 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST JUMP JUMPDEST PUSH1 0x0 DUP1 DUP2 SLOAD DUP1 SWAP3 SWAP2 SWAP1 PUSH2 0x7C6 SWAP1 PUSH2 0xCD3 JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE POP PUSH1 0x40 MLOAD PUSH32 0xBD3D39C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP2 SLOAD DUP1 SWAP3 SWAP2 SWAP1 PUSH2 0x80F SWAP1 PUSH2 0xCD3 JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE POP PUSH1 0x40 MLOAD PUSH32 0xDECAB0E700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x85C SWAP2 SWAP1 PUSH2 0xB74 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP2 SLOAD DUP1 SWAP3 SWAP2 SWAP1 PUSH2 0x877 SWAP1 PUSH2 0xCD3 JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE POP DUP2 DUP2 PUSH1 0x40 MLOAD PUSH32 0xA92EE8E300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x8B2 SWAP3 SWAP2 SWAP1 PUSH2 0xBAA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xBD3D39C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x900 PUSH2 0x8FB DUP5 PUSH2 0xBFF JUMP JUMPDEST PUSH2 0xBDA JUMP JUMPDEST SWAP1 POP DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 DUP5 DUP5 ADD GT ISZERO PUSH2 0x918 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x923 DUP5 DUP3 DUP6 PUSH2 0xC60 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x93A DUP2 PUSH2 0xD8B JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x951 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x961 DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x8ED JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x979 DUP2 PUSH2 0xDA2 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x991 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x99F DUP5 DUP3 DUP6 ADD PUSH2 0x92B JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x9BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x9D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9E0 DUP5 DUP3 DUP6 ADD PUSH2 0x940 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x9FB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xA09 DUP5 DUP3 DUP6 ADD PUSH2 0x96A JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xA25 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xA33 DUP6 DUP3 DUP7 ADD PUSH2 0x96A JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xA50 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA5C DUP6 DUP3 DUP7 ADD PUSH2 0x940 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xA79 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xA87 DUP6 DUP3 DUP7 ADD PUSH2 0x96A JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0xA98 DUP6 DUP3 DUP7 ADD PUSH2 0x96A JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH2 0xAAB DUP2 PUSH2 0xC4C JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xABC DUP3 PUSH2 0xC30 JUMP JUMPDEST PUSH2 0xAC6 DUP2 DUP6 PUSH2 0xC3B JUMP JUMPDEST SWAP4 POP PUSH2 0xAD6 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0xC6F JUMP JUMPDEST PUSH2 0xADF DUP2 PUSH2 0xD7A JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP3 ADD PUSH1 0x0 DUP3 ADD MLOAD PUSH2 0xB00 PUSH1 0x0 DUP6 ADD DUP3 PUSH2 0xB19 JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0xB13 PUSH1 0x20 DUP6 ADD DUP3 PUSH2 0xB19 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0xB22 DUP2 PUSH2 0xC56 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0xB31 DUP2 PUSH2 0xC56 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xB4C PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xAA2 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 0xB6C DUP2 DUP5 PUSH2 0xAB1 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0xB89 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xAEA JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xBA4 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xB28 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0xBBF PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0xB28 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0xBD1 DUP2 DUP5 PUSH2 0xAB1 JUMP JUMPDEST SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xBE4 PUSH2 0xBF5 JUMP JUMPDEST SWAP1 POP PUSH2 0xBF0 DUP3 DUP3 PUSH2 0xCA2 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 0xC1A JUMPI PUSH2 0xC19 PUSH2 0xD4B JUMP JUMPDEST JUMPDEST PUSH2 0xC23 DUP3 PUSH2 0xD7A 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 DUP2 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 0xC8D JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0xC72 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0xC9C JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0xCAB DUP3 PUSH2 0xD7A JUMP JUMPDEST DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0xCCA JUMPI PUSH2 0xCC9 PUSH2 0xD4B JUMP JUMPDEST JUMPDEST DUP1 PUSH1 0x40 MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCDE DUP3 PUSH2 0xC56 JUMP JUMPDEST SWAP2 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 EQ ISZERO PUSH2 0xD11 JUMPI PUSH2 0xD10 PUSH2 0xD1C JUMP JUMPDEST JUMPDEST PUSH1 0x1 DUP3 ADD SWAP1 POP SWAP2 SWAP1 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 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 PUSH2 0xD94 DUP2 PUSH2 0xC4C JUMP JUMPDEST DUP2 EQ PUSH2 0xD9F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0xDAB DUP2 PUSH2 0xC56 JUMP JUMPDEST DUP2 EQ PUSH2 0xDB6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x25 0xE4 0xC9 0xEC LOG2 DUP11 0xF8 0x1E 0xEB AND 0xCF 0xBB CODESIZE ORIGIN CALLDATALOAD 0x5E 0x24 0xC6 0x4C PUSH31 0xAE221A5034159A671D61281464736F6C634300080400330000000000000000 ","sourceMap":"65:2709:2:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;888:73;;;:::i;:::-;;2652:120;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2383:141;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;792:92;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2134:100;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1360:94;;;:::i;:::-;;965:73;;;:::i;:::-;;1109:63;;;:::i;:::-;;1684:128;;;:::i;:::-;;696:92;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;622:70;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1816:103;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;542:76;;;:::i;:::-;;1556:124;;;:::i;:::-;;1923:103;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2030:100;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1458:94;;;:::i;:::-;;1042:63;;;:::i;:::-;;1176:88;;;:::i;:::-;;2528:120;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2238:141;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1268:88;;;:::i;:::-;;888:73;933:1;;:3;;;;;;;;;:::i;:::-;;;;;;950:5;942:14;;;;;;888:73::o;2652:120::-;2756:10;;;;;;;;2761:1;2756:10;;;;2764:1;2756:10;;;2736:31;;;;;;;;;;;:::i;:::-;;;;;;;;2383:141;2514:1;2517;2485:34;;;;;;;;;;;;:::i;:::-;;;;;;;;792:92;865:5;872:6;857:22;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;792:92;:::o;2134:100::-;2227:1;2208:21;;;;;;;;;;;:::i;:::-;;;;;;;;1360:94;1413:1;;:3;;;;;;;;;:::i;:::-;;;;;;1429:20;;;;;;;;;;;;;;965:73;1027:5;1019:14;;;;;;965:73::o;1109:63::-;1161:5;1154:13;;;;;;;;;;;;1109:63::o;1684:128::-;1754:15;;;;;;;;;;;:51;;;:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1684:128::o;696:92::-;752:1;;:3;;;;;;;;;:::i;:::-;;;;;;769:5;776:6;761:22;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;696:92;:::o;622:70::-;667:4;686:1;;679:8;;622:70;:::o;1816:103::-;1876:1;;:3;;;;;;;;;:::i;:::-;;;;;;1912:1;1892:22;;;;;;;;;;;:::i;:::-;;;;;;;;542:76;575:1;;:3;;;;;;;;;:::i;:::-;;;;;;542:76::o;1556:124::-;1617:1;;:3;;;;;;;;;:::i;:::-;;;;;;1626:15;;;;;;;;;;;:47;;;:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1556:124::o;1923:103::-;2019:1;1999:22;;;;;;;;;;;:::i;:::-;;;;;;;;2030:100;2088:1;;:3;;;;;;;;;:::i;:::-;;;;;;2123:1;2104:21;;;;;;;;;;;:::i;:::-;;;;;;;;1458:94;1527:20;;;;;;;;;;;;;;1042:63;1078:1;;:3;;;;;;;;;:::i;:::-;;;;;;1094:5;1087:13;;;;;;;;;;;;1042:63::o;1176:88::-;1226:1;;:3;;;;;;;;;:::i;:::-;;;;;;1242:17;;;;;;;;;;;;;;2528:120;2596:1;;:3;;;;;;;;;:::i;:::-;;;;;;2632:10;;;;;;;;2637:1;2632:10;;;;2640:1;2632:10;;;2612:31;;;;;;;;;;;:::i;:::-;;;;;;;;2238:141;2324:1;;:3;;;;;;;;;:::i;:::-;;;;;;2369:1;2372;2340:34;;;;;;;;;;;;:::i;:::-;;;;;;;;1268:88;1334:17;;;;;;;;;;;;;;7:345:4;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:137::-;403:5;441:6;428:20;419:29;;457:32;483:5;457:32;:::i;:::-;409:86;;;;:::o;515:273::-;571:5;620:3;613:4;605:6;601:17;597:27;587:2;;638:1;635;628:12;587:2;678:6;665:20;703:79;778:3;770:6;763:4;755:6;751:17;703:79;:::i;:::-;694:88;;577:211;;;;;:::o;794:139::-;840:5;878:6;865:20;856:29;;894:33;921:5;894:33;:::i;:::-;846:87;;;;:::o;939:260::-;997:6;1046:2;1034:9;1025:7;1021:23;1017:32;1014:2;;;1062:1;1059;1052:12;1014:2;1105:1;1130:52;1174:7;1165:6;1154:9;1150:22;1130:52;:::i;:::-;1120:62;;1076:116;1004:195;;;;:::o;1205:375::-;1274:6;1323:2;1311:9;1302:7;1298:23;1294:32;1291:2;;;1339:1;1336;1329:12;1291:2;1410:1;1399:9;1395:17;1382:31;1440:18;1432:6;1429:30;1426:2;;;1472:1;1469;1462:12;1426:2;1500:63;1555:7;1546:6;1535:9;1531:22;1500:63;:::i;:::-;1490:73;;1353:220;1281:299;;;;:::o;1586:262::-;1645:6;1694:2;1682:9;1673:7;1669:23;1665:32;1662:2;;;1710:1;1707;1700:12;1662:2;1753:1;1778:53;1823:7;1814:6;1803:9;1799:22;1778:53;:::i;:::-;1768:63;;1724:117;1652:196;;;;:::o;1854:520::-;1932:6;1940;1989:2;1977:9;1968:7;1964:23;1960:32;1957:2;;;2005:1;2002;1995:12;1957:2;2048:1;2073:53;2118:7;2109:6;2098:9;2094:22;2073:53;:::i;:::-;2063:63;;2019:117;2203:2;2192:9;2188:18;2175:32;2234:18;2226:6;2223:30;2220:2;;;2266:1;2263;2256:12;2220:2;2294:63;2349:7;2340:6;2329:9;2325:22;2294:63;:::i;:::-;2284:73;;2146:221;1947:427;;;;;:::o;2380:407::-;2448:6;2456;2505:2;2493:9;2484:7;2480:23;2476:32;2473:2;;;2521:1;2518;2511:12;2473:2;2564:1;2589:53;2634:7;2625:6;2614:9;2610:22;2589:53;:::i;:::-;2579:63;;2535:117;2691:2;2717:53;2762:7;2753:6;2742:9;2738:22;2717:53;:::i;:::-;2707:63;;2662:118;2463:324;;;;;:::o;2793:115::-;2878:23;2895:5;2878:23;:::i;:::-;2873:3;2866:36;2856:52;;:::o;2914:364::-;3002:3;3030:39;3063:5;3030:39;:::i;:::-;3085:71;3149:6;3144:3;3085:71;:::i;:::-;3078:78;;3165:52;3210:6;3205:3;3198:4;3191:5;3187:16;3165:52;:::i;:::-;3242:29;3264:6;3242:29;:::i;:::-;3237:3;3233:39;3226:46;;3006:272;;;;;:::o;3336:493::-;3475:4;3470:3;3466:14;3559:4;3552:5;3548:16;3542:23;3578:63;3635:4;3630:3;3626:14;3612:12;3578:63;:::i;:::-;3490:161;3730:4;3723:5;3719:16;3713:23;3749:63;3806:4;3801:3;3797:14;3783:12;3749:63;:::i;:::-;3661:161;3444:385;;;:::o;3835:108::-;3912:24;3930:5;3912:24;:::i;:::-;3907:3;3900:37;3890:53;;:::o;3949:118::-;4036:24;4054:5;4036:24;:::i;:::-;4031:3;4024:37;4014:53;;:::o;4073:218::-;4164:4;4202:2;4191:9;4187:18;4179:26;;4215:69;4281:1;4270:9;4266:17;4257:6;4215:69;:::i;:::-;4169:122;;;;:::o;4297:313::-;4410:4;4448:2;4437:9;4433:18;4425:26;;4497:9;4491:4;4487:20;4483:1;4472:9;4468:17;4461:47;4525:78;4598:4;4589:6;4525:78;:::i;:::-;4517:86;;4415:195;;;;:::o;4616:306::-;4751:4;4789:2;4778:9;4774:18;4766:26;;4802:113;4912:1;4901:9;4897:17;4888:6;4802:113;:::i;:::-;4756:166;;;;:::o;4928:222::-;5021:4;5059:2;5048:9;5044:18;5036:26;;5072:71;5140:1;5129:9;5125:17;5116:6;5072:71;:::i;:::-;5026:124;;;;:::o;5156:423::-;5297:4;5335:2;5324:9;5320:18;5312:26;;5348:71;5416:1;5405:9;5401:17;5392:6;5348:71;:::i;:::-;5466:9;5460:4;5456:20;5451:2;5440:9;5436:18;5429:48;5494:78;5567:4;5558:6;5494:78;:::i;:::-;5486:86;;5302:277;;;;;:::o;5585:129::-;5619:6;5646:20;;:::i;:::-;5636:30;;5675:33;5703:4;5695:6;5675:33;:::i;:::-;5626:88;;;:::o;5720:75::-;5753:6;5786:2;5780:9;5770:19;;5760:35;:::o;5801:308::-;5863:4;5953:18;5945:6;5942:30;5939:2;;;5975:18;;:::i;:::-;5939:2;6013:29;6035:6;6013:29;:::i;:::-;6005:37;;6097:4;6091;6087:15;6079:23;;5868:241;;;:::o;6115:99::-;6167:6;6201:5;6195:12;6185:22;;6174:40;;;:::o;6220:169::-;6304:11;6338:6;6333:3;6326:19;6378:4;6373:3;6369:14;6354:29;;6316:73;;;;:::o;6395:76::-;6431:7;6460:5;6449:16;;6439:32;;;:::o;6477:77::-;6514:7;6543:5;6532:16;;6522:32;;;:::o;6560:154::-;6644:6;6639:3;6634;6621:30;6706:1;6697:6;6692:3;6688:16;6681:27;6611:103;;;:::o;6720:307::-;6788:1;6798:113;6812:6;6809:1;6806:13;6798:113;;;6897:1;6892:3;6888:11;6882:18;6878:1;6873:3;6869:11;6862:39;6834:2;6831:1;6827:10;6822:15;;6798:113;;;6929:6;6926:1;6923:13;6920:2;;;7009:1;7000:6;6995:3;6991:16;6984:27;6920:2;6769:258;;;;:::o;7033:281::-;7116:27;7138:4;7116:27;:::i;:::-;7108:6;7104:40;7246:6;7234:10;7231:22;7210:18;7198:10;7195:34;7192:62;7189:2;;;7257:18;;:::i;:::-;7189:2;7297:10;7293:2;7286:22;7076:238;;;:::o;7320:233::-;7359:3;7382:24;7400:5;7382:24;:::i;:::-;7373:33;;7428:66;7421:5;7418:77;7415:2;;;7498:18;;:::i;:::-;7415:2;7545:1;7538:5;7534:13;7527:20;;7363:190;;;:::o;7559:180::-;7607:77;7604:1;7597:88;7704:4;7701:1;7694:15;7728:4;7725:1;7718:15;7745:180;7793:77;7790:1;7783:88;7890:4;7887:1;7880:15;7914:4;7911:1;7904:15;7931:102;7972:6;8023:2;8019:7;8014:2;8007:5;8003:14;7999:28;7989:38;;7979:54;;;:::o;8039:120::-;8111:23;8128:5;8111:23;:::i;:::-;8104:5;8101:34;8091:2;;8149:1;8146;8139:12;8091:2;8081:78;:::o;8165:122::-;8238:24;8256:5;8238:24;:::i;:::-;8231:5;8228:35;8218:2;;8277:1;8274;8267:12;8218:2;8208:79;:::o"},"methodIdentifiers":{"panicAssert()":"b6bbe061","panicAssertView()":"5b94e31e","revertWithAnotherContractCustomError()":"772f243a","revertWithAnotherContractCustomErrorView()":"622051f1","revertWithAnotherCustomError()":"4b5bbf6a","revertWithAnotherCustomErrorView()":"aac014e0","revertWithCustomErrorWithInt(int256)":"8f933030","revertWithCustomErrorWithIntView(int256)":"47c56769","revertWithCustomErrorWithPair(uint256,uint256)":"e0a03812","revertWithCustomErrorWithPairView(uint256,uint256)":"1f542cf3","revertWithCustomErrorWithUint(uint256)":"73d2ea85","revertWithCustomErrorWithUintAndString(uint256,string)":"fe276a34","revertWithCustomErrorWithUintAndStringView(uint256,string)":"3ba4178b","revertWithCustomErrorWithUintView(uint256)":"7c3cb0af","revertWithSomeCustomError()":"bad92aa9","revertWithSomeCustomErrorView()":"ffb4746b","revertsWith(string)":"6f1fdc31","revertsWithView(string)":"467e3d37","revertsWithoutReason()":"1b4f3f3d","revertsWithoutReasonView()":"58a1d1ed","succeeds()":"74afd452","succeedsView()":"6fc588d2"}},"metadata":"{\"compiler\":{\"version\":\"0.8.4+commit.c7e474f2\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AnotherCustomError\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"CustomErrorWithInt\",\"type\":\"error\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"a\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"b\",\"type\":\"uint256\"}],\"internalType\":\"struct Matchers.Pair\",\"name\":\"\",\"type\":\"tuple\"}],\"name\":\"CustomErrorWithPair\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"nameToForceEthersToUseAnArrayLikeWithNamedProperties\",\"type\":\"uint256\"}],\"name\":\"CustomErrorWithUint\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"CustomErrorWithUintAndString\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SomeCustomError\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"SomeEvent\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"panicAssert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"panicAssertView\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"revertWithAnotherContractCustomError\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"revertWithAnotherContractCustomErrorView\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"revertWithAnotherCustomError\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"revertWithAnotherCustomErrorView\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"i\",\"type\":\"int256\"}],\"name\":\"revertWithCustomErrorWithInt\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"i\",\"type\":\"int256\"}],\"name\":\"revertWithCustomErrorWithIntView\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"a\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"b\",\"type\":\"uint256\"}],\"name\":\"revertWithCustomErrorWithPair\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"a\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"b\",\"type\":\"uint256\"}],\"name\":\"revertWithCustomErrorWithPairView\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"n\",\"type\":\"uint256\"}],\"name\":\"revertWithCustomErrorWithUint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"n\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"s\",\"type\":\"string\"}],\"name\":\"revertWithCustomErrorWithUintAndString\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"n\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"s\",\"type\":\"string\"}],\"name\":\"revertWithCustomErrorWithUintAndStringView\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"n\",\"type\":\"uint256\"}],\"name\":\"revertWithCustomErrorWithUintView\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"revertWithSomeCustomError\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"revertWithSomeCustomErrorView\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"revertsWith\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"revertsWithView\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"revertsWithoutReason\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"revertsWithoutReasonView\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"succeeds\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"succeedsView\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/Matchers.sol\":\"Matchers\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/Matchers.sol\":{\"keccak256\":\"0x5a69001d60d8f2498c88a26a86619900f4a7d1e7443adcb5f6bf73b112e659df\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://ca96217e25bd9b0beccc5038bcde4bb32fc71f7828c01e2254f7c6eb06b2ec1c\",\"dweb:/ipfs/QmaHs3KgdszUPBCWbYsxriReGFePSG1AE23BxSCa98cnT9\"]}},\"version\":1}"}},"contracts/Token.sol":{"MockToken":{"abi":[{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"remaining","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:516:4","statements":[{"body":{"nodeType":"YulBlock","src":"58:269:4","statements":[{"nodeType":"YulAssignment","src":"68:22:4","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"82:4:4"},{"kind":"number","nodeType":"YulLiteral","src":"88:1:4","type":"","value":"2"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"78:3:4"},"nodeType":"YulFunctionCall","src":"78:12:4"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"68:6:4"}]},{"nodeType":"YulVariableDeclaration","src":"99:38:4","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"129:4:4"},{"kind":"number","nodeType":"YulLiteral","src":"135:1:4","type":"","value":"1"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"125:3:4"},"nodeType":"YulFunctionCall","src":"125:12:4"},"variables":[{"name":"outOfPlaceEncoding","nodeType":"YulTypedName","src":"103:18:4","type":""}]},{"body":{"nodeType":"YulBlock","src":"176:51:4","statements":[{"nodeType":"YulAssignment","src":"190:27:4","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"204:6:4"},{"kind":"number","nodeType":"YulLiteral","src":"212:4:4","type":"","value":"0x7f"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"200:3:4"},"nodeType":"YulFunctionCall","src":"200:17:4"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"190:6:4"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"156:18:4"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"149:6:4"},"nodeType":"YulFunctionCall","src":"149:26:4"},"nodeType":"YulIf","src":"146:2:4"},{"body":{"nodeType":"YulBlock","src":"279:42:4","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x22","nodeType":"YulIdentifier","src":"293:16:4"},"nodeType":"YulFunctionCall","src":"293:18:4"},"nodeType":"YulExpressionStatement","src":"293:18:4"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"243:18:4"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"266:6:4"},{"kind":"number","nodeType":"YulLiteral","src":"274:2:4","type":"","value":"32"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"263:2:4"},"nodeType":"YulFunctionCall","src":"263:14:4"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"240:2:4"},"nodeType":"YulFunctionCall","src":"240:38:4"},"nodeType":"YulIf","src":"237:2:4"}]},"name":"extract_byte_array_length","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"42:4:4","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"51:6:4","type":""}],"src":"7:320:4"},{"body":{"nodeType":"YulBlock","src":"361:152:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"378:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"381:77:4","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"371:6:4"},"nodeType":"YulFunctionCall","src":"371:88:4"},"nodeType":"YulExpressionStatement","src":"371:88:4"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"475:1:4","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"478:4:4","type":"","value":"0x22"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"468:6:4"},"nodeType":"YulFunctionCall","src":"468:15:4"},"nodeType":"YulExpressionStatement","src":"468:15:4"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"499:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"502:4:4","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"492:6:4"},"nodeType":"YulFunctionCall","src":"492:15:4"},"nodeType":"YulExpressionStatement","src":"492:15:4"}]},"name":"panic_error_0x22","nodeType":"YulFunctionDefinition","src":"333:180:4"}]},"contents":"{\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 panic_error_0x22() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n\n}\n","id":4,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"608060405260016000556040518060400160405280600981526020017f4d6f636b546f6b656e000000000000000000000000000000000000000000000081525060049080519060200190620000569291906200010a565b506040518060400160405280600381526020017f4d434b000000000000000000000000000000000000000000000000000000000081525060059080519060200190620000a49291906200010a565b50348015620000b257600080fd5b50633b9aca00600181905550600154600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506200021f565b8280546200011890620001ba565b90600052602060002090601f0160209004810192826200013c576000855562000188565b82601f106200015757805160ff191683800117855562000188565b8280016001018555821562000188579182015b82811115620001875782518255916020019190600101906200016a565b5b5090506200019791906200019b565b5090565b5b80821115620001b65760008160009055506001016200019c565b5090565b60006002820490506001821680620001d357607f821691505b60208210811415620001ea57620001e9620001f0565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b610bad806200022f6000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c8063313ce56711610066578063313ce5671461013457806370a082311461015257806395d89b4114610182578063a9059cbb146101a0578063dd62ed3e146101d057610093565b806306fdde0314610098578063095ea7b3146100b657806318160ddd146100e657806323b872dd14610104575b600080fd5b6100a0610200565b6040516100ad91906108b8565b60405180910390f35b6100d060048036038101906100cb91906107c4565b61028e565b6040516100dd919061089d565b60405180910390f35b6100ee61031b565b6040516100fb919061091a565b60405180910390f35b61011e60048036038101906101199190610775565b610321565b60405161012b919061089d565b60405180910390f35b61013c6104b9565b604051610149919061091a565b60405180910390f35b61016c60048036038101906101679190610710565b6104bf565b604051610179919061091a565b60405180910390f35b61018a6104d7565b60405161019791906108b8565b60405180910390f35b6101ba60048036038101906101b591906107c4565b610565565b6040516101c7919061089d565b60405180910390f35b6101ea60048036038101906101e59190610739565b61065f565b6040516101f7919061091a565b60405180910390f35b6004805461020d90610a56565b80601f016020809104026020016040519081016040528092919081815260200182805461023990610a56565b80156102865780601f1061025b57610100808354040283529160200191610286565b820191906000526020600020905b81548152906001019060200180831161026957829003601f168201915b505050505081565b600081600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001905092915050565b60015481565b60008161032e853361065f565b101561036f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610366906108da565b60405180910390fd5b81600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546103fb91906109a7565b9250508190555081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461045191906109a7565b9250508190555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546104a79190610951565b92505081905550600190509392505050565b60005481565b60026020528060005260406000206000915090505481565b600580546104e490610a56565b80601f016020809104026020016040519081016040528092919081815260200182805461051090610a56565b801561055d5780601f106105325761010080835404028352916020019161055d565b820191906000526020600020905b81548152906001019060200180831161054057829003601f168201915b505050505081565b60008082116105a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105a0906108fa565b60405180910390fd5b81600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546105f891906109a7565b9250508190555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461064e9190610951565b925050819055506001905092915050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000813590506106f581610b49565b92915050565b60008135905061070a81610b60565b92915050565b60006020828403121561072257600080fd5b6000610730848285016106e6565b91505092915050565b6000806040838503121561074c57600080fd5b600061075a858286016106e6565b925050602061076b858286016106e6565b9150509250929050565b60008060006060848603121561078a57600080fd5b6000610798868287016106e6565b93505060206107a9868287016106e6565b92505060406107ba868287016106fb565b9150509250925092565b600080604083850312156107d757600080fd5b60006107e5858286016106e6565b92505060206107f6858286016106fb565b9150509250929050565b610809816109ed565b82525050565b600061081a82610935565b6108248185610940565b9350610834818560208601610a23565b61083d81610ae6565b840191505092915050565b6000610855601683610940565b915061086082610af7565b602082019050919050565b6000610878601983610940565b915061088382610b20565b602082019050919050565b61089781610a19565b82525050565b60006020820190506108b26000830184610800565b92915050565b600060208201905081810360008301526108d2818461080f565b905092915050565b600060208201905081810360008301526108f381610848565b9050919050565b600060208201905081810360008301526109138161086b565b9050919050565b600060208201905061092f600083018461088e565b92915050565b600081519050919050565b600082825260208201905092915050565b600061095c82610a19565b915061096783610a19565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561099c5761099b610a88565b5b828201905092915050565b60006109b282610a19565b91506109bd83610a19565b9250828210156109d0576109cf610a88565b5b828203905092915050565b60006109e6826109f9565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b83811015610a41578082015181840152602081019050610a26565b83811115610a50576000848401525b50505050565b60006002820490506001821680610a6e57607f821691505b60208210811415610a8257610a81610ab7565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f496e73756666696369656e7420616c6c6f77616e636500000000000000000000600082015250565b7f5472616e736665727265642076616c7565206973207a65726f00000000000000600082015250565b610b52816109db565b8114610b5d57600080fd5b50565b610b6981610a19565b8114610b7457600080fd5b5056fea26469706673582212208ce961870c9d6cd505270df5da0c70d49a8f6cb7e04d5a03b16637783be136e764736f6c63430008040033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x1 PUSH1 0x0 SSTORE PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x9 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x4D6F636B546F6B656E0000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x4 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH3 0x56 SWAP3 SWAP2 SWAP1 PUSH3 0x10A JUMP JUMPDEST POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x4D434B0000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x5 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH3 0xA4 SWAP3 SWAP2 SWAP1 PUSH3 0x10A JUMP JUMPDEST POP CALLVALUE DUP1 ISZERO PUSH3 0xB2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH4 0x3B9ACA00 PUSH1 0x1 DUP2 SWAP1 SSTORE POP PUSH1 0x1 SLOAD 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 DUP2 SWAP1 SSTORE POP PUSH3 0x21F JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH3 0x118 SWAP1 PUSH3 0x1BA JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH3 0x13C JUMPI PUSH1 0x0 DUP6 SSTORE PUSH3 0x188 JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH3 0x157 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x188 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x188 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x187 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0x16A JUMP JUMPDEST JUMPDEST POP SWAP1 POP PUSH3 0x197 SWAP2 SWAP1 PUSH3 0x19B JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x1B6 JUMPI PUSH1 0x0 DUP2 PUSH1 0x0 SWAP1 SSTORE POP PUSH1 0x1 ADD PUSH3 0x19C JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x2 DUP3 DIV SWAP1 POP PUSH1 0x1 DUP3 AND DUP1 PUSH3 0x1D3 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 EQ ISZERO PUSH3 0x1EA JUMPI PUSH3 0x1E9 PUSH3 0x1F0 JUMP JUMPDEST JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH2 0xBAD DUP1 PUSH3 0x22F PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x93 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x313CE567 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x134 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x152 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x182 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x1A0 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x1D0 JUMPI PUSH2 0x93 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x98 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0xB6 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0xE6 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x104 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA0 PUSH2 0x200 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xAD SWAP2 SWAP1 PUSH2 0x8B8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xD0 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xCB SWAP2 SWAP1 PUSH2 0x7C4 JUMP JUMPDEST PUSH2 0x28E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xDD SWAP2 SWAP1 PUSH2 0x89D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xEE PUSH2 0x31B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xFB SWAP2 SWAP1 PUSH2 0x91A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x11E PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x119 SWAP2 SWAP1 PUSH2 0x775 JUMP JUMPDEST PUSH2 0x321 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x12B SWAP2 SWAP1 PUSH2 0x89D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x13C PUSH2 0x4B9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x149 SWAP2 SWAP1 PUSH2 0x91A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x16C PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x167 SWAP2 SWAP1 PUSH2 0x710 JUMP JUMPDEST PUSH2 0x4BF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x179 SWAP2 SWAP1 PUSH2 0x91A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x18A PUSH2 0x4D7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x197 SWAP2 SWAP1 PUSH2 0x8B8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1BA PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1B5 SWAP2 SWAP1 PUSH2 0x7C4 JUMP JUMPDEST PUSH2 0x565 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1C7 SWAP2 SWAP1 PUSH2 0x89D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1EA PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1E5 SWAP2 SWAP1 PUSH2 0x739 JUMP JUMPDEST PUSH2 0x65F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1F7 SWAP2 SWAP1 PUSH2 0x91A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH2 0x20D SWAP1 PUSH2 0xA56 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 0x239 SWAP1 PUSH2 0xA56 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x286 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x25B JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x286 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 0x269 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x3 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 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP PUSH1 0x1 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x32E DUP6 CALLER PUSH2 0x65F JUMP JUMPDEST LT ISZERO PUSH2 0x36F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x366 SWAP1 PUSH2 0x8DA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 PUSH1 0x3 PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 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 0x3FB SWAP2 SWAP1 PUSH2 0x9A7 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x2 PUSH1 0x0 DUP7 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 0x451 SWAP2 SWAP1 PUSH2 0x9A7 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x2 PUSH1 0x0 DUP6 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 0x4A7 SWAP2 SWAP1 PUSH2 0x951 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH1 0x1 SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD 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 0x5 DUP1 SLOAD PUSH2 0x4E4 SWAP1 PUSH2 0xA56 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 0x510 SWAP1 PUSH2 0xA56 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x55D JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x532 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x55D 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 0x540 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 GT PUSH2 0x5A9 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5A0 SWAP1 PUSH2 0x8FA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 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 0x5F8 SWAP2 SWAP1 PUSH2 0x9A7 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x2 PUSH1 0x0 DUP6 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 0x64E SWAP2 SWAP1 PUSH2 0x951 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH1 0x1 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x3 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x6F5 DUP2 PUSH2 0xB49 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x70A DUP2 PUSH2 0xB60 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x722 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x730 DUP5 DUP3 DUP6 ADD PUSH2 0x6E6 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x74C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x75A DUP6 DUP3 DUP7 ADD PUSH2 0x6E6 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x76B DUP6 DUP3 DUP7 ADD PUSH2 0x6E6 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x78A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x798 DUP7 DUP3 DUP8 ADD PUSH2 0x6E6 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x7A9 DUP7 DUP3 DUP8 ADD PUSH2 0x6E6 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x7BA DUP7 DUP3 DUP8 ADD PUSH2 0x6FB JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x7D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x7E5 DUP6 DUP3 DUP7 ADD PUSH2 0x6E6 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x7F6 DUP6 DUP3 DUP7 ADD PUSH2 0x6FB JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH2 0x809 DUP2 PUSH2 0x9ED JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x81A DUP3 PUSH2 0x935 JUMP JUMPDEST PUSH2 0x824 DUP2 DUP6 PUSH2 0x940 JUMP JUMPDEST SWAP4 POP PUSH2 0x834 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0xA23 JUMP JUMPDEST PUSH2 0x83D DUP2 PUSH2 0xAE6 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x855 PUSH1 0x16 DUP4 PUSH2 0x940 JUMP JUMPDEST SWAP2 POP PUSH2 0x860 DUP3 PUSH2 0xAF7 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x878 PUSH1 0x19 DUP4 PUSH2 0x940 JUMP JUMPDEST SWAP2 POP PUSH2 0x883 DUP3 PUSH2 0xB20 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x897 DUP2 PUSH2 0xA19 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x8B2 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x800 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 0x8D2 DUP2 DUP5 PUSH2 0x80F 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 0x8F3 DUP2 PUSH2 0x848 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 0x913 DUP2 PUSH2 0x86B JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x92F PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x88E JUMP JUMPDEST SWAP3 SWAP2 POP 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 0x95C DUP3 PUSH2 0xA19 JUMP JUMPDEST SWAP2 POP PUSH2 0x967 DUP4 PUSH2 0xA19 JUMP JUMPDEST SWAP3 POP DUP3 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SUB DUP3 GT ISZERO PUSH2 0x99C JUMPI PUSH2 0x99B PUSH2 0xA88 JUMP JUMPDEST JUMPDEST DUP3 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9B2 DUP3 PUSH2 0xA19 JUMP JUMPDEST SWAP2 POP PUSH2 0x9BD DUP4 PUSH2 0xA19 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 LT ISZERO PUSH2 0x9D0 JUMPI PUSH2 0x9CF PUSH2 0xA88 JUMP JUMPDEST JUMPDEST DUP3 DUP3 SUB SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9E6 DUP3 PUSH2 0x9F9 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO ISZERO 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 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xA41 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0xA26 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0xA50 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 0xA6E JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 EQ ISZERO PUSH2 0xA82 JUMPI PUSH2 0xA81 PUSH2 0xAB7 JUMP JUMPDEST JUMPDEST POP SWAP2 SWAP1 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 PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x496E73756666696369656E7420616C6C6F77616E636500000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH32 0x5472616E736665727265642076616C7565206973207A65726F00000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH2 0xB52 DUP2 PUSH2 0x9DB JUMP JUMPDEST DUP2 EQ PUSH2 0xB5D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0xB69 DUP2 PUSH2 0xA19 JUMP JUMPDEST DUP2 EQ PUSH2 0xB74 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP13 0xE9 PUSH2 0x870C SWAP14 PUSH13 0xD505270DF5DA0C70D49A8F6CB7 0xE0 0x4D GAS SUB 0xB1 PUSH7 0x37783BE136E764 PUSH20 0x6F6C634300080400330000000000000000000000 ","sourceMap":"1241:119:3:-:0;;;119:1;96:24;;1293:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1329:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1241:119;;;;;;;;;;292:13;278:11;:27;;;;335:11;;311:9;:21;321:10;311:21;;;;;;;;;;;;;;;:35;;;;1241:119;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;7:320:4:-;51:6;88:1;82:4;78:12;68:22;;135:1;129:4;125:12;156:18;146:2;;212:4;204:6;200:17;190:27;;146:2;274;266:6;263:14;243:18;240:38;237:2;;;293:18;;:::i;:::-;237:2;58:269;;;;:::o;333:180::-;381:77;378:1;371:88;478:4;475:1;468:15;502:4;499:1;492:15;1241:119:3;;;;;;;"},"deployedBytecode":{"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:7847:4","statements":[{"body":{"nodeType":"YulBlock","src":"59:87:4","statements":[{"nodeType":"YulAssignment","src":"69:29:4","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"91:6:4"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"78:12:4"},"nodeType":"YulFunctionCall","src":"78:20:4"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"69:5:4"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"134:5:4"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"107:26:4"},"nodeType":"YulFunctionCall","src":"107:33:4"},"nodeType":"YulExpressionStatement","src":"107:33:4"}]},"name":"abi_decode_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"37:6:4","type":""},{"name":"end","nodeType":"YulTypedName","src":"45:3:4","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"53:5:4","type":""}],"src":"7:139:4"},{"body":{"nodeType":"YulBlock","src":"204:87:4","statements":[{"nodeType":"YulAssignment","src":"214:29:4","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"236:6:4"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"223:12:4"},"nodeType":"YulFunctionCall","src":"223:20:4"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"214:5:4"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"279:5:4"}],"functionName":{"name":"validator_revert_t_uint256","nodeType":"YulIdentifier","src":"252:26:4"},"nodeType":"YulFunctionCall","src":"252:33:4"},"nodeType":"YulExpressionStatement","src":"252:33:4"}]},"name":"abi_decode_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"182:6:4","type":""},{"name":"end","nodeType":"YulTypedName","src":"190:3:4","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"198:5:4","type":""}],"src":"152:139:4"},{"body":{"nodeType":"YulBlock","src":"363:196:4","statements":[{"body":{"nodeType":"YulBlock","src":"409:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"418:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"421:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"411:6:4"},"nodeType":"YulFunctionCall","src":"411:12:4"},"nodeType":"YulExpressionStatement","src":"411:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"384:7:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"393:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"380:3:4"},"nodeType":"YulFunctionCall","src":"380:23:4"},{"kind":"number","nodeType":"YulLiteral","src":"405:2:4","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"376:3:4"},"nodeType":"YulFunctionCall","src":"376:32:4"},"nodeType":"YulIf","src":"373:2:4"},{"nodeType":"YulBlock","src":"435:117:4","statements":[{"nodeType":"YulVariableDeclaration","src":"450:15:4","value":{"kind":"number","nodeType":"YulLiteral","src":"464:1:4","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"454:6:4","type":""}]},{"nodeType":"YulAssignment","src":"479:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"514:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"525:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"510:3:4"},"nodeType":"YulFunctionCall","src":"510:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"534:7:4"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"489:20:4"},"nodeType":"YulFunctionCall","src":"489:53:4"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"479:6:4"}]}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"333:9:4","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"344:7:4","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"356:6:4","type":""}],"src":"297:262:4"},{"body":{"nodeType":"YulBlock","src":"648:324:4","statements":[{"body":{"nodeType":"YulBlock","src":"694:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"703:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"706:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"696:6:4"},"nodeType":"YulFunctionCall","src":"696:12:4"},"nodeType":"YulExpressionStatement","src":"696:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"669:7:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"678:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"665:3:4"},"nodeType":"YulFunctionCall","src":"665:23:4"},{"kind":"number","nodeType":"YulLiteral","src":"690:2:4","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"661:3:4"},"nodeType":"YulFunctionCall","src":"661:32:4"},"nodeType":"YulIf","src":"658:2:4"},{"nodeType":"YulBlock","src":"720:117:4","statements":[{"nodeType":"YulVariableDeclaration","src":"735:15:4","value":{"kind":"number","nodeType":"YulLiteral","src":"749:1:4","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"739:6:4","type":""}]},{"nodeType":"YulAssignment","src":"764:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"799:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"810:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"795:3:4"},"nodeType":"YulFunctionCall","src":"795:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"819:7:4"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"774:20:4"},"nodeType":"YulFunctionCall","src":"774:53:4"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"764:6:4"}]}]},{"nodeType":"YulBlock","src":"847:118:4","statements":[{"nodeType":"YulVariableDeclaration","src":"862:16:4","value":{"kind":"number","nodeType":"YulLiteral","src":"876:2:4","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"866:6:4","type":""}]},{"nodeType":"YulAssignment","src":"892:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"927:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"938:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"923:3:4"},"nodeType":"YulFunctionCall","src":"923:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"947:7:4"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"902:20:4"},"nodeType":"YulFunctionCall","src":"902:53:4"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"892:6:4"}]}]}]},"name":"abi_decode_tuple_t_addresst_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"610:9:4","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"621:7:4","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"633:6:4","type":""},{"name":"value1","nodeType":"YulTypedName","src":"641:6:4","type":""}],"src":"565:407:4"},{"body":{"nodeType":"YulBlock","src":"1078:452:4","statements":[{"body":{"nodeType":"YulBlock","src":"1124:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1133:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1136:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1126:6:4"},"nodeType":"YulFunctionCall","src":"1126:12:4"},"nodeType":"YulExpressionStatement","src":"1126:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1099:7:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"1108:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1095:3:4"},"nodeType":"YulFunctionCall","src":"1095:23:4"},{"kind":"number","nodeType":"YulLiteral","src":"1120:2:4","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1091:3:4"},"nodeType":"YulFunctionCall","src":"1091:32:4"},"nodeType":"YulIf","src":"1088:2:4"},{"nodeType":"YulBlock","src":"1150:117:4","statements":[{"nodeType":"YulVariableDeclaration","src":"1165:15:4","value":{"kind":"number","nodeType":"YulLiteral","src":"1179:1:4","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1169:6:4","type":""}]},{"nodeType":"YulAssignment","src":"1194:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1229:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"1240:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1225:3:4"},"nodeType":"YulFunctionCall","src":"1225:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1249:7:4"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"1204:20:4"},"nodeType":"YulFunctionCall","src":"1204:53:4"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1194:6:4"}]}]},{"nodeType":"YulBlock","src":"1277:118:4","statements":[{"nodeType":"YulVariableDeclaration","src":"1292:16:4","value":{"kind":"number","nodeType":"YulLiteral","src":"1306:2:4","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1296:6:4","type":""}]},{"nodeType":"YulAssignment","src":"1322:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1357:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"1368:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1353:3:4"},"nodeType":"YulFunctionCall","src":"1353:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1377:7:4"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"1332:20:4"},"nodeType":"YulFunctionCall","src":"1332:53:4"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1322:6:4"}]}]},{"nodeType":"YulBlock","src":"1405:118:4","statements":[{"nodeType":"YulVariableDeclaration","src":"1420:16:4","value":{"kind":"number","nodeType":"YulLiteral","src":"1434:2:4","type":"","value":"64"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1424:6:4","type":""}]},{"nodeType":"YulAssignment","src":"1450:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1485:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"1496:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1481:3:4"},"nodeType":"YulFunctionCall","src":"1481:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1505:7:4"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"1460:20:4"},"nodeType":"YulFunctionCall","src":"1460:53:4"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"1450:6:4"}]}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1032:9:4","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1043:7:4","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1055:6:4","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1063:6:4","type":""},{"name":"value2","nodeType":"YulTypedName","src":"1071:6:4","type":""}],"src":"978:552:4"},{"body":{"nodeType":"YulBlock","src":"1619:324:4","statements":[{"body":{"nodeType":"YulBlock","src":"1665:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1674:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1677:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1667:6:4"},"nodeType":"YulFunctionCall","src":"1667:12:4"},"nodeType":"YulExpressionStatement","src":"1667:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1640:7:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"1649:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1636:3:4"},"nodeType":"YulFunctionCall","src":"1636:23:4"},{"kind":"number","nodeType":"YulLiteral","src":"1661:2:4","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1632:3:4"},"nodeType":"YulFunctionCall","src":"1632:32:4"},"nodeType":"YulIf","src":"1629:2:4"},{"nodeType":"YulBlock","src":"1691:117:4","statements":[{"nodeType":"YulVariableDeclaration","src":"1706:15:4","value":{"kind":"number","nodeType":"YulLiteral","src":"1720:1:4","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1710:6:4","type":""}]},{"nodeType":"YulAssignment","src":"1735:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1770:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"1781:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1766:3:4"},"nodeType":"YulFunctionCall","src":"1766:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1790:7:4"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"1745:20:4"},"nodeType":"YulFunctionCall","src":"1745:53:4"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1735:6:4"}]}]},{"nodeType":"YulBlock","src":"1818:118:4","statements":[{"nodeType":"YulVariableDeclaration","src":"1833:16:4","value":{"kind":"number","nodeType":"YulLiteral","src":"1847:2:4","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1837:6:4","type":""}]},{"nodeType":"YulAssignment","src":"1863:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1898:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"1909:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1894:3:4"},"nodeType":"YulFunctionCall","src":"1894:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1918:7:4"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"1873:20:4"},"nodeType":"YulFunctionCall","src":"1873:53:4"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1863:6:4"}]}]}]},"name":"abi_decode_tuple_t_addresst_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1581:9:4","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1592:7:4","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1604:6:4","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1612:6:4","type":""}],"src":"1536:407:4"},{"body":{"nodeType":"YulBlock","src":"2008:50:4","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2025:3:4"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2045:5:4"}],"functionName":{"name":"cleanup_t_bool","nodeType":"YulIdentifier","src":"2030:14:4"},"nodeType":"YulFunctionCall","src":"2030:21:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2018:6:4"},"nodeType":"YulFunctionCall","src":"2018:34:4"},"nodeType":"YulExpressionStatement","src":"2018:34:4"}]},"name":"abi_encode_t_bool_to_t_bool_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1996:5:4","type":""},{"name":"pos","nodeType":"YulTypedName","src":"2003:3:4","type":""}],"src":"1949:109:4"},{"body":{"nodeType":"YulBlock","src":"2156:272:4","statements":[{"nodeType":"YulVariableDeclaration","src":"2166:53:4","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2213:5:4"}],"functionName":{"name":"array_length_t_string_memory_ptr","nodeType":"YulIdentifier","src":"2180:32:4"},"nodeType":"YulFunctionCall","src":"2180:39:4"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"2170:6:4","type":""}]},{"nodeType":"YulAssignment","src":"2228:78:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2294:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"2299:6:4"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"2235:58:4"},"nodeType":"YulFunctionCall","src":"2235:71:4"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"2228:3:4"}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2341:5:4"},{"kind":"number","nodeType":"YulLiteral","src":"2348:4:4","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2337:3:4"},"nodeType":"YulFunctionCall","src":"2337:16:4"},{"name":"pos","nodeType":"YulIdentifier","src":"2355:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"2360:6:4"}],"functionName":{"name":"copy_memory_to_memory","nodeType":"YulIdentifier","src":"2315:21:4"},"nodeType":"YulFunctionCall","src":"2315:52:4"},"nodeType":"YulExpressionStatement","src":"2315:52:4"},{"nodeType":"YulAssignment","src":"2376:46:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2387:3:4"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"2414:6:4"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"2392:21:4"},"nodeType":"YulFunctionCall","src":"2392:29:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2383:3:4"},"nodeType":"YulFunctionCall","src":"2383:39:4"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"2376:3:4"}]}]},"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"2137:5:4","type":""},{"name":"pos","nodeType":"YulTypedName","src":"2144:3:4","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"2152:3:4","type":""}],"src":"2064:364:4"},{"body":{"nodeType":"YulBlock","src":"2580:220:4","statements":[{"nodeType":"YulAssignment","src":"2590:74:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2656:3:4"},{"kind":"number","nodeType":"YulLiteral","src":"2661:2:4","type":"","value":"22"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"2597:58:4"},"nodeType":"YulFunctionCall","src":"2597:67:4"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"2590:3:4"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2762:3:4"}],"functionName":{"name":"store_literal_in_memory_45e3d26e36c3151c7f92a1eee9add9658cbb8e14605ee2452ec007389b9744bc","nodeType":"YulIdentifier","src":"2673:88:4"},"nodeType":"YulFunctionCall","src":"2673:93:4"},"nodeType":"YulExpressionStatement","src":"2673:93:4"},{"nodeType":"YulAssignment","src":"2775:19:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2786:3:4"},{"kind":"number","nodeType":"YulLiteral","src":"2791:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2782:3:4"},"nodeType":"YulFunctionCall","src":"2782:12:4"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"2775:3:4"}]}]},"name":"abi_encode_t_stringliteral_45e3d26e36c3151c7f92a1eee9add9658cbb8e14605ee2452ec007389b9744bc_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"2568:3:4","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"2576:3:4","type":""}],"src":"2434:366:4"},{"body":{"nodeType":"YulBlock","src":"2952:220:4","statements":[{"nodeType":"YulAssignment","src":"2962:74:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3028:3:4"},{"kind":"number","nodeType":"YulLiteral","src":"3033:2:4","type":"","value":"25"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"2969:58:4"},"nodeType":"YulFunctionCall","src":"2969:67:4"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"2962:3:4"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3134:3:4"}],"functionName":{"name":"store_literal_in_memory_4ca3cd75a1831a94a24913bfd2c9b9d35acbb11ac3447f65bb0682cf14f63f5c","nodeType":"YulIdentifier","src":"3045:88:4"},"nodeType":"YulFunctionCall","src":"3045:93:4"},"nodeType":"YulExpressionStatement","src":"3045:93:4"},{"nodeType":"YulAssignment","src":"3147:19:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3158:3:4"},{"kind":"number","nodeType":"YulLiteral","src":"3163:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3154:3:4"},"nodeType":"YulFunctionCall","src":"3154:12:4"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"3147:3:4"}]}]},"name":"abi_encode_t_stringliteral_4ca3cd75a1831a94a24913bfd2c9b9d35acbb11ac3447f65bb0682cf14f63f5c_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"2940:3:4","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"2948:3:4","type":""}],"src":"2806:366:4"},{"body":{"nodeType":"YulBlock","src":"3243:53:4","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3260:3:4"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3283:5:4"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"3265:17:4"},"nodeType":"YulFunctionCall","src":"3265:24:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3253:6:4"},"nodeType":"YulFunctionCall","src":"3253:37:4"},"nodeType":"YulExpressionStatement","src":"3253:37:4"}]},"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"3231:5:4","type":""},{"name":"pos","nodeType":"YulTypedName","src":"3238:3:4","type":""}],"src":"3178:118:4"},{"body":{"nodeType":"YulBlock","src":"3394:118:4","statements":[{"nodeType":"YulAssignment","src":"3404:26:4","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3416:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"3427:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3412:3:4"},"nodeType":"YulFunctionCall","src":"3412:18:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3404:4:4"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3478:6:4"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3491:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"3502:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3487:3:4"},"nodeType":"YulFunctionCall","src":"3487:17:4"}],"functionName":{"name":"abi_encode_t_bool_to_t_bool_fromStack","nodeType":"YulIdentifier","src":"3440:37:4"},"nodeType":"YulFunctionCall","src":"3440:65:4"},"nodeType":"YulExpressionStatement","src":"3440:65:4"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3366:9:4","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3378:6:4","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3389:4:4","type":""}],"src":"3302:210:4"},{"body":{"nodeType":"YulBlock","src":"3636:195:4","statements":[{"nodeType":"YulAssignment","src":"3646:26:4","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3658:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"3669:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3654:3:4"},"nodeType":"YulFunctionCall","src":"3654:18:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3646:4:4"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3693:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"3704:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3689:3:4"},"nodeType":"YulFunctionCall","src":"3689:17:4"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"3712:4:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"3718:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3708:3:4"},"nodeType":"YulFunctionCall","src":"3708:20:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3682:6:4"},"nodeType":"YulFunctionCall","src":"3682:47:4"},"nodeType":"YulExpressionStatement","src":"3682:47:4"},{"nodeType":"YulAssignment","src":"3738:86:4","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3810:6:4"},{"name":"tail","nodeType":"YulIdentifier","src":"3819:4:4"}],"functionName":{"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"3746:63:4"},"nodeType":"YulFunctionCall","src":"3746:78:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3738:4:4"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3608:9:4","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3620:6:4","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3631:4:4","type":""}],"src":"3518:313:4"},{"body":{"nodeType":"YulBlock","src":"4008:248:4","statements":[{"nodeType":"YulAssignment","src":"4018:26:4","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4030:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"4041:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4026:3:4"},"nodeType":"YulFunctionCall","src":"4026:18:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4018:4:4"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4065:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"4076:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4061:3:4"},"nodeType":"YulFunctionCall","src":"4061:17:4"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"4084:4:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"4090:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4080:3:4"},"nodeType":"YulFunctionCall","src":"4080:20:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4054:6:4"},"nodeType":"YulFunctionCall","src":"4054:47:4"},"nodeType":"YulExpressionStatement","src":"4054:47:4"},{"nodeType":"YulAssignment","src":"4110:139:4","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"4244:4:4"}],"functionName":{"name":"abi_encode_t_stringliteral_45e3d26e36c3151c7f92a1eee9add9658cbb8e14605ee2452ec007389b9744bc_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"4118:124:4"},"nodeType":"YulFunctionCall","src":"4118:131:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4110:4:4"}]}]},"name":"abi_encode_tuple_t_stringliteral_45e3d26e36c3151c7f92a1eee9add9658cbb8e14605ee2452ec007389b9744bc__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3988:9:4","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4003:4:4","type":""}],"src":"3837:419:4"},{"body":{"nodeType":"YulBlock","src":"4433:248:4","statements":[{"nodeType":"YulAssignment","src":"4443:26:4","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4455:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"4466:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4451:3:4"},"nodeType":"YulFunctionCall","src":"4451:18:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4443:4:4"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4490:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"4501:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4486:3:4"},"nodeType":"YulFunctionCall","src":"4486:17:4"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"4509:4:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"4515:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4505:3:4"},"nodeType":"YulFunctionCall","src":"4505:20:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4479:6:4"},"nodeType":"YulFunctionCall","src":"4479:47:4"},"nodeType":"YulExpressionStatement","src":"4479:47:4"},{"nodeType":"YulAssignment","src":"4535:139:4","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"4669:4:4"}],"functionName":{"name":"abi_encode_t_stringliteral_4ca3cd75a1831a94a24913bfd2c9b9d35acbb11ac3447f65bb0682cf14f63f5c_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"4543:124:4"},"nodeType":"YulFunctionCall","src":"4543:131:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4535:4:4"}]}]},"name":"abi_encode_tuple_t_stringliteral_4ca3cd75a1831a94a24913bfd2c9b9d35acbb11ac3447f65bb0682cf14f63f5c__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4413:9:4","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4428:4:4","type":""}],"src":"4262:419:4"},{"body":{"nodeType":"YulBlock","src":"4785:124:4","statements":[{"nodeType":"YulAssignment","src":"4795:26:4","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4807:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"4818:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4803:3:4"},"nodeType":"YulFunctionCall","src":"4803:18:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4795:4:4"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4875:6:4"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4888:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"4899:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4884:3:4"},"nodeType":"YulFunctionCall","src":"4884:17:4"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"4831:43:4"},"nodeType":"YulFunctionCall","src":"4831:71:4"},"nodeType":"YulExpressionStatement","src":"4831:71:4"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4757:9:4","type":""},{"name":"value0","nodeType":"YulTypedName","src":"4769:6:4","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4780:4:4","type":""}],"src":"4687:222:4"},{"body":{"nodeType":"YulBlock","src":"4974:40:4","statements":[{"nodeType":"YulAssignment","src":"4985:22:4","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5001:5:4"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4995:5:4"},"nodeType":"YulFunctionCall","src":"4995:12:4"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"4985:6:4"}]}]},"name":"array_length_t_string_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"4957:5:4","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"4967:6:4","type":""}],"src":"4915:99:4"},{"body":{"nodeType":"YulBlock","src":"5116:73:4","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5133:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"5138:6:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5126:6:4"},"nodeType":"YulFunctionCall","src":"5126:19:4"},"nodeType":"YulExpressionStatement","src":"5126:19:4"},{"nodeType":"YulAssignment","src":"5154:29:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5173:3:4"},{"kind":"number","nodeType":"YulLiteral","src":"5178:4:4","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5169:3:4"},"nodeType":"YulFunctionCall","src":"5169:14:4"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"5154:11:4"}]}]},"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"5088:3:4","type":""},{"name":"length","nodeType":"YulTypedName","src":"5093:6:4","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"5104:11:4","type":""}],"src":"5020:169:4"},{"body":{"nodeType":"YulBlock","src":"5239:261:4","statements":[{"nodeType":"YulAssignment","src":"5249:25:4","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"5272:1:4"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"5254:17:4"},"nodeType":"YulFunctionCall","src":"5254:20:4"},"variableNames":[{"name":"x","nodeType":"YulIdentifier","src":"5249:1:4"}]},{"nodeType":"YulAssignment","src":"5283:25:4","value":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"5306:1:4"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"5288:17:4"},"nodeType":"YulFunctionCall","src":"5288:20:4"},"variableNames":[{"name":"y","nodeType":"YulIdentifier","src":"5283:1:4"}]},{"body":{"nodeType":"YulBlock","src":"5446:22:4","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"5448:16:4"},"nodeType":"YulFunctionCall","src":"5448:18:4"},"nodeType":"YulExpressionStatement","src":"5448:18:4"}]},"condition":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"5367:1:4"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5374:66:4","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"},{"name":"y","nodeType":"YulIdentifier","src":"5442:1:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5370:3:4"},"nodeType":"YulFunctionCall","src":"5370:74:4"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5364:2:4"},"nodeType":"YulFunctionCall","src":"5364:81:4"},"nodeType":"YulIf","src":"5361:2:4"},{"nodeType":"YulAssignment","src":"5478:16:4","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"5489:1:4"},{"name":"y","nodeType":"YulIdentifier","src":"5492:1:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5485:3:4"},"nodeType":"YulFunctionCall","src":"5485:9:4"},"variableNames":[{"name":"sum","nodeType":"YulIdentifier","src":"5478:3:4"}]}]},"name":"checked_add_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"5226:1:4","type":""},{"name":"y","nodeType":"YulTypedName","src":"5229:1:4","type":""}],"returnVariables":[{"name":"sum","nodeType":"YulTypedName","src":"5235:3:4","type":""}],"src":"5195:305:4"},{"body":{"nodeType":"YulBlock","src":"5551:146:4","statements":[{"nodeType":"YulAssignment","src":"5561:25:4","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"5584:1:4"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"5566:17:4"},"nodeType":"YulFunctionCall","src":"5566:20:4"},"variableNames":[{"name":"x","nodeType":"YulIdentifier","src":"5561:1:4"}]},{"nodeType":"YulAssignment","src":"5595:25:4","value":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"5618:1:4"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"5600:17:4"},"nodeType":"YulFunctionCall","src":"5600:20:4"},"variableNames":[{"name":"y","nodeType":"YulIdentifier","src":"5595:1:4"}]},{"body":{"nodeType":"YulBlock","src":"5642:22:4","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"5644:16:4"},"nodeType":"YulFunctionCall","src":"5644:18:4"},"nodeType":"YulExpressionStatement","src":"5644:18:4"}]},"condition":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"5636:1:4"},{"name":"y","nodeType":"YulIdentifier","src":"5639:1:4"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"5633:2:4"},"nodeType":"YulFunctionCall","src":"5633:8:4"},"nodeType":"YulIf","src":"5630:2:4"},{"nodeType":"YulAssignment","src":"5674:17:4","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"5686:1:4"},{"name":"y","nodeType":"YulIdentifier","src":"5689:1:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5682:3:4"},"nodeType":"YulFunctionCall","src":"5682:9:4"},"variableNames":[{"name":"diff","nodeType":"YulIdentifier","src":"5674:4:4"}]}]},"name":"checked_sub_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"5537:1:4","type":""},{"name":"y","nodeType":"YulTypedName","src":"5540:1:4","type":""}],"returnVariables":[{"name":"diff","nodeType":"YulTypedName","src":"5546:4:4","type":""}],"src":"5506:191:4"},{"body":{"nodeType":"YulBlock","src":"5748:51:4","statements":[{"nodeType":"YulAssignment","src":"5758:35:4","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5787:5:4"}],"functionName":{"name":"cleanup_t_uint160","nodeType":"YulIdentifier","src":"5769:17:4"},"nodeType":"YulFunctionCall","src":"5769:24:4"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"5758:7:4"}]}]},"name":"cleanup_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"5730:5:4","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"5740:7:4","type":""}],"src":"5703:96:4"},{"body":{"nodeType":"YulBlock","src":"5847:48:4","statements":[{"nodeType":"YulAssignment","src":"5857:32:4","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5882:5:4"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"5875:6:4"},"nodeType":"YulFunctionCall","src":"5875:13:4"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"5868:6:4"},"nodeType":"YulFunctionCall","src":"5868:21:4"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"5857:7:4"}]}]},"name":"cleanup_t_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"5829:5:4","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"5839:7:4","type":""}],"src":"5805:90:4"},{"body":{"nodeType":"YulBlock","src":"5946:81:4","statements":[{"nodeType":"YulAssignment","src":"5956:65:4","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5971:5:4"},{"kind":"number","nodeType":"YulLiteral","src":"5978:42:4","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5967:3:4"},"nodeType":"YulFunctionCall","src":"5967:54:4"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"5956:7:4"}]}]},"name":"cleanup_t_uint160","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"5928:5:4","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"5938:7:4","type":""}],"src":"5901:126:4"},{"body":{"nodeType":"YulBlock","src":"6078:32:4","statements":[{"nodeType":"YulAssignment","src":"6088:16:4","value":{"name":"value","nodeType":"YulIdentifier","src":"6099:5:4"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"6088:7:4"}]}]},"name":"cleanup_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"6060:5:4","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"6070:7:4","type":""}],"src":"6033:77:4"},{"body":{"nodeType":"YulBlock","src":"6165:258:4","statements":[{"nodeType":"YulVariableDeclaration","src":"6175:10:4","value":{"kind":"number","nodeType":"YulLiteral","src":"6184:1:4","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"6179:1:4","type":""}]},{"body":{"nodeType":"YulBlock","src":"6244:63:4","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"6269:3:4"},{"name":"i","nodeType":"YulIdentifier","src":"6274:1:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6265:3:4"},"nodeType":"YulFunctionCall","src":"6265:11:4"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"6288:3:4"},{"name":"i","nodeType":"YulIdentifier","src":"6293:1:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6284:3:4"},"nodeType":"YulFunctionCall","src":"6284:11:4"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6278:5:4"},"nodeType":"YulFunctionCall","src":"6278:18:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6258:6:4"},"nodeType":"YulFunctionCall","src":"6258:39:4"},"nodeType":"YulExpressionStatement","src":"6258:39:4"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"6205:1:4"},{"name":"length","nodeType":"YulIdentifier","src":"6208:6:4"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"6202:2:4"},"nodeType":"YulFunctionCall","src":"6202:13:4"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"6216:19:4","statements":[{"nodeType":"YulAssignment","src":"6218:15:4","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"6227:1:4"},{"kind":"number","nodeType":"YulLiteral","src":"6230:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6223:3:4"},"nodeType":"YulFunctionCall","src":"6223:10:4"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"6218:1:4"}]}]},"pre":{"nodeType":"YulBlock","src":"6198:3:4","statements":[]},"src":"6194:113:4"},{"body":{"nodeType":"YulBlock","src":"6341:76:4","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"6391:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"6396:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6387:3:4"},"nodeType":"YulFunctionCall","src":"6387:16:4"},{"kind":"number","nodeType":"YulLiteral","src":"6405:1:4","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6380:6:4"},"nodeType":"YulFunctionCall","src":"6380:27:4"},"nodeType":"YulExpressionStatement","src":"6380:27:4"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"6322:1:4"},{"name":"length","nodeType":"YulIdentifier","src":"6325:6:4"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"6319:2:4"},"nodeType":"YulFunctionCall","src":"6319:13:4"},"nodeType":"YulIf","src":"6316:2:4"}]},"name":"copy_memory_to_memory","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"6147:3:4","type":""},{"name":"dst","nodeType":"YulTypedName","src":"6152:3:4","type":""},{"name":"length","nodeType":"YulTypedName","src":"6157:6:4","type":""}],"src":"6116:307:4"},{"body":{"nodeType":"YulBlock","src":"6480:269:4","statements":[{"nodeType":"YulAssignment","src":"6490:22:4","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"6504:4:4"},{"kind":"number","nodeType":"YulLiteral","src":"6510:1:4","type":"","value":"2"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"6500:3:4"},"nodeType":"YulFunctionCall","src":"6500:12:4"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"6490:6:4"}]},{"nodeType":"YulVariableDeclaration","src":"6521:38:4","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"6551:4:4"},{"kind":"number","nodeType":"YulLiteral","src":"6557:1:4","type":"","value":"1"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"6547:3:4"},"nodeType":"YulFunctionCall","src":"6547:12:4"},"variables":[{"name":"outOfPlaceEncoding","nodeType":"YulTypedName","src":"6525:18:4","type":""}]},{"body":{"nodeType":"YulBlock","src":"6598:51:4","statements":[{"nodeType":"YulAssignment","src":"6612:27:4","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"6626:6:4"},{"kind":"number","nodeType":"YulLiteral","src":"6634:4:4","type":"","value":"0x7f"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"6622:3:4"},"nodeType":"YulFunctionCall","src":"6622:17:4"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"6612:6:4"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"6578:18:4"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"6571:6:4"},"nodeType":"YulFunctionCall","src":"6571:26:4"},"nodeType":"YulIf","src":"6568:2:4"},{"body":{"nodeType":"YulBlock","src":"6701:42:4","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x22","nodeType":"YulIdentifier","src":"6715:16:4"},"nodeType":"YulFunctionCall","src":"6715:18:4"},"nodeType":"YulExpressionStatement","src":"6715:18:4"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"6665:18:4"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"6688:6:4"},{"kind":"number","nodeType":"YulLiteral","src":"6696:2:4","type":"","value":"32"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"6685:2:4"},"nodeType":"YulFunctionCall","src":"6685:14:4"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"6662:2:4"},"nodeType":"YulFunctionCall","src":"6662:38:4"},"nodeType":"YulIf","src":"6659:2:4"}]},"name":"extract_byte_array_length","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"6464:4:4","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"6473:6:4","type":""}],"src":"6429:320:4"},{"body":{"nodeType":"YulBlock","src":"6783:152:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6800:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6803:77:4","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6793:6:4"},"nodeType":"YulFunctionCall","src":"6793:88:4"},"nodeType":"YulExpressionStatement","src":"6793:88:4"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6897:1:4","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"6900:4:4","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6890:6:4"},"nodeType":"YulFunctionCall","src":"6890:15:4"},"nodeType":"YulExpressionStatement","src":"6890:15:4"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6921:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6924:4:4","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6914:6:4"},"nodeType":"YulFunctionCall","src":"6914:15:4"},"nodeType":"YulExpressionStatement","src":"6914:15:4"}]},"name":"panic_error_0x11","nodeType":"YulFunctionDefinition","src":"6755:180:4"},{"body":{"nodeType":"YulBlock","src":"6969:152:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6986:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6989:77:4","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6979:6:4"},"nodeType":"YulFunctionCall","src":"6979:88:4"},"nodeType":"YulExpressionStatement","src":"6979:88:4"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7083:1:4","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"7086:4:4","type":"","value":"0x22"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7076:6:4"},"nodeType":"YulFunctionCall","src":"7076:15:4"},"nodeType":"YulExpressionStatement","src":"7076:15:4"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7107:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7110:4:4","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7100:6:4"},"nodeType":"YulFunctionCall","src":"7100:15:4"},"nodeType":"YulExpressionStatement","src":"7100:15:4"}]},"name":"panic_error_0x22","nodeType":"YulFunctionDefinition","src":"6941:180:4"},{"body":{"nodeType":"YulBlock","src":"7175:54:4","statements":[{"nodeType":"YulAssignment","src":"7185:38:4","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"7203:5:4"},{"kind":"number","nodeType":"YulLiteral","src":"7210:2:4","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7199:3:4"},"nodeType":"YulFunctionCall","src":"7199:14:4"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7219:2:4","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"7215:3:4"},"nodeType":"YulFunctionCall","src":"7215:7:4"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7195:3:4"},"nodeType":"YulFunctionCall","src":"7195:28:4"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"7185:6:4"}]}]},"name":"round_up_to_mul_of_32","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"7158:5:4","type":""}],"returnVariables":[{"name":"result","nodeType":"YulTypedName","src":"7168:6:4","type":""}],"src":"7127:102:4"},{"body":{"nodeType":"YulBlock","src":"7341:66:4","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7363:6:4"},{"kind":"number","nodeType":"YulLiteral","src":"7371:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7359:3:4"},"nodeType":"YulFunctionCall","src":"7359:14:4"},{"kind":"string","nodeType":"YulLiteral","src":"7375:24:4","type":"","value":"Insufficient allowance"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7352:6:4"},"nodeType":"YulFunctionCall","src":"7352:48:4"},"nodeType":"YulExpressionStatement","src":"7352:48:4"}]},"name":"store_literal_in_memory_45e3d26e36c3151c7f92a1eee9add9658cbb8e14605ee2452ec007389b9744bc","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"7333:6:4","type":""}],"src":"7235:172:4"},{"body":{"nodeType":"YulBlock","src":"7519:69:4","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7541:6:4"},{"kind":"number","nodeType":"YulLiteral","src":"7549:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7537:3:4"},"nodeType":"YulFunctionCall","src":"7537:14:4"},{"kind":"string","nodeType":"YulLiteral","src":"7553:27:4","type":"","value":"Transferred value is zero"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7530:6:4"},"nodeType":"YulFunctionCall","src":"7530:51:4"},"nodeType":"YulExpressionStatement","src":"7530:51:4"}]},"name":"store_literal_in_memory_4ca3cd75a1831a94a24913bfd2c9b9d35acbb11ac3447f65bb0682cf14f63f5c","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"7511:6:4","type":""}],"src":"7413:175:4"},{"body":{"nodeType":"YulBlock","src":"7637:79:4","statements":[{"body":{"nodeType":"YulBlock","src":"7694:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7703:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7706:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7696:6:4"},"nodeType":"YulFunctionCall","src":"7696:12:4"},"nodeType":"YulExpressionStatement","src":"7696:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"7660:5:4"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"7685:5:4"}],"functionName":{"name":"cleanup_t_address","nodeType":"YulIdentifier","src":"7667:17:4"},"nodeType":"YulFunctionCall","src":"7667:24:4"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"7657:2:4"},"nodeType":"YulFunctionCall","src":"7657:35:4"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"7650:6:4"},"nodeType":"YulFunctionCall","src":"7650:43:4"},"nodeType":"YulIf","src":"7647:2:4"}]},"name":"validator_revert_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"7630:5:4","type":""}],"src":"7594:122:4"},{"body":{"nodeType":"YulBlock","src":"7765:79:4","statements":[{"body":{"nodeType":"YulBlock","src":"7822:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7831:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7834:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7824:6:4"},"nodeType":"YulFunctionCall","src":"7824:12:4"},"nodeType":"YulExpressionStatement","src":"7824:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"7788:5:4"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"7813:5:4"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"7795:17:4"},"nodeType":"YulFunctionCall","src":"7795:24:4"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"7785:2:4"},"nodeType":"YulFunctionCall","src":"7785:35:4"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"7778:6:4"},"nodeType":"YulFunctionCall","src":"7778:43:4"},"nodeType":"YulIf","src":"7775:2:4"}]},"name":"validator_revert_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"7758:5:4","type":""}],"src":"7722:122:4"}]},"contents":"{\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_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_addresst_address(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(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2 {\n if slt(sub(dataEnd, headStart), 96) { 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 let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_addresst_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(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_encode_t_bool_to_t_bool_fromStack(value, pos) {\n mstore(pos, cleanup_t_bool(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_45e3d26e36c3151c7f92a1eee9add9658cbb8e14605ee2452ec007389b9744bc_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 22)\n store_literal_in_memory_45e3d26e36c3151c7f92a1eee9add9658cbb8e14605ee2452ec007389b9744bc(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_t_stringliteral_4ca3cd75a1831a94a24913bfd2c9b9d35acbb11ac3447f65bb0682cf14f63f5c_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 25)\n store_literal_in_memory_4ca3cd75a1831a94a24913bfd2c9b9d35acbb11ac3447f65bb0682cf14f63f5c(pos)\n end := add(pos, 32)\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_bool__to_t_bool__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_bool_to_t_bool_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_45e3d26e36c3151c7f92a1eee9add9658cbb8e14605ee2452ec007389b9744bc__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_45e3d26e36c3151c7f92a1eee9add9658cbb8e14605ee2452ec007389b9744bc_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function abi_encode_tuple_t_stringliteral_4ca3cd75a1831a94a24913bfd2c9b9d35acbb11ac3447f65bb0682cf14f63f5c__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_4ca3cd75a1831a94a24913bfd2c9b9d35acbb11ac3447f65bb0682cf14f63f5c_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 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_bool(value) -> cleaned {\n cleaned := iszero(iszero(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_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 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 round_up_to_mul_of_32(value) -> result {\n result := and(add(value, 31), not(31))\n }\n\n function store_literal_in_memory_45e3d26e36c3151c7f92a1eee9add9658cbb8e14605ee2452ec007389b9744bc(memPtr) {\n\n mstore(add(memPtr, 0), \"Insufficient allowance\")\n\n }\n\n function store_literal_in_memory_4ca3cd75a1831a94a24913bfd2c9b9d35acbb11ac3447f65bb0682cf14f63f5c(memPtr) {\n\n mstore(add(memPtr, 0), \"Transferred value is zero\")\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_uint256(value) {\n if iszero(eq(value, cleanup_t_uint256(value))) { revert(0, 0) }\n }\n\n}\n","id":4,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100935760003560e01c8063313ce56711610066578063313ce5671461013457806370a082311461015257806395d89b4114610182578063a9059cbb146101a0578063dd62ed3e146101d057610093565b806306fdde0314610098578063095ea7b3146100b657806318160ddd146100e657806323b872dd14610104575b600080fd5b6100a0610200565b6040516100ad91906108b8565b60405180910390f35b6100d060048036038101906100cb91906107c4565b61028e565b6040516100dd919061089d565b60405180910390f35b6100ee61031b565b6040516100fb919061091a565b60405180910390f35b61011e60048036038101906101199190610775565b610321565b60405161012b919061089d565b60405180910390f35b61013c6104b9565b604051610149919061091a565b60405180910390f35b61016c60048036038101906101679190610710565b6104bf565b604051610179919061091a565b60405180910390f35b61018a6104d7565b60405161019791906108b8565b60405180910390f35b6101ba60048036038101906101b591906107c4565b610565565b6040516101c7919061089d565b60405180910390f35b6101ea60048036038101906101e59190610739565b61065f565b6040516101f7919061091a565b60405180910390f35b6004805461020d90610a56565b80601f016020809104026020016040519081016040528092919081815260200182805461023990610a56565b80156102865780601f1061025b57610100808354040283529160200191610286565b820191906000526020600020905b81548152906001019060200180831161026957829003601f168201915b505050505081565b600081600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001905092915050565b60015481565b60008161032e853361065f565b101561036f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610366906108da565b60405180910390fd5b81600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546103fb91906109a7565b9250508190555081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461045191906109a7565b9250508190555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546104a79190610951565b92505081905550600190509392505050565b60005481565b60026020528060005260406000206000915090505481565b600580546104e490610a56565b80601f016020809104026020016040519081016040528092919081815260200182805461051090610a56565b801561055d5780601f106105325761010080835404028352916020019161055d565b820191906000526020600020905b81548152906001019060200180831161054057829003601f168201915b505050505081565b60008082116105a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105a0906108fa565b60405180910390fd5b81600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546105f891906109a7565b9250508190555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461064e9190610951565b925050819055506001905092915050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000813590506106f581610b49565b92915050565b60008135905061070a81610b60565b92915050565b60006020828403121561072257600080fd5b6000610730848285016106e6565b91505092915050565b6000806040838503121561074c57600080fd5b600061075a858286016106e6565b925050602061076b858286016106e6565b9150509250929050565b60008060006060848603121561078a57600080fd5b6000610798868287016106e6565b93505060206107a9868287016106e6565b92505060406107ba868287016106fb565b9150509250925092565b600080604083850312156107d757600080fd5b60006107e5858286016106e6565b92505060206107f6858286016106fb565b9150509250929050565b610809816109ed565b82525050565b600061081a82610935565b6108248185610940565b9350610834818560208601610a23565b61083d81610ae6565b840191505092915050565b6000610855601683610940565b915061086082610af7565b602082019050919050565b6000610878601983610940565b915061088382610b20565b602082019050919050565b61089781610a19565b82525050565b60006020820190506108b26000830184610800565b92915050565b600060208201905081810360008301526108d2818461080f565b905092915050565b600060208201905081810360008301526108f381610848565b9050919050565b600060208201905081810360008301526109138161086b565b9050919050565b600060208201905061092f600083018461088e565b92915050565b600081519050919050565b600082825260208201905092915050565b600061095c82610a19565b915061096783610a19565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561099c5761099b610a88565b5b828201905092915050565b60006109b282610a19565b91506109bd83610a19565b9250828210156109d0576109cf610a88565b5b828203905092915050565b60006109e6826109f9565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b83811015610a41578082015181840152602081019050610a26565b83811115610a50576000848401525b50505050565b60006002820490506001821680610a6e57607f821691505b60208210811415610a8257610a81610ab7565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f496e73756666696369656e7420616c6c6f77616e636500000000000000000000600082015250565b7f5472616e736665727265642076616c7565206973207a65726f00000000000000600082015250565b610b52816109db565b8114610b5d57600080fd5b50565b610b6981610a19565b8114610b7457600080fd5b5056fea26469706673582212208ce961870c9d6cd505270df5da0c70d49a8f6cb7e04d5a03b16637783be136e764736f6c63430008040033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x93 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x313CE567 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x134 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x152 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x182 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x1A0 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x1D0 JUMPI PUSH2 0x93 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x98 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0xB6 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0xE6 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x104 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA0 PUSH2 0x200 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xAD SWAP2 SWAP1 PUSH2 0x8B8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xD0 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xCB SWAP2 SWAP1 PUSH2 0x7C4 JUMP JUMPDEST PUSH2 0x28E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xDD SWAP2 SWAP1 PUSH2 0x89D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xEE PUSH2 0x31B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xFB SWAP2 SWAP1 PUSH2 0x91A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x11E PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x119 SWAP2 SWAP1 PUSH2 0x775 JUMP JUMPDEST PUSH2 0x321 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x12B SWAP2 SWAP1 PUSH2 0x89D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x13C PUSH2 0x4B9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x149 SWAP2 SWAP1 PUSH2 0x91A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x16C PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x167 SWAP2 SWAP1 PUSH2 0x710 JUMP JUMPDEST PUSH2 0x4BF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x179 SWAP2 SWAP1 PUSH2 0x91A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x18A PUSH2 0x4D7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x197 SWAP2 SWAP1 PUSH2 0x8B8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1BA PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1B5 SWAP2 SWAP1 PUSH2 0x7C4 JUMP JUMPDEST PUSH2 0x565 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1C7 SWAP2 SWAP1 PUSH2 0x89D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1EA PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1E5 SWAP2 SWAP1 PUSH2 0x739 JUMP JUMPDEST PUSH2 0x65F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1F7 SWAP2 SWAP1 PUSH2 0x91A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH2 0x20D SWAP1 PUSH2 0xA56 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 0x239 SWAP1 PUSH2 0xA56 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x286 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x25B JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x286 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 0x269 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x3 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 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP PUSH1 0x1 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x32E DUP6 CALLER PUSH2 0x65F JUMP JUMPDEST LT ISZERO PUSH2 0x36F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x366 SWAP1 PUSH2 0x8DA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 PUSH1 0x3 PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 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 0x3FB SWAP2 SWAP1 PUSH2 0x9A7 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x2 PUSH1 0x0 DUP7 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 0x451 SWAP2 SWAP1 PUSH2 0x9A7 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x2 PUSH1 0x0 DUP6 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 0x4A7 SWAP2 SWAP1 PUSH2 0x951 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH1 0x1 SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD 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 0x5 DUP1 SLOAD PUSH2 0x4E4 SWAP1 PUSH2 0xA56 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 0x510 SWAP1 PUSH2 0xA56 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x55D JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x532 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x55D 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 0x540 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 GT PUSH2 0x5A9 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5A0 SWAP1 PUSH2 0x8FA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 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 0x5F8 SWAP2 SWAP1 PUSH2 0x9A7 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x2 PUSH1 0x0 DUP6 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 0x64E SWAP2 SWAP1 PUSH2 0x951 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH1 0x1 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x3 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x6F5 DUP2 PUSH2 0xB49 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x70A DUP2 PUSH2 0xB60 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x722 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x730 DUP5 DUP3 DUP6 ADD PUSH2 0x6E6 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x74C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x75A DUP6 DUP3 DUP7 ADD PUSH2 0x6E6 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x76B DUP6 DUP3 DUP7 ADD PUSH2 0x6E6 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x78A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x798 DUP7 DUP3 DUP8 ADD PUSH2 0x6E6 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x7A9 DUP7 DUP3 DUP8 ADD PUSH2 0x6E6 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x7BA DUP7 DUP3 DUP8 ADD PUSH2 0x6FB JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x7D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x7E5 DUP6 DUP3 DUP7 ADD PUSH2 0x6E6 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x7F6 DUP6 DUP3 DUP7 ADD PUSH2 0x6FB JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH2 0x809 DUP2 PUSH2 0x9ED JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x81A DUP3 PUSH2 0x935 JUMP JUMPDEST PUSH2 0x824 DUP2 DUP6 PUSH2 0x940 JUMP JUMPDEST SWAP4 POP PUSH2 0x834 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0xA23 JUMP JUMPDEST PUSH2 0x83D DUP2 PUSH2 0xAE6 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x855 PUSH1 0x16 DUP4 PUSH2 0x940 JUMP JUMPDEST SWAP2 POP PUSH2 0x860 DUP3 PUSH2 0xAF7 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x878 PUSH1 0x19 DUP4 PUSH2 0x940 JUMP JUMPDEST SWAP2 POP PUSH2 0x883 DUP3 PUSH2 0xB20 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x897 DUP2 PUSH2 0xA19 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x8B2 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x800 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 0x8D2 DUP2 DUP5 PUSH2 0x80F 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 0x8F3 DUP2 PUSH2 0x848 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 0x913 DUP2 PUSH2 0x86B JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x92F PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x88E JUMP JUMPDEST SWAP3 SWAP2 POP 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 0x95C DUP3 PUSH2 0xA19 JUMP JUMPDEST SWAP2 POP PUSH2 0x967 DUP4 PUSH2 0xA19 JUMP JUMPDEST SWAP3 POP DUP3 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SUB DUP3 GT ISZERO PUSH2 0x99C JUMPI PUSH2 0x99B PUSH2 0xA88 JUMP JUMPDEST JUMPDEST DUP3 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9B2 DUP3 PUSH2 0xA19 JUMP JUMPDEST SWAP2 POP PUSH2 0x9BD DUP4 PUSH2 0xA19 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 LT ISZERO PUSH2 0x9D0 JUMPI PUSH2 0x9CF PUSH2 0xA88 JUMP JUMPDEST JUMPDEST DUP3 DUP3 SUB SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9E6 DUP3 PUSH2 0x9F9 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO ISZERO 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 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xA41 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0xA26 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0xA50 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 0xA6E JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 EQ ISZERO PUSH2 0xA82 JUMPI PUSH2 0xA81 PUSH2 0xAB7 JUMP JUMPDEST JUMPDEST POP SWAP2 SWAP1 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 PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x496E73756666696369656E7420616C6C6F77616E636500000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH32 0x5472616E736665727265642076616C7565206973207A65726F00000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH2 0xB52 DUP2 PUSH2 0x9DB JUMP JUMPDEST DUP2 EQ PUSH2 0xB5D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0xB69 DUP2 PUSH2 0xA19 JUMP JUMPDEST DUP2 EQ PUSH2 0xB74 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP13 0xE9 PUSH2 0x870C SWAP14 PUSH13 0xD505270DF5DA0C70D49A8F6CB7 0xE0 0x4D GAS SUB 0xB1 PUSH7 0x37783BE136E764 PUSH20 0x6F6C634300080400330000000000000000000000 ","sourceMap":"1241:119:3:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1293:32;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;703:146;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;125:23;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;853:287;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;96:24;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;152:41;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1329:28;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;355:205;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;564:135;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1293:32;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;703:146::-;768:12;822:5;788:10;:22;799:10;788:22;;;;;;;;;;;;;;;:31;811:7;788:31;;;;;;;;;;;;;;;:39;;;;840:4;833:11;;703:146;;;;:::o;125:23::-;;;;:::o;853:287::-;932:4;983:5;952:27;962:4;968:10;952:9;:27::i;:::-;:36;;944:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;1054:5;1022:10;:16;1033:4;1022:16;;;;;;;;;;;;;;;:28;1039:10;1022:28;;;;;;;;;;;;;;;;:37;;;;;;;:::i;:::-;;;;;;;;1084:5;1065:9;:15;1075:4;1065:15;;;;;;;;;;;;;;;;:24;;;;;;;:::i;:::-;;;;;;;;1112:5;1095:9;:13;1105:2;1095:13;;;;;;;;;;;;;;;;:22;;;;;;;:::i;:::-;;;;;;;;1131:4;1124:11;;853:287;;;;;:::o;96:24::-;;;;:::o;152:41::-;;;;;;;;;;;;;;;;;:::o;1329:28::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;355:205::-;413:4;441:1;433:5;:9;425:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;504:5;479:9;:21;489:10;479:21;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;532:5;515:9;:13;525:2;515:13;;;;;;;;;;;;;;;;:22;;;;;;;:::i;:::-;;;;;;;;551:4;544:11;;355:205;;;;:::o;564:135::-;636:17;668:10;:17;679:5;668:17;;;;;;;;;;;;;;;:26;686:7;668:26;;;;;;;;;;;;;;;;661:33;;564:135;;;;:::o;7:139:4:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:139::-;198:5;236:6;223:20;214:29;;252:33;279:5;252:33;:::i;:::-;204:87;;;;:::o;297:262::-;356:6;405:2;393:9;384:7;380:23;376:32;373:2;;;421:1;418;411:12;373:2;464:1;489:53;534:7;525:6;514:9;510:22;489:53;:::i;:::-;479:63;;435:117;363:196;;;;:::o;565:407::-;633:6;641;690:2;678:9;669:7;665:23;661:32;658:2;;;706:1;703;696:12;658:2;749:1;774:53;819:7;810:6;799:9;795:22;774:53;:::i;:::-;764:63;;720:117;876:2;902:53;947:7;938:6;927:9;923:22;902:53;:::i;:::-;892:63;;847:118;648:324;;;;;:::o;978:552::-;1055:6;1063;1071;1120:2;1108:9;1099:7;1095:23;1091:32;1088:2;;;1136:1;1133;1126:12;1088:2;1179:1;1204:53;1249:7;1240:6;1229:9;1225:22;1204:53;:::i;:::-;1194:63;;1150:117;1306:2;1332:53;1377:7;1368:6;1357:9;1353:22;1332:53;:::i;:::-;1322:63;;1277:118;1434:2;1460:53;1505:7;1496:6;1485:9;1481:22;1460:53;:::i;:::-;1450:63;;1405:118;1078:452;;;;;:::o;1536:407::-;1604:6;1612;1661:2;1649:9;1640:7;1636:23;1632:32;1629:2;;;1677:1;1674;1667:12;1629:2;1720:1;1745:53;1790:7;1781:6;1770:9;1766:22;1745:53;:::i;:::-;1735:63;;1691:117;1847:2;1873:53;1918:7;1909:6;1898:9;1894:22;1873:53;:::i;:::-;1863:63;;1818:118;1619:324;;;;;:::o;1949:109::-;2030:21;2045:5;2030:21;:::i;:::-;2025:3;2018:34;2008:50;;:::o;2064:364::-;2152:3;2180:39;2213:5;2180:39;:::i;:::-;2235:71;2299:6;2294:3;2235:71;:::i;:::-;2228:78;;2315:52;2360:6;2355:3;2348:4;2341:5;2337:16;2315:52;:::i;:::-;2392:29;2414:6;2392:29;:::i;:::-;2387:3;2383:39;2376:46;;2156:272;;;;;:::o;2434:366::-;2576:3;2597:67;2661:2;2656:3;2597:67;:::i;:::-;2590:74;;2673:93;2762:3;2673:93;:::i;:::-;2791:2;2786:3;2782:12;2775:19;;2580:220;;;:::o;2806:366::-;2948:3;2969:67;3033:2;3028:3;2969:67;:::i;:::-;2962:74;;3045:93;3134:3;3045:93;:::i;:::-;3163:2;3158:3;3154:12;3147:19;;2952:220;;;:::o;3178:118::-;3265:24;3283:5;3265:24;:::i;:::-;3260:3;3253:37;3243:53;;:::o;3302:210::-;3389:4;3427:2;3416:9;3412:18;3404:26;;3440:65;3502:1;3491:9;3487:17;3478:6;3440:65;:::i;:::-;3394:118;;;;:::o;3518:313::-;3631:4;3669:2;3658:9;3654:18;3646:26;;3718:9;3712:4;3708:20;3704:1;3693:9;3689:17;3682:47;3746:78;3819:4;3810:6;3746:78;:::i;:::-;3738:86;;3636:195;;;;:::o;3837:419::-;4003:4;4041:2;4030:9;4026:18;4018:26;;4090:9;4084:4;4080:20;4076:1;4065:9;4061:17;4054:47;4118:131;4244:4;4118:131;:::i;:::-;4110:139;;4008:248;;;:::o;4262:419::-;4428:4;4466:2;4455:9;4451:18;4443:26;;4515:9;4509:4;4505:20;4501:1;4490:9;4486:17;4479:47;4543:131;4669:4;4543:131;:::i;:::-;4535:139;;4433:248;;;:::o;4687:222::-;4780:4;4818:2;4807:9;4803:18;4795:26;;4831:71;4899:1;4888:9;4884:17;4875:6;4831:71;:::i;:::-;4785:124;;;;:::o;4915:99::-;4967:6;5001:5;4995:12;4985:22;;4974:40;;;:::o;5020:169::-;5104:11;5138:6;5133:3;5126:19;5178:4;5173:3;5169:14;5154:29;;5116:73;;;;:::o;5195:305::-;5235:3;5254:20;5272:1;5254:20;:::i;:::-;5249:25;;5288:20;5306:1;5288:20;:::i;:::-;5283:25;;5442:1;5374:66;5370:74;5367:1;5364:81;5361:2;;;5448:18;;:::i;:::-;5361:2;5492:1;5489;5485:9;5478:16;;5239:261;;;;:::o;5506:191::-;5546:4;5566:20;5584:1;5566:20;:::i;:::-;5561:25;;5600:20;5618:1;5600:20;:::i;:::-;5595:25;;5639:1;5636;5633:8;5630:2;;;5644:18;;:::i;:::-;5630:2;5689:1;5686;5682:9;5674:17;;5551:146;;;;:::o;5703:96::-;5740:7;5769:24;5787:5;5769:24;:::i;:::-;5758:35;;5748:51;;;:::o;5805:90::-;5839:7;5882:5;5875:13;5868:21;5857:32;;5847:48;;;:::o;5901:126::-;5938:7;5978:42;5971:5;5967:54;5956:65;;5946:81;;;:::o;6033:77::-;6070:7;6099:5;6088:16;;6078:32;;;:::o;6116:307::-;6184:1;6194:113;6208:6;6205:1;6202:13;6194:113;;;6293:1;6288:3;6284:11;6278:18;6274:1;6269:3;6265:11;6258:39;6230:2;6227:1;6223:10;6218:15;;6194:113;;;6325:6;6322:1;6319:13;6316:2;;;6405:1;6396:6;6391:3;6387:16;6380:27;6316:2;6165:258;;;;:::o;6429:320::-;6473:6;6510:1;6504:4;6500:12;6490:22;;6557:1;6551:4;6547:12;6578:18;6568:2;;6634:4;6626:6;6622:17;6612:27;;6568:2;6696;6688:6;6685:14;6665:18;6662:38;6659:2;;;6715:18;;:::i;:::-;6659:2;6480:269;;;;:::o;6755:180::-;6803:77;6800:1;6793:88;6900:4;6897:1;6890:15;6924:4;6921:1;6914:15;6941:180;6989:77;6986:1;6979:88;7086:4;7083:1;7076:15;7110:4;7107:1;7100:15;7127:102;7168:6;7219:2;7215:7;7210:2;7203:5;7199:14;7195:28;7185:38;;7175:54;;;:::o;7235:172::-;7375:24;7371:1;7363:6;7359:14;7352:48;7341:66;:::o;7413:175::-;7553:27;7549:1;7541:6;7537:14;7530:51;7519:69;:::o;7594:122::-;7667:24;7685:5;7667:24;:::i;:::-;7660:5;7657:35;7647:2;;7706:1;7703;7696:12;7647:2;7637:79;:::o;7722:122::-;7795:24;7813:5;7795:24;:::i;:::-;7788:5;7785:35;7775:2;;7834:1;7831;7824:12;7775:2;7765:79;:::o"},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","name()":"06fdde03","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.4+commit.c7e474f2\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"remaining\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/Token.sol\":\"MockToken\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/Token.sol\":{\"keccak256\":\"0x3c98df2a7295115a107e950c40733f37ce5384cf18a0b5efb948ccf6d1acaa59\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://21c0d9ad7fee4c50e057a477ec0c151985566e51e1df46d3dc42f4320eceeccf\",\"dweb:/ipfs/QmSVvnCWd9MH3F93atgJGuwbHMJpifnoMLSosQsZUKUrZ8\"]}},\"version\":1}"},"NotAToken":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"6080604052348015600f57600080fd5b50603f80601d6000396000f3fe6080604052600080fdfea26469706673582212209449725821c33b87347a40f451b2c6483bf5505349fe39bcd25604669e50f33364736f6c63430008040033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x3F DUP1 PUSH1 0x1D PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP5 0x49 PUSH19 0x5821C33B87347A40F451B2C6483BF5505349FE CODECOPY 0xBC 0xD2 JUMP DIV PUSH7 0x9E50F33364736F PUSH13 0x63430008040033000000000000 ","sourceMap":"1362:21:3:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"6080604052600080fdfea26469706673582212209449725821c33b87347a40f451b2c6483bf5505349fe39bcd25604669e50f33364736f6c63430008040033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP5 0x49 PUSH19 0x5821C33B87347A40F451B2C6483BF5505349FE CODECOPY 0xBC 0xD2 JUMP DIV PUSH7 0x9E50F33364736F PUSH13 0x63430008040033000000000000 ","sourceMap":"1362:21:3:-:0;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.4+commit.c7e474f2\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/Token.sol\":\"NotAToken\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/Token.sol\":{\"keccak256\":\"0x3c98df2a7295115a107e950c40733f37ce5384cf18a0b5efb948ccf6d1acaa59\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://21c0d9ad7fee4c50e057a477ec0c151985566e51e1df46d3dc42f4320eceeccf\",\"dweb:/ipfs/QmSVvnCWd9MH3F93atgJGuwbHMJpifnoMLSosQsZUKUrZ8\"]}},\"version\":1}"},"TokenWithOnlyName":{"abi":[{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"remaining","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:516:4","statements":[{"body":{"nodeType":"YulBlock","src":"58:269:4","statements":[{"nodeType":"YulAssignment","src":"68:22:4","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"82:4:4"},{"kind":"number","nodeType":"YulLiteral","src":"88:1:4","type":"","value":"2"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"78:3:4"},"nodeType":"YulFunctionCall","src":"78:12:4"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"68:6:4"}]},{"nodeType":"YulVariableDeclaration","src":"99:38:4","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"129:4:4"},{"kind":"number","nodeType":"YulLiteral","src":"135:1:4","type":"","value":"1"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"125:3:4"},"nodeType":"YulFunctionCall","src":"125:12:4"},"variables":[{"name":"outOfPlaceEncoding","nodeType":"YulTypedName","src":"103:18:4","type":""}]},{"body":{"nodeType":"YulBlock","src":"176:51:4","statements":[{"nodeType":"YulAssignment","src":"190:27:4","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"204:6:4"},{"kind":"number","nodeType":"YulLiteral","src":"212:4:4","type":"","value":"0x7f"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"200:3:4"},"nodeType":"YulFunctionCall","src":"200:17:4"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"190:6:4"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"156:18:4"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"149:6:4"},"nodeType":"YulFunctionCall","src":"149:26:4"},"nodeType":"YulIf","src":"146:2:4"},{"body":{"nodeType":"YulBlock","src":"279:42:4","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x22","nodeType":"YulIdentifier","src":"293:16:4"},"nodeType":"YulFunctionCall","src":"293:18:4"},"nodeType":"YulExpressionStatement","src":"293:18:4"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"243:18:4"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"266:6:4"},{"kind":"number","nodeType":"YulLiteral","src":"274:2:4","type":"","value":"32"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"263:2:4"},"nodeType":"YulFunctionCall","src":"263:14:4"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"240:2:4"},"nodeType":"YulFunctionCall","src":"240:38:4"},"nodeType":"YulIf","src":"237:2:4"}]},"name":"extract_byte_array_length","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"42:4:4","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"51:6:4","type":""}],"src":"7:320:4"},{"body":{"nodeType":"YulBlock","src":"361:152:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"378:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"381:77:4","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"371:6:4"},"nodeType":"YulFunctionCall","src":"371:88:4"},"nodeType":"YulExpressionStatement","src":"371:88:4"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"475:1:4","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"478:4:4","type":"","value":"0x22"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"468:6:4"},"nodeType":"YulFunctionCall","src":"468:15:4"},"nodeType":"YulExpressionStatement","src":"468:15:4"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"499:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"502:4:4","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"492:6:4"},"nodeType":"YulFunctionCall","src":"492:15:4"},"nodeType":"YulExpressionStatement","src":"492:15:4"}]},"name":"panic_error_0x22","nodeType":"YulFunctionDefinition","src":"333:180:4"}]},"contents":"{\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 panic_error_0x22() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n\n}\n","id":4,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"608060405260016000556040518060400160405280600981526020017f4d6f636b546f6b656e0000000000000000000000000000000000000000000000815250600490805190602001906100549291906100b8565b5034801561006157600080fd5b50633b9aca00600181905550600154600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506101bc565b8280546100c49061015b565b90600052602060002090601f0160209004810192826100e6576000855561012d565b82601f106100ff57805160ff191683800117855561012d565b8280016001018555821561012d579182015b8281111561012c578251825591602001919060010190610111565b5b50905061013a919061013e565b5090565b5b8082111561015757600081600090555060010161013f565b5090565b6000600282049050600182168061017357607f821691505b602082108114156101875761018661018d565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b610af6806101cb6000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063313ce5671161005b578063313ce5671461012957806370a0823114610147578063a9059cbb14610177578063dd62ed3e146101a757610088565b806306fdde031461008d578063095ea7b3146100ab57806318160ddd146100db57806323b872dd146100f9575b600080fd5b6100956101d7565b6040516100a29190610801565b60405180910390f35b6100c560048036038101906100c0919061070d565b610265565b6040516100d291906107e6565b60405180910390f35b6100e36102f2565b6040516100f09190610863565b60405180910390f35b610113600480360381019061010e91906106be565b6102f8565b60405161012091906107e6565b60405180910390f35b610131610490565b60405161013e9190610863565b60405180910390f35b610161600480360381019061015c9190610659565b610496565b60405161016e9190610863565b60405180910390f35b610191600480360381019061018c919061070d565b6104ae565b60405161019e91906107e6565b60405180910390f35b6101c160048036038101906101bc9190610682565b6105a8565b6040516101ce9190610863565b60405180910390f35b600480546101e49061099f565b80601f01602080910402602001604051908101604052809291908181526020018280546102109061099f565b801561025d5780601f106102325761010080835404028352916020019161025d565b820191906000526020600020905b81548152906001019060200180831161024057829003601f168201915b505050505081565b600081600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001905092915050565b60015481565b60008161030585336105a8565b1015610346576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161033d90610823565b60405180910390fd5b81600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546103d291906108f0565b9250508190555081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461042891906108f0565b9250508190555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461047e919061089a565b92505081905550600190509392505050565b60005481565b60026020528060005260406000206000915090505481565b60008082116104f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104e990610843565b60405180910390fd5b81600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461054191906108f0565b9250508190555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610597919061089a565b925050819055506001905092915050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008135905061063e81610a92565b92915050565b60008135905061065381610aa9565b92915050565b60006020828403121561066b57600080fd5b60006106798482850161062f565b91505092915050565b6000806040838503121561069557600080fd5b60006106a38582860161062f565b92505060206106b48582860161062f565b9150509250929050565b6000806000606084860312156106d357600080fd5b60006106e18682870161062f565b93505060206106f28682870161062f565b925050604061070386828701610644565b9150509250925092565b6000806040838503121561072057600080fd5b600061072e8582860161062f565b925050602061073f85828601610644565b9150509250929050565b61075281610936565b82525050565b60006107638261087e565b61076d8185610889565b935061077d81856020860161096c565b61078681610a2f565b840191505092915050565b600061079e601683610889565b91506107a982610a40565b602082019050919050565b60006107c1601983610889565b91506107cc82610a69565b602082019050919050565b6107e081610962565b82525050565b60006020820190506107fb6000830184610749565b92915050565b6000602082019050818103600083015261081b8184610758565b905092915050565b6000602082019050818103600083015261083c81610791565b9050919050565b6000602082019050818103600083015261085c816107b4565b9050919050565b600060208201905061087860008301846107d7565b92915050565b600081519050919050565b600082825260208201905092915050565b60006108a582610962565b91506108b083610962565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156108e5576108e46109d1565b5b828201905092915050565b60006108fb82610962565b915061090683610962565b925082821015610919576109186109d1565b5b828203905092915050565b600061092f82610942565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b8381101561098a57808201518184015260208101905061096f565b83811115610999576000848401525b50505050565b600060028204905060018216806109b757607f821691505b602082108114156109cb576109ca610a00565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f496e73756666696369656e7420616c6c6f77616e636500000000000000000000600082015250565b7f5472616e736665727265642076616c7565206973207a65726f00000000000000600082015250565b610a9b81610924565b8114610aa657600080fd5b50565b610ab281610962565b8114610abd57600080fd5b5056fea2646970667358221220a6fcd04aa893368d0e3e9a004a848844c520623183d6b2111fbc6f837204d0fa64736f6c63430008040033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x1 PUSH1 0x0 SSTORE PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x9 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x4D6F636B546F6B656E0000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x4 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0x54 SWAP3 SWAP2 SWAP1 PUSH2 0xB8 JUMP JUMPDEST POP CALLVALUE DUP1 ISZERO PUSH2 0x61 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH4 0x3B9ACA00 PUSH1 0x1 DUP2 SWAP1 SSTORE POP PUSH1 0x1 SLOAD 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 DUP2 SWAP1 SSTORE POP PUSH2 0x1BC JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH2 0xC4 SWAP1 PUSH2 0x15B JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH2 0xE6 JUMPI PUSH1 0x0 DUP6 SSTORE PUSH2 0x12D JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH2 0xFF JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x12D JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x12D JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x12C JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x111 JUMP JUMPDEST JUMPDEST POP SWAP1 POP PUSH2 0x13A SWAP2 SWAP1 PUSH2 0x13E JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x157 JUMPI PUSH1 0x0 DUP2 PUSH1 0x0 SWAP1 SSTORE POP PUSH1 0x1 ADD PUSH2 0x13F JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x2 DUP3 DIV SWAP1 POP PUSH1 0x1 DUP3 AND DUP1 PUSH2 0x173 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 EQ ISZERO PUSH2 0x187 JUMPI PUSH2 0x186 PUSH2 0x18D JUMP JUMPDEST JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH2 0xAF6 DUP1 PUSH2 0x1CB PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x88 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x313CE567 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x129 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x147 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x177 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x1A7 JUMPI PUSH2 0x88 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x8D JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0xAB JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0xDB JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0xF9 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x95 PUSH2 0x1D7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xA2 SWAP2 SWAP1 PUSH2 0x801 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xC5 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xC0 SWAP2 SWAP1 PUSH2 0x70D JUMP JUMPDEST PUSH2 0x265 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xD2 SWAP2 SWAP1 PUSH2 0x7E6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xE3 PUSH2 0x2F2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xF0 SWAP2 SWAP1 PUSH2 0x863 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x113 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x10E SWAP2 SWAP1 PUSH2 0x6BE JUMP JUMPDEST PUSH2 0x2F8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x120 SWAP2 SWAP1 PUSH2 0x7E6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x131 PUSH2 0x490 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x13E SWAP2 SWAP1 PUSH2 0x863 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x161 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x15C SWAP2 SWAP1 PUSH2 0x659 JUMP JUMPDEST PUSH2 0x496 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x16E SWAP2 SWAP1 PUSH2 0x863 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x191 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x18C SWAP2 SWAP1 PUSH2 0x70D JUMP JUMPDEST PUSH2 0x4AE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x19E SWAP2 SWAP1 PUSH2 0x7E6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1C1 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1BC SWAP2 SWAP1 PUSH2 0x682 JUMP JUMPDEST PUSH2 0x5A8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1CE SWAP2 SWAP1 PUSH2 0x863 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH2 0x1E4 SWAP1 PUSH2 0x99F 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 0x210 SWAP1 PUSH2 0x99F JUMP JUMPDEST DUP1 ISZERO PUSH2 0x25D JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x232 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x25D 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 0x240 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x3 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 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP PUSH1 0x1 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x305 DUP6 CALLER PUSH2 0x5A8 JUMP JUMPDEST LT ISZERO PUSH2 0x346 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x33D SWAP1 PUSH2 0x823 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 PUSH1 0x3 PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 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 0x3D2 SWAP2 SWAP1 PUSH2 0x8F0 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x2 PUSH1 0x0 DUP7 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 0x428 SWAP2 SWAP1 PUSH2 0x8F0 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x2 PUSH1 0x0 DUP6 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 0x47E SWAP2 SWAP1 PUSH2 0x89A JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH1 0x1 SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD 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 DUP3 GT PUSH2 0x4F2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4E9 SWAP1 PUSH2 0x843 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 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 0x541 SWAP2 SWAP1 PUSH2 0x8F0 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x2 PUSH1 0x0 DUP6 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 0x597 SWAP2 SWAP1 PUSH2 0x89A JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH1 0x1 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x3 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x63E DUP2 PUSH2 0xA92 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x653 DUP2 PUSH2 0xAA9 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x66B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x679 DUP5 DUP3 DUP6 ADD PUSH2 0x62F JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x695 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x6A3 DUP6 DUP3 DUP7 ADD PUSH2 0x62F JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x6B4 DUP6 DUP3 DUP7 ADD PUSH2 0x62F JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x6D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x6E1 DUP7 DUP3 DUP8 ADD PUSH2 0x62F JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x6F2 DUP7 DUP3 DUP8 ADD PUSH2 0x62F JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x703 DUP7 DUP3 DUP8 ADD PUSH2 0x644 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x720 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x72E DUP6 DUP3 DUP7 ADD PUSH2 0x62F JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x73F DUP6 DUP3 DUP7 ADD PUSH2 0x644 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH2 0x752 DUP2 PUSH2 0x936 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x763 DUP3 PUSH2 0x87E JUMP JUMPDEST PUSH2 0x76D DUP2 DUP6 PUSH2 0x889 JUMP JUMPDEST SWAP4 POP PUSH2 0x77D DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x96C JUMP JUMPDEST PUSH2 0x786 DUP2 PUSH2 0xA2F JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x79E PUSH1 0x16 DUP4 PUSH2 0x889 JUMP JUMPDEST SWAP2 POP PUSH2 0x7A9 DUP3 PUSH2 0xA40 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7C1 PUSH1 0x19 DUP4 PUSH2 0x889 JUMP JUMPDEST SWAP2 POP PUSH2 0x7CC DUP3 PUSH2 0xA69 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x7E0 DUP2 PUSH2 0x962 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x7FB PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x749 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 0x81B DUP2 DUP5 PUSH2 0x758 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 0x83C DUP2 PUSH2 0x791 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 0x85C DUP2 PUSH2 0x7B4 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x878 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x7D7 JUMP JUMPDEST SWAP3 SWAP2 POP 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 0x8A5 DUP3 PUSH2 0x962 JUMP JUMPDEST SWAP2 POP PUSH2 0x8B0 DUP4 PUSH2 0x962 JUMP JUMPDEST SWAP3 POP DUP3 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SUB DUP3 GT ISZERO PUSH2 0x8E5 JUMPI PUSH2 0x8E4 PUSH2 0x9D1 JUMP JUMPDEST JUMPDEST DUP3 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8FB DUP3 PUSH2 0x962 JUMP JUMPDEST SWAP2 POP PUSH2 0x906 DUP4 PUSH2 0x962 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 LT ISZERO PUSH2 0x919 JUMPI PUSH2 0x918 PUSH2 0x9D1 JUMP JUMPDEST JUMPDEST DUP3 DUP3 SUB SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x92F DUP3 PUSH2 0x942 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO ISZERO 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 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x98A JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x96F JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x999 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 0x9B7 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 EQ ISZERO PUSH2 0x9CB JUMPI PUSH2 0x9CA PUSH2 0xA00 JUMP JUMPDEST JUMPDEST POP SWAP2 SWAP1 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 PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x496E73756666696369656E7420616C6C6F77616E636500000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH32 0x5472616E736665727265642076616C7565206973207A65726F00000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH2 0xA9B DUP2 PUSH2 0x924 JUMP JUMPDEST DUP2 EQ PUSH2 0xAA6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0xAB2 DUP2 PUSH2 0x962 JUMP JUMPDEST DUP2 EQ PUSH2 0xABD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xA6 0xFC 0xD0 0x4A 0xA8 SWAP4 CALLDATASIZE DUP14 0xE RETURNDATACOPY SWAP11 STOP 0x4A DUP5 DUP9 DIFFICULTY 0xC5 KECCAK256 PUSH3 0x3183D6 0xB2 GT 0x1F 0xBC PUSH16 0x837204D0FA64736F6C63430008040033 ","sourceMap":"1144:95:3:-:0;;;119:1;96:24;;1204:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1144:95;;;;;;;;;;292:13;278:11;:27;;;;335:11;;311:9;:21;321:10;311:21;;;;;;;;;;;;;;;:35;;;;1144:95;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;7:320:4:-;51:6;88:1;82:4;78:12;68:22;;135:1;129:4;125:12;156:18;146:2;;212:4;204:6;200:17;190:27;;146:2;274;266:6;263:14;243:18;240:38;237:2;;;293:18;;:::i;:::-;237:2;58:269;;;;:::o;333:180::-;381:77;378:1;371:88;478:4;475:1;468:15;502:4;499:1;492:15;1144:95:3;;;;;;;"},"deployedBytecode":{"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:7847:4","statements":[{"body":{"nodeType":"YulBlock","src":"59:87:4","statements":[{"nodeType":"YulAssignment","src":"69:29:4","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"91:6:4"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"78:12:4"},"nodeType":"YulFunctionCall","src":"78:20:4"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"69:5:4"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"134:5:4"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"107:26:4"},"nodeType":"YulFunctionCall","src":"107:33:4"},"nodeType":"YulExpressionStatement","src":"107:33:4"}]},"name":"abi_decode_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"37:6:4","type":""},{"name":"end","nodeType":"YulTypedName","src":"45:3:4","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"53:5:4","type":""}],"src":"7:139:4"},{"body":{"nodeType":"YulBlock","src":"204:87:4","statements":[{"nodeType":"YulAssignment","src":"214:29:4","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"236:6:4"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"223:12:4"},"nodeType":"YulFunctionCall","src":"223:20:4"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"214:5:4"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"279:5:4"}],"functionName":{"name":"validator_revert_t_uint256","nodeType":"YulIdentifier","src":"252:26:4"},"nodeType":"YulFunctionCall","src":"252:33:4"},"nodeType":"YulExpressionStatement","src":"252:33:4"}]},"name":"abi_decode_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"182:6:4","type":""},{"name":"end","nodeType":"YulTypedName","src":"190:3:4","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"198:5:4","type":""}],"src":"152:139:4"},{"body":{"nodeType":"YulBlock","src":"363:196:4","statements":[{"body":{"nodeType":"YulBlock","src":"409:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"418:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"421:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"411:6:4"},"nodeType":"YulFunctionCall","src":"411:12:4"},"nodeType":"YulExpressionStatement","src":"411:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"384:7:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"393:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"380:3:4"},"nodeType":"YulFunctionCall","src":"380:23:4"},{"kind":"number","nodeType":"YulLiteral","src":"405:2:4","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"376:3:4"},"nodeType":"YulFunctionCall","src":"376:32:4"},"nodeType":"YulIf","src":"373:2:4"},{"nodeType":"YulBlock","src":"435:117:4","statements":[{"nodeType":"YulVariableDeclaration","src":"450:15:4","value":{"kind":"number","nodeType":"YulLiteral","src":"464:1:4","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"454:6:4","type":""}]},{"nodeType":"YulAssignment","src":"479:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"514:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"525:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"510:3:4"},"nodeType":"YulFunctionCall","src":"510:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"534:7:4"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"489:20:4"},"nodeType":"YulFunctionCall","src":"489:53:4"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"479:6:4"}]}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"333:9:4","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"344:7:4","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"356:6:4","type":""}],"src":"297:262:4"},{"body":{"nodeType":"YulBlock","src":"648:324:4","statements":[{"body":{"nodeType":"YulBlock","src":"694:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"703:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"706:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"696:6:4"},"nodeType":"YulFunctionCall","src":"696:12:4"},"nodeType":"YulExpressionStatement","src":"696:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"669:7:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"678:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"665:3:4"},"nodeType":"YulFunctionCall","src":"665:23:4"},{"kind":"number","nodeType":"YulLiteral","src":"690:2:4","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"661:3:4"},"nodeType":"YulFunctionCall","src":"661:32:4"},"nodeType":"YulIf","src":"658:2:4"},{"nodeType":"YulBlock","src":"720:117:4","statements":[{"nodeType":"YulVariableDeclaration","src":"735:15:4","value":{"kind":"number","nodeType":"YulLiteral","src":"749:1:4","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"739:6:4","type":""}]},{"nodeType":"YulAssignment","src":"764:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"799:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"810:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"795:3:4"},"nodeType":"YulFunctionCall","src":"795:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"819:7:4"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"774:20:4"},"nodeType":"YulFunctionCall","src":"774:53:4"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"764:6:4"}]}]},{"nodeType":"YulBlock","src":"847:118:4","statements":[{"nodeType":"YulVariableDeclaration","src":"862:16:4","value":{"kind":"number","nodeType":"YulLiteral","src":"876:2:4","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"866:6:4","type":""}]},{"nodeType":"YulAssignment","src":"892:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"927:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"938:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"923:3:4"},"nodeType":"YulFunctionCall","src":"923:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"947:7:4"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"902:20:4"},"nodeType":"YulFunctionCall","src":"902:53:4"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"892:6:4"}]}]}]},"name":"abi_decode_tuple_t_addresst_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"610:9:4","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"621:7:4","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"633:6:4","type":""},{"name":"value1","nodeType":"YulTypedName","src":"641:6:4","type":""}],"src":"565:407:4"},{"body":{"nodeType":"YulBlock","src":"1078:452:4","statements":[{"body":{"nodeType":"YulBlock","src":"1124:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1133:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1136:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1126:6:4"},"nodeType":"YulFunctionCall","src":"1126:12:4"},"nodeType":"YulExpressionStatement","src":"1126:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1099:7:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"1108:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1095:3:4"},"nodeType":"YulFunctionCall","src":"1095:23:4"},{"kind":"number","nodeType":"YulLiteral","src":"1120:2:4","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1091:3:4"},"nodeType":"YulFunctionCall","src":"1091:32:4"},"nodeType":"YulIf","src":"1088:2:4"},{"nodeType":"YulBlock","src":"1150:117:4","statements":[{"nodeType":"YulVariableDeclaration","src":"1165:15:4","value":{"kind":"number","nodeType":"YulLiteral","src":"1179:1:4","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1169:6:4","type":""}]},{"nodeType":"YulAssignment","src":"1194:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1229:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"1240:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1225:3:4"},"nodeType":"YulFunctionCall","src":"1225:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1249:7:4"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"1204:20:4"},"nodeType":"YulFunctionCall","src":"1204:53:4"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1194:6:4"}]}]},{"nodeType":"YulBlock","src":"1277:118:4","statements":[{"nodeType":"YulVariableDeclaration","src":"1292:16:4","value":{"kind":"number","nodeType":"YulLiteral","src":"1306:2:4","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1296:6:4","type":""}]},{"nodeType":"YulAssignment","src":"1322:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1357:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"1368:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1353:3:4"},"nodeType":"YulFunctionCall","src":"1353:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1377:7:4"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"1332:20:4"},"nodeType":"YulFunctionCall","src":"1332:53:4"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1322:6:4"}]}]},{"nodeType":"YulBlock","src":"1405:118:4","statements":[{"nodeType":"YulVariableDeclaration","src":"1420:16:4","value":{"kind":"number","nodeType":"YulLiteral","src":"1434:2:4","type":"","value":"64"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1424:6:4","type":""}]},{"nodeType":"YulAssignment","src":"1450:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1485:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"1496:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1481:3:4"},"nodeType":"YulFunctionCall","src":"1481:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1505:7:4"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"1460:20:4"},"nodeType":"YulFunctionCall","src":"1460:53:4"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"1450:6:4"}]}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1032:9:4","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1043:7:4","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1055:6:4","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1063:6:4","type":""},{"name":"value2","nodeType":"YulTypedName","src":"1071:6:4","type":""}],"src":"978:552:4"},{"body":{"nodeType":"YulBlock","src":"1619:324:4","statements":[{"body":{"nodeType":"YulBlock","src":"1665:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1674:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1677:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1667:6:4"},"nodeType":"YulFunctionCall","src":"1667:12:4"},"nodeType":"YulExpressionStatement","src":"1667:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1640:7:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"1649:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1636:3:4"},"nodeType":"YulFunctionCall","src":"1636:23:4"},{"kind":"number","nodeType":"YulLiteral","src":"1661:2:4","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1632:3:4"},"nodeType":"YulFunctionCall","src":"1632:32:4"},"nodeType":"YulIf","src":"1629:2:4"},{"nodeType":"YulBlock","src":"1691:117:4","statements":[{"nodeType":"YulVariableDeclaration","src":"1706:15:4","value":{"kind":"number","nodeType":"YulLiteral","src":"1720:1:4","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1710:6:4","type":""}]},{"nodeType":"YulAssignment","src":"1735:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1770:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"1781:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1766:3:4"},"nodeType":"YulFunctionCall","src":"1766:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1790:7:4"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"1745:20:4"},"nodeType":"YulFunctionCall","src":"1745:53:4"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1735:6:4"}]}]},{"nodeType":"YulBlock","src":"1818:118:4","statements":[{"nodeType":"YulVariableDeclaration","src":"1833:16:4","value":{"kind":"number","nodeType":"YulLiteral","src":"1847:2:4","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1837:6:4","type":""}]},{"nodeType":"YulAssignment","src":"1863:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1898:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"1909:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1894:3:4"},"nodeType":"YulFunctionCall","src":"1894:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1918:7:4"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"1873:20:4"},"nodeType":"YulFunctionCall","src":"1873:53:4"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1863:6:4"}]}]}]},"name":"abi_decode_tuple_t_addresst_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1581:9:4","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1592:7:4","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1604:6:4","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1612:6:4","type":""}],"src":"1536:407:4"},{"body":{"nodeType":"YulBlock","src":"2008:50:4","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2025:3:4"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2045:5:4"}],"functionName":{"name":"cleanup_t_bool","nodeType":"YulIdentifier","src":"2030:14:4"},"nodeType":"YulFunctionCall","src":"2030:21:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2018:6:4"},"nodeType":"YulFunctionCall","src":"2018:34:4"},"nodeType":"YulExpressionStatement","src":"2018:34:4"}]},"name":"abi_encode_t_bool_to_t_bool_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1996:5:4","type":""},{"name":"pos","nodeType":"YulTypedName","src":"2003:3:4","type":""}],"src":"1949:109:4"},{"body":{"nodeType":"YulBlock","src":"2156:272:4","statements":[{"nodeType":"YulVariableDeclaration","src":"2166:53:4","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2213:5:4"}],"functionName":{"name":"array_length_t_string_memory_ptr","nodeType":"YulIdentifier","src":"2180:32:4"},"nodeType":"YulFunctionCall","src":"2180:39:4"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"2170:6:4","type":""}]},{"nodeType":"YulAssignment","src":"2228:78:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2294:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"2299:6:4"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"2235:58:4"},"nodeType":"YulFunctionCall","src":"2235:71:4"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"2228:3:4"}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2341:5:4"},{"kind":"number","nodeType":"YulLiteral","src":"2348:4:4","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2337:3:4"},"nodeType":"YulFunctionCall","src":"2337:16:4"},{"name":"pos","nodeType":"YulIdentifier","src":"2355:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"2360:6:4"}],"functionName":{"name":"copy_memory_to_memory","nodeType":"YulIdentifier","src":"2315:21:4"},"nodeType":"YulFunctionCall","src":"2315:52:4"},"nodeType":"YulExpressionStatement","src":"2315:52:4"},{"nodeType":"YulAssignment","src":"2376:46:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2387:3:4"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"2414:6:4"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"2392:21:4"},"nodeType":"YulFunctionCall","src":"2392:29:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2383:3:4"},"nodeType":"YulFunctionCall","src":"2383:39:4"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"2376:3:4"}]}]},"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"2137:5:4","type":""},{"name":"pos","nodeType":"YulTypedName","src":"2144:3:4","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"2152:3:4","type":""}],"src":"2064:364:4"},{"body":{"nodeType":"YulBlock","src":"2580:220:4","statements":[{"nodeType":"YulAssignment","src":"2590:74:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2656:3:4"},{"kind":"number","nodeType":"YulLiteral","src":"2661:2:4","type":"","value":"22"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"2597:58:4"},"nodeType":"YulFunctionCall","src":"2597:67:4"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"2590:3:4"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2762:3:4"}],"functionName":{"name":"store_literal_in_memory_45e3d26e36c3151c7f92a1eee9add9658cbb8e14605ee2452ec007389b9744bc","nodeType":"YulIdentifier","src":"2673:88:4"},"nodeType":"YulFunctionCall","src":"2673:93:4"},"nodeType":"YulExpressionStatement","src":"2673:93:4"},{"nodeType":"YulAssignment","src":"2775:19:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2786:3:4"},{"kind":"number","nodeType":"YulLiteral","src":"2791:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2782:3:4"},"nodeType":"YulFunctionCall","src":"2782:12:4"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"2775:3:4"}]}]},"name":"abi_encode_t_stringliteral_45e3d26e36c3151c7f92a1eee9add9658cbb8e14605ee2452ec007389b9744bc_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"2568:3:4","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"2576:3:4","type":""}],"src":"2434:366:4"},{"body":{"nodeType":"YulBlock","src":"2952:220:4","statements":[{"nodeType":"YulAssignment","src":"2962:74:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3028:3:4"},{"kind":"number","nodeType":"YulLiteral","src":"3033:2:4","type":"","value":"25"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"2969:58:4"},"nodeType":"YulFunctionCall","src":"2969:67:4"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"2962:3:4"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3134:3:4"}],"functionName":{"name":"store_literal_in_memory_4ca3cd75a1831a94a24913bfd2c9b9d35acbb11ac3447f65bb0682cf14f63f5c","nodeType":"YulIdentifier","src":"3045:88:4"},"nodeType":"YulFunctionCall","src":"3045:93:4"},"nodeType":"YulExpressionStatement","src":"3045:93:4"},{"nodeType":"YulAssignment","src":"3147:19:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3158:3:4"},{"kind":"number","nodeType":"YulLiteral","src":"3163:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3154:3:4"},"nodeType":"YulFunctionCall","src":"3154:12:4"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"3147:3:4"}]}]},"name":"abi_encode_t_stringliteral_4ca3cd75a1831a94a24913bfd2c9b9d35acbb11ac3447f65bb0682cf14f63f5c_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"2940:3:4","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"2948:3:4","type":""}],"src":"2806:366:4"},{"body":{"nodeType":"YulBlock","src":"3243:53:4","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3260:3:4"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3283:5:4"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"3265:17:4"},"nodeType":"YulFunctionCall","src":"3265:24:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3253:6:4"},"nodeType":"YulFunctionCall","src":"3253:37:4"},"nodeType":"YulExpressionStatement","src":"3253:37:4"}]},"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"3231:5:4","type":""},{"name":"pos","nodeType":"YulTypedName","src":"3238:3:4","type":""}],"src":"3178:118:4"},{"body":{"nodeType":"YulBlock","src":"3394:118:4","statements":[{"nodeType":"YulAssignment","src":"3404:26:4","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3416:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"3427:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3412:3:4"},"nodeType":"YulFunctionCall","src":"3412:18:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3404:4:4"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3478:6:4"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3491:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"3502:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3487:3:4"},"nodeType":"YulFunctionCall","src":"3487:17:4"}],"functionName":{"name":"abi_encode_t_bool_to_t_bool_fromStack","nodeType":"YulIdentifier","src":"3440:37:4"},"nodeType":"YulFunctionCall","src":"3440:65:4"},"nodeType":"YulExpressionStatement","src":"3440:65:4"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3366:9:4","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3378:6:4","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3389:4:4","type":""}],"src":"3302:210:4"},{"body":{"nodeType":"YulBlock","src":"3636:195:4","statements":[{"nodeType":"YulAssignment","src":"3646:26:4","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3658:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"3669:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3654:3:4"},"nodeType":"YulFunctionCall","src":"3654:18:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3646:4:4"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3693:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"3704:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3689:3:4"},"nodeType":"YulFunctionCall","src":"3689:17:4"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"3712:4:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"3718:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3708:3:4"},"nodeType":"YulFunctionCall","src":"3708:20:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3682:6:4"},"nodeType":"YulFunctionCall","src":"3682:47:4"},"nodeType":"YulExpressionStatement","src":"3682:47:4"},{"nodeType":"YulAssignment","src":"3738:86:4","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3810:6:4"},{"name":"tail","nodeType":"YulIdentifier","src":"3819:4:4"}],"functionName":{"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"3746:63:4"},"nodeType":"YulFunctionCall","src":"3746:78:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3738:4:4"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3608:9:4","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3620:6:4","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3631:4:4","type":""}],"src":"3518:313:4"},{"body":{"nodeType":"YulBlock","src":"4008:248:4","statements":[{"nodeType":"YulAssignment","src":"4018:26:4","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4030:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"4041:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4026:3:4"},"nodeType":"YulFunctionCall","src":"4026:18:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4018:4:4"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4065:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"4076:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4061:3:4"},"nodeType":"YulFunctionCall","src":"4061:17:4"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"4084:4:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"4090:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4080:3:4"},"nodeType":"YulFunctionCall","src":"4080:20:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4054:6:4"},"nodeType":"YulFunctionCall","src":"4054:47:4"},"nodeType":"YulExpressionStatement","src":"4054:47:4"},{"nodeType":"YulAssignment","src":"4110:139:4","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"4244:4:4"}],"functionName":{"name":"abi_encode_t_stringliteral_45e3d26e36c3151c7f92a1eee9add9658cbb8e14605ee2452ec007389b9744bc_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"4118:124:4"},"nodeType":"YulFunctionCall","src":"4118:131:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4110:4:4"}]}]},"name":"abi_encode_tuple_t_stringliteral_45e3d26e36c3151c7f92a1eee9add9658cbb8e14605ee2452ec007389b9744bc__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3988:9:4","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4003:4:4","type":""}],"src":"3837:419:4"},{"body":{"nodeType":"YulBlock","src":"4433:248:4","statements":[{"nodeType":"YulAssignment","src":"4443:26:4","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4455:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"4466:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4451:3:4"},"nodeType":"YulFunctionCall","src":"4451:18:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4443:4:4"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4490:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"4501:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4486:3:4"},"nodeType":"YulFunctionCall","src":"4486:17:4"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"4509:4:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"4515:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4505:3:4"},"nodeType":"YulFunctionCall","src":"4505:20:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4479:6:4"},"nodeType":"YulFunctionCall","src":"4479:47:4"},"nodeType":"YulExpressionStatement","src":"4479:47:4"},{"nodeType":"YulAssignment","src":"4535:139:4","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"4669:4:4"}],"functionName":{"name":"abi_encode_t_stringliteral_4ca3cd75a1831a94a24913bfd2c9b9d35acbb11ac3447f65bb0682cf14f63f5c_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"4543:124:4"},"nodeType":"YulFunctionCall","src":"4543:131:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4535:4:4"}]}]},"name":"abi_encode_tuple_t_stringliteral_4ca3cd75a1831a94a24913bfd2c9b9d35acbb11ac3447f65bb0682cf14f63f5c__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4413:9:4","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4428:4:4","type":""}],"src":"4262:419:4"},{"body":{"nodeType":"YulBlock","src":"4785:124:4","statements":[{"nodeType":"YulAssignment","src":"4795:26:4","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4807:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"4818:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4803:3:4"},"nodeType":"YulFunctionCall","src":"4803:18:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4795:4:4"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4875:6:4"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4888:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"4899:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4884:3:4"},"nodeType":"YulFunctionCall","src":"4884:17:4"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"4831:43:4"},"nodeType":"YulFunctionCall","src":"4831:71:4"},"nodeType":"YulExpressionStatement","src":"4831:71:4"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4757:9:4","type":""},{"name":"value0","nodeType":"YulTypedName","src":"4769:6:4","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4780:4:4","type":""}],"src":"4687:222:4"},{"body":{"nodeType":"YulBlock","src":"4974:40:4","statements":[{"nodeType":"YulAssignment","src":"4985:22:4","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5001:5:4"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4995:5:4"},"nodeType":"YulFunctionCall","src":"4995:12:4"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"4985:6:4"}]}]},"name":"array_length_t_string_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"4957:5:4","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"4967:6:4","type":""}],"src":"4915:99:4"},{"body":{"nodeType":"YulBlock","src":"5116:73:4","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5133:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"5138:6:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5126:6:4"},"nodeType":"YulFunctionCall","src":"5126:19:4"},"nodeType":"YulExpressionStatement","src":"5126:19:4"},{"nodeType":"YulAssignment","src":"5154:29:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5173:3:4"},{"kind":"number","nodeType":"YulLiteral","src":"5178:4:4","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5169:3:4"},"nodeType":"YulFunctionCall","src":"5169:14:4"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"5154:11:4"}]}]},"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"5088:3:4","type":""},{"name":"length","nodeType":"YulTypedName","src":"5093:6:4","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"5104:11:4","type":""}],"src":"5020:169:4"},{"body":{"nodeType":"YulBlock","src":"5239:261:4","statements":[{"nodeType":"YulAssignment","src":"5249:25:4","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"5272:1:4"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"5254:17:4"},"nodeType":"YulFunctionCall","src":"5254:20:4"},"variableNames":[{"name":"x","nodeType":"YulIdentifier","src":"5249:1:4"}]},{"nodeType":"YulAssignment","src":"5283:25:4","value":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"5306:1:4"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"5288:17:4"},"nodeType":"YulFunctionCall","src":"5288:20:4"},"variableNames":[{"name":"y","nodeType":"YulIdentifier","src":"5283:1:4"}]},{"body":{"nodeType":"YulBlock","src":"5446:22:4","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"5448:16:4"},"nodeType":"YulFunctionCall","src":"5448:18:4"},"nodeType":"YulExpressionStatement","src":"5448:18:4"}]},"condition":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"5367:1:4"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5374:66:4","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"},{"name":"y","nodeType":"YulIdentifier","src":"5442:1:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5370:3:4"},"nodeType":"YulFunctionCall","src":"5370:74:4"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5364:2:4"},"nodeType":"YulFunctionCall","src":"5364:81:4"},"nodeType":"YulIf","src":"5361:2:4"},{"nodeType":"YulAssignment","src":"5478:16:4","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"5489:1:4"},{"name":"y","nodeType":"YulIdentifier","src":"5492:1:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5485:3:4"},"nodeType":"YulFunctionCall","src":"5485:9:4"},"variableNames":[{"name":"sum","nodeType":"YulIdentifier","src":"5478:3:4"}]}]},"name":"checked_add_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"5226:1:4","type":""},{"name":"y","nodeType":"YulTypedName","src":"5229:1:4","type":""}],"returnVariables":[{"name":"sum","nodeType":"YulTypedName","src":"5235:3:4","type":""}],"src":"5195:305:4"},{"body":{"nodeType":"YulBlock","src":"5551:146:4","statements":[{"nodeType":"YulAssignment","src":"5561:25:4","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"5584:1:4"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"5566:17:4"},"nodeType":"YulFunctionCall","src":"5566:20:4"},"variableNames":[{"name":"x","nodeType":"YulIdentifier","src":"5561:1:4"}]},{"nodeType":"YulAssignment","src":"5595:25:4","value":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"5618:1:4"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"5600:17:4"},"nodeType":"YulFunctionCall","src":"5600:20:4"},"variableNames":[{"name":"y","nodeType":"YulIdentifier","src":"5595:1:4"}]},{"body":{"nodeType":"YulBlock","src":"5642:22:4","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"5644:16:4"},"nodeType":"YulFunctionCall","src":"5644:18:4"},"nodeType":"YulExpressionStatement","src":"5644:18:4"}]},"condition":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"5636:1:4"},{"name":"y","nodeType":"YulIdentifier","src":"5639:1:4"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"5633:2:4"},"nodeType":"YulFunctionCall","src":"5633:8:4"},"nodeType":"YulIf","src":"5630:2:4"},{"nodeType":"YulAssignment","src":"5674:17:4","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"5686:1:4"},{"name":"y","nodeType":"YulIdentifier","src":"5689:1:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5682:3:4"},"nodeType":"YulFunctionCall","src":"5682:9:4"},"variableNames":[{"name":"diff","nodeType":"YulIdentifier","src":"5674:4:4"}]}]},"name":"checked_sub_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"5537:1:4","type":""},{"name":"y","nodeType":"YulTypedName","src":"5540:1:4","type":""}],"returnVariables":[{"name":"diff","nodeType":"YulTypedName","src":"5546:4:4","type":""}],"src":"5506:191:4"},{"body":{"nodeType":"YulBlock","src":"5748:51:4","statements":[{"nodeType":"YulAssignment","src":"5758:35:4","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5787:5:4"}],"functionName":{"name":"cleanup_t_uint160","nodeType":"YulIdentifier","src":"5769:17:4"},"nodeType":"YulFunctionCall","src":"5769:24:4"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"5758:7:4"}]}]},"name":"cleanup_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"5730:5:4","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"5740:7:4","type":""}],"src":"5703:96:4"},{"body":{"nodeType":"YulBlock","src":"5847:48:4","statements":[{"nodeType":"YulAssignment","src":"5857:32:4","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5882:5:4"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"5875:6:4"},"nodeType":"YulFunctionCall","src":"5875:13:4"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"5868:6:4"},"nodeType":"YulFunctionCall","src":"5868:21:4"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"5857:7:4"}]}]},"name":"cleanup_t_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"5829:5:4","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"5839:7:4","type":""}],"src":"5805:90:4"},{"body":{"nodeType":"YulBlock","src":"5946:81:4","statements":[{"nodeType":"YulAssignment","src":"5956:65:4","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5971:5:4"},{"kind":"number","nodeType":"YulLiteral","src":"5978:42:4","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5967:3:4"},"nodeType":"YulFunctionCall","src":"5967:54:4"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"5956:7:4"}]}]},"name":"cleanup_t_uint160","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"5928:5:4","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"5938:7:4","type":""}],"src":"5901:126:4"},{"body":{"nodeType":"YulBlock","src":"6078:32:4","statements":[{"nodeType":"YulAssignment","src":"6088:16:4","value":{"name":"value","nodeType":"YulIdentifier","src":"6099:5:4"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"6088:7:4"}]}]},"name":"cleanup_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"6060:5:4","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"6070:7:4","type":""}],"src":"6033:77:4"},{"body":{"nodeType":"YulBlock","src":"6165:258:4","statements":[{"nodeType":"YulVariableDeclaration","src":"6175:10:4","value":{"kind":"number","nodeType":"YulLiteral","src":"6184:1:4","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"6179:1:4","type":""}]},{"body":{"nodeType":"YulBlock","src":"6244:63:4","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"6269:3:4"},{"name":"i","nodeType":"YulIdentifier","src":"6274:1:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6265:3:4"},"nodeType":"YulFunctionCall","src":"6265:11:4"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"6288:3:4"},{"name":"i","nodeType":"YulIdentifier","src":"6293:1:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6284:3:4"},"nodeType":"YulFunctionCall","src":"6284:11:4"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6278:5:4"},"nodeType":"YulFunctionCall","src":"6278:18:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6258:6:4"},"nodeType":"YulFunctionCall","src":"6258:39:4"},"nodeType":"YulExpressionStatement","src":"6258:39:4"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"6205:1:4"},{"name":"length","nodeType":"YulIdentifier","src":"6208:6:4"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"6202:2:4"},"nodeType":"YulFunctionCall","src":"6202:13:4"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"6216:19:4","statements":[{"nodeType":"YulAssignment","src":"6218:15:4","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"6227:1:4"},{"kind":"number","nodeType":"YulLiteral","src":"6230:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6223:3:4"},"nodeType":"YulFunctionCall","src":"6223:10:4"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"6218:1:4"}]}]},"pre":{"nodeType":"YulBlock","src":"6198:3:4","statements":[]},"src":"6194:113:4"},{"body":{"nodeType":"YulBlock","src":"6341:76:4","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"6391:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"6396:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6387:3:4"},"nodeType":"YulFunctionCall","src":"6387:16:4"},{"kind":"number","nodeType":"YulLiteral","src":"6405:1:4","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6380:6:4"},"nodeType":"YulFunctionCall","src":"6380:27:4"},"nodeType":"YulExpressionStatement","src":"6380:27:4"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"6322:1:4"},{"name":"length","nodeType":"YulIdentifier","src":"6325:6:4"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"6319:2:4"},"nodeType":"YulFunctionCall","src":"6319:13:4"},"nodeType":"YulIf","src":"6316:2:4"}]},"name":"copy_memory_to_memory","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"6147:3:4","type":""},{"name":"dst","nodeType":"YulTypedName","src":"6152:3:4","type":""},{"name":"length","nodeType":"YulTypedName","src":"6157:6:4","type":""}],"src":"6116:307:4"},{"body":{"nodeType":"YulBlock","src":"6480:269:4","statements":[{"nodeType":"YulAssignment","src":"6490:22:4","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"6504:4:4"},{"kind":"number","nodeType":"YulLiteral","src":"6510:1:4","type":"","value":"2"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"6500:3:4"},"nodeType":"YulFunctionCall","src":"6500:12:4"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"6490:6:4"}]},{"nodeType":"YulVariableDeclaration","src":"6521:38:4","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"6551:4:4"},{"kind":"number","nodeType":"YulLiteral","src":"6557:1:4","type":"","value":"1"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"6547:3:4"},"nodeType":"YulFunctionCall","src":"6547:12:4"},"variables":[{"name":"outOfPlaceEncoding","nodeType":"YulTypedName","src":"6525:18:4","type":""}]},{"body":{"nodeType":"YulBlock","src":"6598:51:4","statements":[{"nodeType":"YulAssignment","src":"6612:27:4","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"6626:6:4"},{"kind":"number","nodeType":"YulLiteral","src":"6634:4:4","type":"","value":"0x7f"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"6622:3:4"},"nodeType":"YulFunctionCall","src":"6622:17:4"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"6612:6:4"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"6578:18:4"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"6571:6:4"},"nodeType":"YulFunctionCall","src":"6571:26:4"},"nodeType":"YulIf","src":"6568:2:4"},{"body":{"nodeType":"YulBlock","src":"6701:42:4","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x22","nodeType":"YulIdentifier","src":"6715:16:4"},"nodeType":"YulFunctionCall","src":"6715:18:4"},"nodeType":"YulExpressionStatement","src":"6715:18:4"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"6665:18:4"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"6688:6:4"},{"kind":"number","nodeType":"YulLiteral","src":"6696:2:4","type":"","value":"32"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"6685:2:4"},"nodeType":"YulFunctionCall","src":"6685:14:4"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"6662:2:4"},"nodeType":"YulFunctionCall","src":"6662:38:4"},"nodeType":"YulIf","src":"6659:2:4"}]},"name":"extract_byte_array_length","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"6464:4:4","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"6473:6:4","type":""}],"src":"6429:320:4"},{"body":{"nodeType":"YulBlock","src":"6783:152:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6800:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6803:77:4","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6793:6:4"},"nodeType":"YulFunctionCall","src":"6793:88:4"},"nodeType":"YulExpressionStatement","src":"6793:88:4"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6897:1:4","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"6900:4:4","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6890:6:4"},"nodeType":"YulFunctionCall","src":"6890:15:4"},"nodeType":"YulExpressionStatement","src":"6890:15:4"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6921:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6924:4:4","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6914:6:4"},"nodeType":"YulFunctionCall","src":"6914:15:4"},"nodeType":"YulExpressionStatement","src":"6914:15:4"}]},"name":"panic_error_0x11","nodeType":"YulFunctionDefinition","src":"6755:180:4"},{"body":{"nodeType":"YulBlock","src":"6969:152:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6986:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6989:77:4","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6979:6:4"},"nodeType":"YulFunctionCall","src":"6979:88:4"},"nodeType":"YulExpressionStatement","src":"6979:88:4"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7083:1:4","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"7086:4:4","type":"","value":"0x22"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7076:6:4"},"nodeType":"YulFunctionCall","src":"7076:15:4"},"nodeType":"YulExpressionStatement","src":"7076:15:4"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7107:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7110:4:4","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7100:6:4"},"nodeType":"YulFunctionCall","src":"7100:15:4"},"nodeType":"YulExpressionStatement","src":"7100:15:4"}]},"name":"panic_error_0x22","nodeType":"YulFunctionDefinition","src":"6941:180:4"},{"body":{"nodeType":"YulBlock","src":"7175:54:4","statements":[{"nodeType":"YulAssignment","src":"7185:38:4","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"7203:5:4"},{"kind":"number","nodeType":"YulLiteral","src":"7210:2:4","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7199:3:4"},"nodeType":"YulFunctionCall","src":"7199:14:4"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7219:2:4","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"7215:3:4"},"nodeType":"YulFunctionCall","src":"7215:7:4"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7195:3:4"},"nodeType":"YulFunctionCall","src":"7195:28:4"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"7185:6:4"}]}]},"name":"round_up_to_mul_of_32","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"7158:5:4","type":""}],"returnVariables":[{"name":"result","nodeType":"YulTypedName","src":"7168:6:4","type":""}],"src":"7127:102:4"},{"body":{"nodeType":"YulBlock","src":"7341:66:4","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7363:6:4"},{"kind":"number","nodeType":"YulLiteral","src":"7371:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7359:3:4"},"nodeType":"YulFunctionCall","src":"7359:14:4"},{"kind":"string","nodeType":"YulLiteral","src":"7375:24:4","type":"","value":"Insufficient allowance"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7352:6:4"},"nodeType":"YulFunctionCall","src":"7352:48:4"},"nodeType":"YulExpressionStatement","src":"7352:48:4"}]},"name":"store_literal_in_memory_45e3d26e36c3151c7f92a1eee9add9658cbb8e14605ee2452ec007389b9744bc","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"7333:6:4","type":""}],"src":"7235:172:4"},{"body":{"nodeType":"YulBlock","src":"7519:69:4","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7541:6:4"},{"kind":"number","nodeType":"YulLiteral","src":"7549:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7537:3:4"},"nodeType":"YulFunctionCall","src":"7537:14:4"},{"kind":"string","nodeType":"YulLiteral","src":"7553:27:4","type":"","value":"Transferred value is zero"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7530:6:4"},"nodeType":"YulFunctionCall","src":"7530:51:4"},"nodeType":"YulExpressionStatement","src":"7530:51:4"}]},"name":"store_literal_in_memory_4ca3cd75a1831a94a24913bfd2c9b9d35acbb11ac3447f65bb0682cf14f63f5c","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"7511:6:4","type":""}],"src":"7413:175:4"},{"body":{"nodeType":"YulBlock","src":"7637:79:4","statements":[{"body":{"nodeType":"YulBlock","src":"7694:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7703:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7706:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7696:6:4"},"nodeType":"YulFunctionCall","src":"7696:12:4"},"nodeType":"YulExpressionStatement","src":"7696:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"7660:5:4"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"7685:5:4"}],"functionName":{"name":"cleanup_t_address","nodeType":"YulIdentifier","src":"7667:17:4"},"nodeType":"YulFunctionCall","src":"7667:24:4"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"7657:2:4"},"nodeType":"YulFunctionCall","src":"7657:35:4"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"7650:6:4"},"nodeType":"YulFunctionCall","src":"7650:43:4"},"nodeType":"YulIf","src":"7647:2:4"}]},"name":"validator_revert_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"7630:5:4","type":""}],"src":"7594:122:4"},{"body":{"nodeType":"YulBlock","src":"7765:79:4","statements":[{"body":{"nodeType":"YulBlock","src":"7822:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7831:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7834:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7824:6:4"},"nodeType":"YulFunctionCall","src":"7824:12:4"},"nodeType":"YulExpressionStatement","src":"7824:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"7788:5:4"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"7813:5:4"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"7795:17:4"},"nodeType":"YulFunctionCall","src":"7795:24:4"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"7785:2:4"},"nodeType":"YulFunctionCall","src":"7785:35:4"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"7778:6:4"},"nodeType":"YulFunctionCall","src":"7778:43:4"},"nodeType":"YulIf","src":"7775:2:4"}]},"name":"validator_revert_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"7758:5:4","type":""}],"src":"7722:122:4"}]},"contents":"{\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_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_addresst_address(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(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2 {\n if slt(sub(dataEnd, headStart), 96) { 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 let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_addresst_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(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_encode_t_bool_to_t_bool_fromStack(value, pos) {\n mstore(pos, cleanup_t_bool(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_45e3d26e36c3151c7f92a1eee9add9658cbb8e14605ee2452ec007389b9744bc_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 22)\n store_literal_in_memory_45e3d26e36c3151c7f92a1eee9add9658cbb8e14605ee2452ec007389b9744bc(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_t_stringliteral_4ca3cd75a1831a94a24913bfd2c9b9d35acbb11ac3447f65bb0682cf14f63f5c_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 25)\n store_literal_in_memory_4ca3cd75a1831a94a24913bfd2c9b9d35acbb11ac3447f65bb0682cf14f63f5c(pos)\n end := add(pos, 32)\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_bool__to_t_bool__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_bool_to_t_bool_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_45e3d26e36c3151c7f92a1eee9add9658cbb8e14605ee2452ec007389b9744bc__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_45e3d26e36c3151c7f92a1eee9add9658cbb8e14605ee2452ec007389b9744bc_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function abi_encode_tuple_t_stringliteral_4ca3cd75a1831a94a24913bfd2c9b9d35acbb11ac3447f65bb0682cf14f63f5c__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_4ca3cd75a1831a94a24913bfd2c9b9d35acbb11ac3447f65bb0682cf14f63f5c_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 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_bool(value) -> cleaned {\n cleaned := iszero(iszero(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_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 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 round_up_to_mul_of_32(value) -> result {\n result := and(add(value, 31), not(31))\n }\n\n function store_literal_in_memory_45e3d26e36c3151c7f92a1eee9add9658cbb8e14605ee2452ec007389b9744bc(memPtr) {\n\n mstore(add(memPtr, 0), \"Insufficient allowance\")\n\n }\n\n function store_literal_in_memory_4ca3cd75a1831a94a24913bfd2c9b9d35acbb11ac3447f65bb0682cf14f63f5c(memPtr) {\n\n mstore(add(memPtr, 0), \"Transferred value is zero\")\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_uint256(value) {\n if iszero(eq(value, cleanup_t_uint256(value))) { revert(0, 0) }\n }\n\n}\n","id":4,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100885760003560e01c8063313ce5671161005b578063313ce5671461012957806370a0823114610147578063a9059cbb14610177578063dd62ed3e146101a757610088565b806306fdde031461008d578063095ea7b3146100ab57806318160ddd146100db57806323b872dd146100f9575b600080fd5b6100956101d7565b6040516100a29190610801565b60405180910390f35b6100c560048036038101906100c0919061070d565b610265565b6040516100d291906107e6565b60405180910390f35b6100e36102f2565b6040516100f09190610863565b60405180910390f35b610113600480360381019061010e91906106be565b6102f8565b60405161012091906107e6565b60405180910390f35b610131610490565b60405161013e9190610863565b60405180910390f35b610161600480360381019061015c9190610659565b610496565b60405161016e9190610863565b60405180910390f35b610191600480360381019061018c919061070d565b6104ae565b60405161019e91906107e6565b60405180910390f35b6101c160048036038101906101bc9190610682565b6105a8565b6040516101ce9190610863565b60405180910390f35b600480546101e49061099f565b80601f01602080910402602001604051908101604052809291908181526020018280546102109061099f565b801561025d5780601f106102325761010080835404028352916020019161025d565b820191906000526020600020905b81548152906001019060200180831161024057829003601f168201915b505050505081565b600081600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001905092915050565b60015481565b60008161030585336105a8565b1015610346576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161033d90610823565b60405180910390fd5b81600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546103d291906108f0565b9250508190555081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461042891906108f0565b9250508190555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461047e919061089a565b92505081905550600190509392505050565b60005481565b60026020528060005260406000206000915090505481565b60008082116104f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104e990610843565b60405180910390fd5b81600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461054191906108f0565b9250508190555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610597919061089a565b925050819055506001905092915050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008135905061063e81610a92565b92915050565b60008135905061065381610aa9565b92915050565b60006020828403121561066b57600080fd5b60006106798482850161062f565b91505092915050565b6000806040838503121561069557600080fd5b60006106a38582860161062f565b92505060206106b48582860161062f565b9150509250929050565b6000806000606084860312156106d357600080fd5b60006106e18682870161062f565b93505060206106f28682870161062f565b925050604061070386828701610644565b9150509250925092565b6000806040838503121561072057600080fd5b600061072e8582860161062f565b925050602061073f85828601610644565b9150509250929050565b61075281610936565b82525050565b60006107638261087e565b61076d8185610889565b935061077d81856020860161096c565b61078681610a2f565b840191505092915050565b600061079e601683610889565b91506107a982610a40565b602082019050919050565b60006107c1601983610889565b91506107cc82610a69565b602082019050919050565b6107e081610962565b82525050565b60006020820190506107fb6000830184610749565b92915050565b6000602082019050818103600083015261081b8184610758565b905092915050565b6000602082019050818103600083015261083c81610791565b9050919050565b6000602082019050818103600083015261085c816107b4565b9050919050565b600060208201905061087860008301846107d7565b92915050565b600081519050919050565b600082825260208201905092915050565b60006108a582610962565b91506108b083610962565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156108e5576108e46109d1565b5b828201905092915050565b60006108fb82610962565b915061090683610962565b925082821015610919576109186109d1565b5b828203905092915050565b600061092f82610942565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b8381101561098a57808201518184015260208101905061096f565b83811115610999576000848401525b50505050565b600060028204905060018216806109b757607f821691505b602082108114156109cb576109ca610a00565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f496e73756666696369656e7420616c6c6f77616e636500000000000000000000600082015250565b7f5472616e736665727265642076616c7565206973207a65726f00000000000000600082015250565b610a9b81610924565b8114610aa657600080fd5b50565b610ab281610962565b8114610abd57600080fd5b5056fea2646970667358221220a6fcd04aa893368d0e3e9a004a848844c520623183d6b2111fbc6f837204d0fa64736f6c63430008040033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x88 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x313CE567 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x129 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x147 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x177 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x1A7 JUMPI PUSH2 0x88 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x8D JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0xAB JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0xDB JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0xF9 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x95 PUSH2 0x1D7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xA2 SWAP2 SWAP1 PUSH2 0x801 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xC5 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xC0 SWAP2 SWAP1 PUSH2 0x70D JUMP JUMPDEST PUSH2 0x265 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xD2 SWAP2 SWAP1 PUSH2 0x7E6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xE3 PUSH2 0x2F2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xF0 SWAP2 SWAP1 PUSH2 0x863 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x113 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x10E SWAP2 SWAP1 PUSH2 0x6BE JUMP JUMPDEST PUSH2 0x2F8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x120 SWAP2 SWAP1 PUSH2 0x7E6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x131 PUSH2 0x490 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x13E SWAP2 SWAP1 PUSH2 0x863 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x161 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x15C SWAP2 SWAP1 PUSH2 0x659 JUMP JUMPDEST PUSH2 0x496 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x16E SWAP2 SWAP1 PUSH2 0x863 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x191 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x18C SWAP2 SWAP1 PUSH2 0x70D JUMP JUMPDEST PUSH2 0x4AE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x19E SWAP2 SWAP1 PUSH2 0x7E6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1C1 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1BC SWAP2 SWAP1 PUSH2 0x682 JUMP JUMPDEST PUSH2 0x5A8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1CE SWAP2 SWAP1 PUSH2 0x863 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH2 0x1E4 SWAP1 PUSH2 0x99F 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 0x210 SWAP1 PUSH2 0x99F JUMP JUMPDEST DUP1 ISZERO PUSH2 0x25D JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x232 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x25D 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 0x240 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x3 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 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP PUSH1 0x1 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x305 DUP6 CALLER PUSH2 0x5A8 JUMP JUMPDEST LT ISZERO PUSH2 0x346 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x33D SWAP1 PUSH2 0x823 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 PUSH1 0x3 PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 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 0x3D2 SWAP2 SWAP1 PUSH2 0x8F0 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x2 PUSH1 0x0 DUP7 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 0x428 SWAP2 SWAP1 PUSH2 0x8F0 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x2 PUSH1 0x0 DUP6 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 0x47E SWAP2 SWAP1 PUSH2 0x89A JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH1 0x1 SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD 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 DUP3 GT PUSH2 0x4F2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4E9 SWAP1 PUSH2 0x843 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 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 0x541 SWAP2 SWAP1 PUSH2 0x8F0 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x2 PUSH1 0x0 DUP6 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 0x597 SWAP2 SWAP1 PUSH2 0x89A JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH1 0x1 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x3 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x63E DUP2 PUSH2 0xA92 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x653 DUP2 PUSH2 0xAA9 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x66B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x679 DUP5 DUP3 DUP6 ADD PUSH2 0x62F JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x695 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x6A3 DUP6 DUP3 DUP7 ADD PUSH2 0x62F JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x6B4 DUP6 DUP3 DUP7 ADD PUSH2 0x62F JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x6D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x6E1 DUP7 DUP3 DUP8 ADD PUSH2 0x62F JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x6F2 DUP7 DUP3 DUP8 ADD PUSH2 0x62F JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x703 DUP7 DUP3 DUP8 ADD PUSH2 0x644 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x720 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x72E DUP6 DUP3 DUP7 ADD PUSH2 0x62F JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x73F DUP6 DUP3 DUP7 ADD PUSH2 0x644 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH2 0x752 DUP2 PUSH2 0x936 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x763 DUP3 PUSH2 0x87E JUMP JUMPDEST PUSH2 0x76D DUP2 DUP6 PUSH2 0x889 JUMP JUMPDEST SWAP4 POP PUSH2 0x77D DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x96C JUMP JUMPDEST PUSH2 0x786 DUP2 PUSH2 0xA2F JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x79E PUSH1 0x16 DUP4 PUSH2 0x889 JUMP JUMPDEST SWAP2 POP PUSH2 0x7A9 DUP3 PUSH2 0xA40 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7C1 PUSH1 0x19 DUP4 PUSH2 0x889 JUMP JUMPDEST SWAP2 POP PUSH2 0x7CC DUP3 PUSH2 0xA69 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x7E0 DUP2 PUSH2 0x962 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x7FB PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x749 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 0x81B DUP2 DUP5 PUSH2 0x758 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 0x83C DUP2 PUSH2 0x791 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 0x85C DUP2 PUSH2 0x7B4 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x878 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x7D7 JUMP JUMPDEST SWAP3 SWAP2 POP 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 0x8A5 DUP3 PUSH2 0x962 JUMP JUMPDEST SWAP2 POP PUSH2 0x8B0 DUP4 PUSH2 0x962 JUMP JUMPDEST SWAP3 POP DUP3 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SUB DUP3 GT ISZERO PUSH2 0x8E5 JUMPI PUSH2 0x8E4 PUSH2 0x9D1 JUMP JUMPDEST JUMPDEST DUP3 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8FB DUP3 PUSH2 0x962 JUMP JUMPDEST SWAP2 POP PUSH2 0x906 DUP4 PUSH2 0x962 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 LT ISZERO PUSH2 0x919 JUMPI PUSH2 0x918 PUSH2 0x9D1 JUMP JUMPDEST JUMPDEST DUP3 DUP3 SUB SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x92F DUP3 PUSH2 0x942 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO ISZERO 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 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x98A JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x96F JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x999 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 0x9B7 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 EQ ISZERO PUSH2 0x9CB JUMPI PUSH2 0x9CA PUSH2 0xA00 JUMP JUMPDEST JUMPDEST POP SWAP2 SWAP1 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 PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x496E73756666696369656E7420616C6C6F77616E636500000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH32 0x5472616E736665727265642076616C7565206973207A65726F00000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH2 0xA9B DUP2 PUSH2 0x924 JUMP JUMPDEST DUP2 EQ PUSH2 0xAA6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0xAB2 DUP2 PUSH2 0x962 JUMP JUMPDEST DUP2 EQ PUSH2 0xABD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xA6 0xFC 0xD0 0x4A 0xA8 SWAP4 CALLDATASIZE DUP14 0xE RETURNDATACOPY SWAP11 STOP 0x4A DUP5 DUP9 DIFFICULTY 0xC5 KECCAK256 PUSH3 0x3183D6 0xB2 GT 0x1F 0xBC PUSH16 0x837204D0FA64736F6C63430008040033 ","sourceMap":"1144:95:3:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1204:32;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;703:146;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;125:23;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;853:287;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;96:24;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;152:41;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;355:205;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;564:135;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1204:32;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;703:146::-;768:12;822:5;788:10;:22;799:10;788:22;;;;;;;;;;;;;;;:31;811:7;788:31;;;;;;;;;;;;;;;:39;;;;840:4;833:11;;703:146;;;;:::o;125:23::-;;;;:::o;853:287::-;932:4;983:5;952:27;962:4;968:10;952:9;:27::i;:::-;:36;;944:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;1054:5;1022:10;:16;1033:4;1022:16;;;;;;;;;;;;;;;:28;1039:10;1022:28;;;;;;;;;;;;;;;;:37;;;;;;;:::i;:::-;;;;;;;;1084:5;1065:9;:15;1075:4;1065:15;;;;;;;;;;;;;;;;:24;;;;;;;:::i;:::-;;;;;;;;1112:5;1095:9;:13;1105:2;1095:13;;;;;;;;;;;;;;;;:22;;;;;;;:::i;:::-;;;;;;;;1131:4;1124:11;;853:287;;;;;:::o;96:24::-;;;;:::o;152:41::-;;;;;;;;;;;;;;;;;:::o;355:205::-;413:4;441:1;433:5;:9;425:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;504:5;479:9;:21;489:10;479:21;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;532:5;515:9;:13;525:2;515:13;;;;;;;;;;;;;;;;:22;;;;;;;:::i;:::-;;;;;;;;551:4;544:11;;355:205;;;;:::o;564:135::-;636:17;668:10;:17;679:5;668:17;;;;;;;;;;;;;;;:26;686:7;668:26;;;;;;;;;;;;;;;;661:33;;564:135;;;;:::o;7:139:4:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:139::-;198:5;236:6;223:20;214:29;;252:33;279:5;252:33;:::i;:::-;204:87;;;;:::o;297:262::-;356:6;405:2;393:9;384:7;380:23;376:32;373:2;;;421:1;418;411:12;373:2;464:1;489:53;534:7;525:6;514:9;510:22;489:53;:::i;:::-;479:63;;435:117;363:196;;;;:::o;565:407::-;633:6;641;690:2;678:9;669:7;665:23;661:32;658:2;;;706:1;703;696:12;658:2;749:1;774:53;819:7;810:6;799:9;795:22;774:53;:::i;:::-;764:63;;720:117;876:2;902:53;947:7;938:6;927:9;923:22;902:53;:::i;:::-;892:63;;847:118;648:324;;;;;:::o;978:552::-;1055:6;1063;1071;1120:2;1108:9;1099:7;1095:23;1091:32;1088:2;;;1136:1;1133;1126:12;1088:2;1179:1;1204:53;1249:7;1240:6;1229:9;1225:22;1204:53;:::i;:::-;1194:63;;1150:117;1306:2;1332:53;1377:7;1368:6;1357:9;1353:22;1332:53;:::i;:::-;1322:63;;1277:118;1434:2;1460:53;1505:7;1496:6;1485:9;1481:22;1460:53;:::i;:::-;1450:63;;1405:118;1078:452;;;;;:::o;1536:407::-;1604:6;1612;1661:2;1649:9;1640:7;1636:23;1632:32;1629:2;;;1677:1;1674;1667:12;1629:2;1720:1;1745:53;1790:7;1781:6;1770:9;1766:22;1745:53;:::i;:::-;1735:63;;1691:117;1847:2;1873:53;1918:7;1909:6;1898:9;1894:22;1873:53;:::i;:::-;1863:63;;1818:118;1619:324;;;;;:::o;1949:109::-;2030:21;2045:5;2030:21;:::i;:::-;2025:3;2018:34;2008:50;;:::o;2064:364::-;2152:3;2180:39;2213:5;2180:39;:::i;:::-;2235:71;2299:6;2294:3;2235:71;:::i;:::-;2228:78;;2315:52;2360:6;2355:3;2348:4;2341:5;2337:16;2315:52;:::i;:::-;2392:29;2414:6;2392:29;:::i;:::-;2387:3;2383:39;2376:46;;2156:272;;;;;:::o;2434:366::-;2576:3;2597:67;2661:2;2656:3;2597:67;:::i;:::-;2590:74;;2673:93;2762:3;2673:93;:::i;:::-;2791:2;2786:3;2782:12;2775:19;;2580:220;;;:::o;2806:366::-;2948:3;2969:67;3033:2;3028:3;2969:67;:::i;:::-;2962:74;;3045:93;3134:3;3045:93;:::i;:::-;3163:2;3158:3;3154:12;3147:19;;2952:220;;;:::o;3178:118::-;3265:24;3283:5;3265:24;:::i;:::-;3260:3;3253:37;3243:53;;:::o;3302:210::-;3389:4;3427:2;3416:9;3412:18;3404:26;;3440:65;3502:1;3491:9;3487:17;3478:6;3440:65;:::i;:::-;3394:118;;;;:::o;3518:313::-;3631:4;3669:2;3658:9;3654:18;3646:26;;3718:9;3712:4;3708:20;3704:1;3693:9;3689:17;3682:47;3746:78;3819:4;3810:6;3746:78;:::i;:::-;3738:86;;3636:195;;;;:::o;3837:419::-;4003:4;4041:2;4030:9;4026:18;4018:26;;4090:9;4084:4;4080:20;4076:1;4065:9;4061:17;4054:47;4118:131;4244:4;4118:131;:::i;:::-;4110:139;;4008:248;;;:::o;4262:419::-;4428:4;4466:2;4455:9;4451:18;4443:26;;4515:9;4509:4;4505:20;4501:1;4490:9;4486:17;4479:47;4543:131;4669:4;4543:131;:::i;:::-;4535:139;;4433:248;;;:::o;4687:222::-;4780:4;4818:2;4807:9;4803:18;4795:26;;4831:71;4899:1;4888:9;4884:17;4875:6;4831:71;:::i;:::-;4785:124;;;;:::o;4915:99::-;4967:6;5001:5;4995:12;4985:22;;4974:40;;;:::o;5020:169::-;5104:11;5138:6;5133:3;5126:19;5178:4;5173:3;5169:14;5154:29;;5116:73;;;;:::o;5195:305::-;5235:3;5254:20;5272:1;5254:20;:::i;:::-;5249:25;;5288:20;5306:1;5288:20;:::i;:::-;5283:25;;5442:1;5374:66;5370:74;5367:1;5364:81;5361:2;;;5448:18;;:::i;:::-;5361:2;5492:1;5489;5485:9;5478:16;;5239:261;;;;:::o;5506:191::-;5546:4;5566:20;5584:1;5566:20;:::i;:::-;5561:25;;5600:20;5618:1;5600:20;:::i;:::-;5595:25;;5639:1;5636;5633:8;5630:2;;;5644:18;;:::i;:::-;5630:2;5689:1;5686;5682:9;5674:17;;5551:146;;;;:::o;5703:96::-;5740:7;5769:24;5787:5;5769:24;:::i;:::-;5758:35;;5748:51;;;:::o;5805:90::-;5839:7;5882:5;5875:13;5868:21;5857:32;;5847:48;;;:::o;5901:126::-;5938:7;5978:42;5971:5;5967:54;5956:65;;5946:81;;;:::o;6033:77::-;6070:7;6099:5;6088:16;;6078:32;;;:::o;6116:307::-;6184:1;6194:113;6208:6;6205:1;6202:13;6194:113;;;6293:1;6288:3;6284:11;6278:18;6274:1;6269:3;6265:11;6258:39;6230:2;6227:1;6223:10;6218:15;;6194:113;;;6325:6;6322:1;6319:13;6316:2;;;6405:1;6396:6;6391:3;6387:16;6380:27;6316:2;6165:258;;;;:::o;6429:320::-;6473:6;6510:1;6504:4;6500:12;6490:22;;6557:1;6551:4;6547:12;6578:18;6568:2;;6634:4;6626:6;6622:17;6612:27;;6568:2;6696;6688:6;6685:14;6665:18;6662:38;6659:2;;;6715:18;;:::i;:::-;6659:2;6480:269;;;;:::o;6755:180::-;6803:77;6800:1;6793:88;6900:4;6897:1;6890:15;6924:4;6921:1;6914:15;6941:180;6989:77;6986:1;6979:88;7086:4;7083:1;7076:15;7110:4;7107:1;7100:15;7127:102;7168:6;7219:2;7215:7;7210:2;7203:5;7199:14;7195:28;7185:38;;7175:54;;;:::o;7235:172::-;7375:24;7371:1;7363:6;7359:14;7352:48;7341:66;:::o;7413:175::-;7553:27;7549:1;7541:6;7537:14;7530:51;7519:69;:::o;7594:122::-;7667:24;7685:5;7667:24;:::i;:::-;7660:5;7657:35;7647:2;;7706:1;7703;7696:12;7647:2;7637:79;:::o;7722:122::-;7795:24;7813:5;7795:24;:::i;:::-;7788:5;7785:35;7775:2;;7834:1;7831;7824:12;7775:2;7765:79;:::o"},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","name()":"06fdde03","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.4+commit.c7e474f2\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"remaining\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/Token.sol\":\"TokenWithOnlyName\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/Token.sol\":{\"keccak256\":\"0x3c98df2a7295115a107e950c40733f37ce5384cf18a0b5efb948ccf6d1acaa59\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://21c0d9ad7fee4c50e057a477ec0c151985566e51e1df46d3dc42f4320eceeccf\",\"dweb:/ipfs/QmSVvnCWd9MH3F93atgJGuwbHMJpifnoMLSosQsZUKUrZ8\"]}},\"version\":1}"},"TokenWithoutNameNorSymbol":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"remaining","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"6080604052600160005534801561001557600080fd5b50633b9aca00600181905550600154600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610934806100766000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c8063313ce5671161005b578063313ce5671461010057806370a082311461011e578063a9059cbb1461014e578063dd62ed3e1461017e5761007d565b8063095ea7b31461008257806318160ddd146100b257806323b872dd146100d0575b600080fd5b61009c60048036038101906100979190610656565b6101ae565b6040516100a991906106f6565b60405180910390f35b6100ba61023b565b6040516100c79190610751565b60405180910390f35b6100ea60048036038101906100e59190610607565b610241565b6040516100f791906106f6565b60405180910390f35b6101086103d9565b6040516101159190610751565b60405180910390f35b610138600480360381019061013391906105a2565b6103df565b6040516101459190610751565b60405180910390f35b61016860048036038101906101639190610656565b6103f7565b60405161017591906106f6565b60405180910390f35b610198600480360381019061019391906105cb565b6104f1565b6040516101a59190610751565b60405180910390f35b600081600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001905092915050565b60015481565b60008161024e85336104f1565b101561028f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161028690610711565b60405180910390fd5b81600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461031b91906107d3565b9250508190555081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461037191906107d3565b9250508190555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546103c7919061077d565b92505081905550600190509392505050565b60005481565b60026020528060005260406000206000915090505481565b600080821161043b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043290610731565b60405180910390fd5b81600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461048a91906107d3565b9250508190555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546104e0919061077d565b925050819055506001905092915050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600081359050610587816108d0565b92915050565b60008135905061059c816108e7565b92915050565b6000602082840312156105b457600080fd5b60006105c284828501610578565b91505092915050565b600080604083850312156105de57600080fd5b60006105ec85828601610578565b92505060206105fd85828601610578565b9150509250929050565b60008060006060848603121561061c57600080fd5b600061062a86828701610578565b935050602061063b86828701610578565b925050604061064c8682870161058d565b9150509250925092565b6000806040838503121561066957600080fd5b600061067785828601610578565b92505060206106888582860161058d565b9150509250929050565b61069b81610819565b82525050565b60006106ae60168361076c565b91506106b98261087e565b602082019050919050565b60006106d160198361076c565b91506106dc826108a7565b602082019050919050565b6106f081610845565b82525050565b600060208201905061070b6000830184610692565b92915050565b6000602082019050818103600083015261072a816106a1565b9050919050565b6000602082019050818103600083015261074a816106c4565b9050919050565b600060208201905061076660008301846106e7565b92915050565b600082825260208201905092915050565b600061078882610845565b915061079383610845565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156107c8576107c761084f565b5b828201905092915050565b60006107de82610845565b91506107e983610845565b9250828210156107fc576107fb61084f565b5b828203905092915050565b600061081282610825565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f496e73756666696369656e7420616c6c6f77616e636500000000000000000000600082015250565b7f5472616e736665727265642076616c7565206973207a65726f00000000000000600082015250565b6108d981610807565b81146108e457600080fd5b50565b6108f081610845565b81146108fb57600080fd5b5056fea2646970667358221220a8a6918adf2af132e4e49a96a108a2d9c62cfb74de3e267b6c8af323b87f6ec964736f6c63430008040033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x1 PUSH1 0x0 SSTORE CALLVALUE DUP1 ISZERO PUSH2 0x15 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH4 0x3B9ACA00 PUSH1 0x1 DUP2 SWAP1 SSTORE POP PUSH1 0x1 SLOAD 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 DUP2 SWAP1 SSTORE POP PUSH2 0x934 DUP1 PUSH2 0x76 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x7D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x313CE567 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x100 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x11E JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x14E JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x17E JUMPI PUSH2 0x7D JUMP JUMPDEST DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x82 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0xB2 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0xD0 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9C PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x97 SWAP2 SWAP1 PUSH2 0x656 JUMP JUMPDEST PUSH2 0x1AE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xA9 SWAP2 SWAP1 PUSH2 0x6F6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xBA PUSH2 0x23B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xC7 SWAP2 SWAP1 PUSH2 0x751 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xEA PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xE5 SWAP2 SWAP1 PUSH2 0x607 JUMP JUMPDEST PUSH2 0x241 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xF7 SWAP2 SWAP1 PUSH2 0x6F6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x108 PUSH2 0x3D9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x115 SWAP2 SWAP1 PUSH2 0x751 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x138 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x133 SWAP2 SWAP1 PUSH2 0x5A2 JUMP JUMPDEST PUSH2 0x3DF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x145 SWAP2 SWAP1 PUSH2 0x751 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x168 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x163 SWAP2 SWAP1 PUSH2 0x656 JUMP JUMPDEST PUSH2 0x3F7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x175 SWAP2 SWAP1 PUSH2 0x6F6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x198 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x193 SWAP2 SWAP1 PUSH2 0x5CB JUMP JUMPDEST PUSH2 0x4F1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1A5 SWAP2 SWAP1 PUSH2 0x751 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x3 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 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP PUSH1 0x1 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x24E DUP6 CALLER PUSH2 0x4F1 JUMP JUMPDEST LT ISZERO PUSH2 0x28F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x286 SWAP1 PUSH2 0x711 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 PUSH1 0x3 PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 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 0x31B SWAP2 SWAP1 PUSH2 0x7D3 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x2 PUSH1 0x0 DUP7 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 0x371 SWAP2 SWAP1 PUSH2 0x7D3 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x2 PUSH1 0x0 DUP6 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 0x3C7 SWAP2 SWAP1 PUSH2 0x77D JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH1 0x1 SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD 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 DUP3 GT PUSH2 0x43B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x432 SWAP1 PUSH2 0x731 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 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 0x48A SWAP2 SWAP1 PUSH2 0x7D3 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x2 PUSH1 0x0 DUP6 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 0x4E0 SWAP2 SWAP1 PUSH2 0x77D JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH1 0x1 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x3 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x587 DUP2 PUSH2 0x8D0 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x59C DUP2 PUSH2 0x8E7 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x5B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x5C2 DUP5 DUP3 DUP6 ADD PUSH2 0x578 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x5DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x5EC DUP6 DUP3 DUP7 ADD PUSH2 0x578 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x5FD DUP6 DUP3 DUP7 ADD PUSH2 0x578 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x61C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x62A DUP7 DUP3 DUP8 ADD PUSH2 0x578 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x63B DUP7 DUP3 DUP8 ADD PUSH2 0x578 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x64C DUP7 DUP3 DUP8 ADD PUSH2 0x58D JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x669 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x677 DUP6 DUP3 DUP7 ADD PUSH2 0x578 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x688 DUP6 DUP3 DUP7 ADD PUSH2 0x58D JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH2 0x69B DUP2 PUSH2 0x819 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6AE PUSH1 0x16 DUP4 PUSH2 0x76C JUMP JUMPDEST SWAP2 POP PUSH2 0x6B9 DUP3 PUSH2 0x87E JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6D1 PUSH1 0x19 DUP4 PUSH2 0x76C JUMP JUMPDEST SWAP2 POP PUSH2 0x6DC DUP3 PUSH2 0x8A7 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x6F0 DUP2 PUSH2 0x845 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x70B PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x692 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 0x72A DUP2 PUSH2 0x6A1 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 0x74A DUP2 PUSH2 0x6C4 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x766 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x6E7 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x788 DUP3 PUSH2 0x845 JUMP JUMPDEST SWAP2 POP PUSH2 0x793 DUP4 PUSH2 0x845 JUMP JUMPDEST SWAP3 POP DUP3 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SUB DUP3 GT ISZERO PUSH2 0x7C8 JUMPI PUSH2 0x7C7 PUSH2 0x84F JUMP JUMPDEST JUMPDEST DUP3 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7DE DUP3 PUSH2 0x845 JUMP JUMPDEST SWAP2 POP PUSH2 0x7E9 DUP4 PUSH2 0x845 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 LT ISZERO PUSH2 0x7FC JUMPI PUSH2 0x7FB PUSH2 0x84F JUMP JUMPDEST JUMPDEST DUP3 DUP3 SUB SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x812 DUP3 PUSH2 0x825 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO ISZERO 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 PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x496E73756666696369656E7420616C6C6F77616E636500000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH32 0x5472616E736665727265642076616C7565206973207A65726F00000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH2 0x8D9 DUP2 PUSH2 0x807 JUMP JUMPDEST DUP2 EQ PUSH2 0x8E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x8F0 DUP2 PUSH2 0x845 JUMP JUMPDEST DUP2 EQ PUSH2 0x8FB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xA8 0xA6 SWAP2 DUP11 0xDF 0x2A CALL ORIGIN 0xE4 0xE4 SWAP11 SWAP7 LOG1 ADDMOD LOG2 0xD9 0xC6 0x2C 0xFB PUSH21 0xDE3E267B6C8AF323B87F6EC964736F6C6343000804 STOP CALLER ","sourceMap":"57:1085:3:-:0;;;119:1;96:24;;257:94;;;;;;;;;;292:13;278:11;:27;;;;335:11;;311:9;:21;321:10;311:21;;;;;;;;;;;;;;;:35;;;;57:1085;;;;;;"},"deployedBytecode":{"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:6120:4","statements":[{"body":{"nodeType":"YulBlock","src":"59:87:4","statements":[{"nodeType":"YulAssignment","src":"69:29:4","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"91:6:4"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"78:12:4"},"nodeType":"YulFunctionCall","src":"78:20:4"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"69:5:4"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"134:5:4"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"107:26:4"},"nodeType":"YulFunctionCall","src":"107:33:4"},"nodeType":"YulExpressionStatement","src":"107:33:4"}]},"name":"abi_decode_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"37:6:4","type":""},{"name":"end","nodeType":"YulTypedName","src":"45:3:4","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"53:5:4","type":""}],"src":"7:139:4"},{"body":{"nodeType":"YulBlock","src":"204:87:4","statements":[{"nodeType":"YulAssignment","src":"214:29:4","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"236:6:4"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"223:12:4"},"nodeType":"YulFunctionCall","src":"223:20:4"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"214:5:4"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"279:5:4"}],"functionName":{"name":"validator_revert_t_uint256","nodeType":"YulIdentifier","src":"252:26:4"},"nodeType":"YulFunctionCall","src":"252:33:4"},"nodeType":"YulExpressionStatement","src":"252:33:4"}]},"name":"abi_decode_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"182:6:4","type":""},{"name":"end","nodeType":"YulTypedName","src":"190:3:4","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"198:5:4","type":""}],"src":"152:139:4"},{"body":{"nodeType":"YulBlock","src":"363:196:4","statements":[{"body":{"nodeType":"YulBlock","src":"409:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"418:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"421:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"411:6:4"},"nodeType":"YulFunctionCall","src":"411:12:4"},"nodeType":"YulExpressionStatement","src":"411:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"384:7:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"393:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"380:3:4"},"nodeType":"YulFunctionCall","src":"380:23:4"},{"kind":"number","nodeType":"YulLiteral","src":"405:2:4","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"376:3:4"},"nodeType":"YulFunctionCall","src":"376:32:4"},"nodeType":"YulIf","src":"373:2:4"},{"nodeType":"YulBlock","src":"435:117:4","statements":[{"nodeType":"YulVariableDeclaration","src":"450:15:4","value":{"kind":"number","nodeType":"YulLiteral","src":"464:1:4","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"454:6:4","type":""}]},{"nodeType":"YulAssignment","src":"479:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"514:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"525:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"510:3:4"},"nodeType":"YulFunctionCall","src":"510:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"534:7:4"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"489:20:4"},"nodeType":"YulFunctionCall","src":"489:53:4"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"479:6:4"}]}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"333:9:4","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"344:7:4","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"356:6:4","type":""}],"src":"297:262:4"},{"body":{"nodeType":"YulBlock","src":"648:324:4","statements":[{"body":{"nodeType":"YulBlock","src":"694:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"703:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"706:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"696:6:4"},"nodeType":"YulFunctionCall","src":"696:12:4"},"nodeType":"YulExpressionStatement","src":"696:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"669:7:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"678:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"665:3:4"},"nodeType":"YulFunctionCall","src":"665:23:4"},{"kind":"number","nodeType":"YulLiteral","src":"690:2:4","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"661:3:4"},"nodeType":"YulFunctionCall","src":"661:32:4"},"nodeType":"YulIf","src":"658:2:4"},{"nodeType":"YulBlock","src":"720:117:4","statements":[{"nodeType":"YulVariableDeclaration","src":"735:15:4","value":{"kind":"number","nodeType":"YulLiteral","src":"749:1:4","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"739:6:4","type":""}]},{"nodeType":"YulAssignment","src":"764:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"799:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"810:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"795:3:4"},"nodeType":"YulFunctionCall","src":"795:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"819:7:4"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"774:20:4"},"nodeType":"YulFunctionCall","src":"774:53:4"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"764:6:4"}]}]},{"nodeType":"YulBlock","src":"847:118:4","statements":[{"nodeType":"YulVariableDeclaration","src":"862:16:4","value":{"kind":"number","nodeType":"YulLiteral","src":"876:2:4","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"866:6:4","type":""}]},{"nodeType":"YulAssignment","src":"892:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"927:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"938:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"923:3:4"},"nodeType":"YulFunctionCall","src":"923:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"947:7:4"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"902:20:4"},"nodeType":"YulFunctionCall","src":"902:53:4"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"892:6:4"}]}]}]},"name":"abi_decode_tuple_t_addresst_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"610:9:4","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"621:7:4","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"633:6:4","type":""},{"name":"value1","nodeType":"YulTypedName","src":"641:6:4","type":""}],"src":"565:407:4"},{"body":{"nodeType":"YulBlock","src":"1078:452:4","statements":[{"body":{"nodeType":"YulBlock","src":"1124:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1133:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1136:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1126:6:4"},"nodeType":"YulFunctionCall","src":"1126:12:4"},"nodeType":"YulExpressionStatement","src":"1126:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1099:7:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"1108:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1095:3:4"},"nodeType":"YulFunctionCall","src":"1095:23:4"},{"kind":"number","nodeType":"YulLiteral","src":"1120:2:4","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1091:3:4"},"nodeType":"YulFunctionCall","src":"1091:32:4"},"nodeType":"YulIf","src":"1088:2:4"},{"nodeType":"YulBlock","src":"1150:117:4","statements":[{"nodeType":"YulVariableDeclaration","src":"1165:15:4","value":{"kind":"number","nodeType":"YulLiteral","src":"1179:1:4","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1169:6:4","type":""}]},{"nodeType":"YulAssignment","src":"1194:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1229:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"1240:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1225:3:4"},"nodeType":"YulFunctionCall","src":"1225:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1249:7:4"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"1204:20:4"},"nodeType":"YulFunctionCall","src":"1204:53:4"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1194:6:4"}]}]},{"nodeType":"YulBlock","src":"1277:118:4","statements":[{"nodeType":"YulVariableDeclaration","src":"1292:16:4","value":{"kind":"number","nodeType":"YulLiteral","src":"1306:2:4","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1296:6:4","type":""}]},{"nodeType":"YulAssignment","src":"1322:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1357:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"1368:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1353:3:4"},"nodeType":"YulFunctionCall","src":"1353:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1377:7:4"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"1332:20:4"},"nodeType":"YulFunctionCall","src":"1332:53:4"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1322:6:4"}]}]},{"nodeType":"YulBlock","src":"1405:118:4","statements":[{"nodeType":"YulVariableDeclaration","src":"1420:16:4","value":{"kind":"number","nodeType":"YulLiteral","src":"1434:2:4","type":"","value":"64"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1424:6:4","type":""}]},{"nodeType":"YulAssignment","src":"1450:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1485:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"1496:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1481:3:4"},"nodeType":"YulFunctionCall","src":"1481:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1505:7:4"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"1460:20:4"},"nodeType":"YulFunctionCall","src":"1460:53:4"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"1450:6:4"}]}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1032:9:4","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1043:7:4","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1055:6:4","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1063:6:4","type":""},{"name":"value2","nodeType":"YulTypedName","src":"1071:6:4","type":""}],"src":"978:552:4"},{"body":{"nodeType":"YulBlock","src":"1619:324:4","statements":[{"body":{"nodeType":"YulBlock","src":"1665:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1674:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1677:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1667:6:4"},"nodeType":"YulFunctionCall","src":"1667:12:4"},"nodeType":"YulExpressionStatement","src":"1667:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1640:7:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"1649:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1636:3:4"},"nodeType":"YulFunctionCall","src":"1636:23:4"},{"kind":"number","nodeType":"YulLiteral","src":"1661:2:4","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1632:3:4"},"nodeType":"YulFunctionCall","src":"1632:32:4"},"nodeType":"YulIf","src":"1629:2:4"},{"nodeType":"YulBlock","src":"1691:117:4","statements":[{"nodeType":"YulVariableDeclaration","src":"1706:15:4","value":{"kind":"number","nodeType":"YulLiteral","src":"1720:1:4","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1710:6:4","type":""}]},{"nodeType":"YulAssignment","src":"1735:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1770:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"1781:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1766:3:4"},"nodeType":"YulFunctionCall","src":"1766:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1790:7:4"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"1745:20:4"},"nodeType":"YulFunctionCall","src":"1745:53:4"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1735:6:4"}]}]},{"nodeType":"YulBlock","src":"1818:118:4","statements":[{"nodeType":"YulVariableDeclaration","src":"1833:16:4","value":{"kind":"number","nodeType":"YulLiteral","src":"1847:2:4","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1837:6:4","type":""}]},{"nodeType":"YulAssignment","src":"1863:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1898:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"1909:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1894:3:4"},"nodeType":"YulFunctionCall","src":"1894:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1918:7:4"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"1873:20:4"},"nodeType":"YulFunctionCall","src":"1873:53:4"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1863:6:4"}]}]}]},"name":"abi_decode_tuple_t_addresst_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1581:9:4","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1592:7:4","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1604:6:4","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1612:6:4","type":""}],"src":"1536:407:4"},{"body":{"nodeType":"YulBlock","src":"2008:50:4","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2025:3:4"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2045:5:4"}],"functionName":{"name":"cleanup_t_bool","nodeType":"YulIdentifier","src":"2030:14:4"},"nodeType":"YulFunctionCall","src":"2030:21:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2018:6:4"},"nodeType":"YulFunctionCall","src":"2018:34:4"},"nodeType":"YulExpressionStatement","src":"2018:34:4"}]},"name":"abi_encode_t_bool_to_t_bool_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1996:5:4","type":""},{"name":"pos","nodeType":"YulTypedName","src":"2003:3:4","type":""}],"src":"1949:109:4"},{"body":{"nodeType":"YulBlock","src":"2210:220:4","statements":[{"nodeType":"YulAssignment","src":"2220:74:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2286:3:4"},{"kind":"number","nodeType":"YulLiteral","src":"2291:2:4","type":"","value":"22"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"2227:58:4"},"nodeType":"YulFunctionCall","src":"2227:67:4"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"2220:3:4"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2392:3:4"}],"functionName":{"name":"store_literal_in_memory_45e3d26e36c3151c7f92a1eee9add9658cbb8e14605ee2452ec007389b9744bc","nodeType":"YulIdentifier","src":"2303:88:4"},"nodeType":"YulFunctionCall","src":"2303:93:4"},"nodeType":"YulExpressionStatement","src":"2303:93:4"},{"nodeType":"YulAssignment","src":"2405:19:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2416:3:4"},{"kind":"number","nodeType":"YulLiteral","src":"2421:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2412:3:4"},"nodeType":"YulFunctionCall","src":"2412:12:4"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"2405:3:4"}]}]},"name":"abi_encode_t_stringliteral_45e3d26e36c3151c7f92a1eee9add9658cbb8e14605ee2452ec007389b9744bc_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"2198:3:4","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"2206:3:4","type":""}],"src":"2064:366:4"},{"body":{"nodeType":"YulBlock","src":"2582:220:4","statements":[{"nodeType":"YulAssignment","src":"2592:74:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2658:3:4"},{"kind":"number","nodeType":"YulLiteral","src":"2663:2:4","type":"","value":"25"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"2599:58:4"},"nodeType":"YulFunctionCall","src":"2599:67:4"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"2592:3:4"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2764:3:4"}],"functionName":{"name":"store_literal_in_memory_4ca3cd75a1831a94a24913bfd2c9b9d35acbb11ac3447f65bb0682cf14f63f5c","nodeType":"YulIdentifier","src":"2675:88:4"},"nodeType":"YulFunctionCall","src":"2675:93:4"},"nodeType":"YulExpressionStatement","src":"2675:93:4"},{"nodeType":"YulAssignment","src":"2777:19:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2788:3:4"},{"kind":"number","nodeType":"YulLiteral","src":"2793:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2784:3:4"},"nodeType":"YulFunctionCall","src":"2784:12:4"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"2777:3:4"}]}]},"name":"abi_encode_t_stringliteral_4ca3cd75a1831a94a24913bfd2c9b9d35acbb11ac3447f65bb0682cf14f63f5c_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"2570:3:4","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"2578:3:4","type":""}],"src":"2436:366:4"},{"body":{"nodeType":"YulBlock","src":"2873:53:4","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2890:3:4"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2913:5:4"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"2895:17:4"},"nodeType":"YulFunctionCall","src":"2895:24:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2883:6:4"},"nodeType":"YulFunctionCall","src":"2883:37:4"},"nodeType":"YulExpressionStatement","src":"2883:37:4"}]},"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"2861:5:4","type":""},{"name":"pos","nodeType":"YulTypedName","src":"2868:3:4","type":""}],"src":"2808:118:4"},{"body":{"nodeType":"YulBlock","src":"3024:118:4","statements":[{"nodeType":"YulAssignment","src":"3034:26:4","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3046:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"3057:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3042:3:4"},"nodeType":"YulFunctionCall","src":"3042:18:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3034:4:4"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3108:6:4"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3121:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"3132:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3117:3:4"},"nodeType":"YulFunctionCall","src":"3117:17:4"}],"functionName":{"name":"abi_encode_t_bool_to_t_bool_fromStack","nodeType":"YulIdentifier","src":"3070:37:4"},"nodeType":"YulFunctionCall","src":"3070:65:4"},"nodeType":"YulExpressionStatement","src":"3070:65:4"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2996:9:4","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3008:6:4","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3019:4:4","type":""}],"src":"2932:210:4"},{"body":{"nodeType":"YulBlock","src":"3319:248:4","statements":[{"nodeType":"YulAssignment","src":"3329:26:4","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3341:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"3352:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3337:3:4"},"nodeType":"YulFunctionCall","src":"3337:18:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3329:4:4"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3376:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"3387:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3372:3:4"},"nodeType":"YulFunctionCall","src":"3372:17:4"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"3395:4:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"3401:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3391:3:4"},"nodeType":"YulFunctionCall","src":"3391:20:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3365:6:4"},"nodeType":"YulFunctionCall","src":"3365:47:4"},"nodeType":"YulExpressionStatement","src":"3365:47:4"},{"nodeType":"YulAssignment","src":"3421:139:4","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"3555:4:4"}],"functionName":{"name":"abi_encode_t_stringliteral_45e3d26e36c3151c7f92a1eee9add9658cbb8e14605ee2452ec007389b9744bc_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"3429:124:4"},"nodeType":"YulFunctionCall","src":"3429:131:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3421:4:4"}]}]},"name":"abi_encode_tuple_t_stringliteral_45e3d26e36c3151c7f92a1eee9add9658cbb8e14605ee2452ec007389b9744bc__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3299:9:4","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3314:4:4","type":""}],"src":"3148:419:4"},{"body":{"nodeType":"YulBlock","src":"3744:248:4","statements":[{"nodeType":"YulAssignment","src":"3754:26:4","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3766:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"3777:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3762:3:4"},"nodeType":"YulFunctionCall","src":"3762:18:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3754:4:4"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3801:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"3812:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3797:3:4"},"nodeType":"YulFunctionCall","src":"3797:17:4"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"3820:4:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"3826:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3816:3:4"},"nodeType":"YulFunctionCall","src":"3816:20:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3790:6:4"},"nodeType":"YulFunctionCall","src":"3790:47:4"},"nodeType":"YulExpressionStatement","src":"3790:47:4"},{"nodeType":"YulAssignment","src":"3846:139:4","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"3980:4:4"}],"functionName":{"name":"abi_encode_t_stringliteral_4ca3cd75a1831a94a24913bfd2c9b9d35acbb11ac3447f65bb0682cf14f63f5c_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"3854:124:4"},"nodeType":"YulFunctionCall","src":"3854:131:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3846:4:4"}]}]},"name":"abi_encode_tuple_t_stringliteral_4ca3cd75a1831a94a24913bfd2c9b9d35acbb11ac3447f65bb0682cf14f63f5c__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3724:9:4","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3739:4:4","type":""}],"src":"3573:419:4"},{"body":{"nodeType":"YulBlock","src":"4096:124:4","statements":[{"nodeType":"YulAssignment","src":"4106:26:4","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4118:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"4129:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4114:3:4"},"nodeType":"YulFunctionCall","src":"4114:18:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4106:4:4"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4186:6:4"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4199:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"4210:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4195:3:4"},"nodeType":"YulFunctionCall","src":"4195:17:4"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"4142:43:4"},"nodeType":"YulFunctionCall","src":"4142:71:4"},"nodeType":"YulExpressionStatement","src":"4142:71:4"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4068:9:4","type":""},{"name":"value0","nodeType":"YulTypedName","src":"4080:6:4","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4091:4:4","type":""}],"src":"3998:222:4"},{"body":{"nodeType":"YulBlock","src":"4322:73:4","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4339:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"4344:6:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4332:6:4"},"nodeType":"YulFunctionCall","src":"4332:19:4"},"nodeType":"YulExpressionStatement","src":"4332:19:4"},{"nodeType":"YulAssignment","src":"4360:29:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4379:3:4"},{"kind":"number","nodeType":"YulLiteral","src":"4384:4:4","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4375:3:4"},"nodeType":"YulFunctionCall","src":"4375:14:4"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"4360:11:4"}]}]},"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"4294:3:4","type":""},{"name":"length","nodeType":"YulTypedName","src":"4299:6:4","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"4310:11:4","type":""}],"src":"4226:169:4"},{"body":{"nodeType":"YulBlock","src":"4445:261:4","statements":[{"nodeType":"YulAssignment","src":"4455:25:4","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"4478:1:4"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"4460:17:4"},"nodeType":"YulFunctionCall","src":"4460:20:4"},"variableNames":[{"name":"x","nodeType":"YulIdentifier","src":"4455:1:4"}]},{"nodeType":"YulAssignment","src":"4489:25:4","value":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"4512:1:4"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"4494:17:4"},"nodeType":"YulFunctionCall","src":"4494:20:4"},"variableNames":[{"name":"y","nodeType":"YulIdentifier","src":"4489:1:4"}]},{"body":{"nodeType":"YulBlock","src":"4652:22:4","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"4654:16:4"},"nodeType":"YulFunctionCall","src":"4654:18:4"},"nodeType":"YulExpressionStatement","src":"4654:18:4"}]},"condition":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"4573:1:4"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4580:66:4","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"},{"name":"y","nodeType":"YulIdentifier","src":"4648:1:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4576:3:4"},"nodeType":"YulFunctionCall","src":"4576:74:4"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4570:2:4"},"nodeType":"YulFunctionCall","src":"4570:81:4"},"nodeType":"YulIf","src":"4567:2:4"},{"nodeType":"YulAssignment","src":"4684:16:4","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"4695:1:4"},{"name":"y","nodeType":"YulIdentifier","src":"4698:1:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4691:3:4"},"nodeType":"YulFunctionCall","src":"4691:9:4"},"variableNames":[{"name":"sum","nodeType":"YulIdentifier","src":"4684:3:4"}]}]},"name":"checked_add_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"4432:1:4","type":""},{"name":"y","nodeType":"YulTypedName","src":"4435:1:4","type":""}],"returnVariables":[{"name":"sum","nodeType":"YulTypedName","src":"4441:3:4","type":""}],"src":"4401:305:4"},{"body":{"nodeType":"YulBlock","src":"4757:146:4","statements":[{"nodeType":"YulAssignment","src":"4767:25:4","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"4790:1:4"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"4772:17:4"},"nodeType":"YulFunctionCall","src":"4772:20:4"},"variableNames":[{"name":"x","nodeType":"YulIdentifier","src":"4767:1:4"}]},{"nodeType":"YulAssignment","src":"4801:25:4","value":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"4824:1:4"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"4806:17:4"},"nodeType":"YulFunctionCall","src":"4806:20:4"},"variableNames":[{"name":"y","nodeType":"YulIdentifier","src":"4801:1:4"}]},{"body":{"nodeType":"YulBlock","src":"4848:22:4","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"4850:16:4"},"nodeType":"YulFunctionCall","src":"4850:18:4"},"nodeType":"YulExpressionStatement","src":"4850:18:4"}]},"condition":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"4842:1:4"},{"name":"y","nodeType":"YulIdentifier","src":"4845:1:4"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"4839:2:4"},"nodeType":"YulFunctionCall","src":"4839:8:4"},"nodeType":"YulIf","src":"4836:2:4"},{"nodeType":"YulAssignment","src":"4880:17:4","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"4892:1:4"},{"name":"y","nodeType":"YulIdentifier","src":"4895:1:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4888:3:4"},"nodeType":"YulFunctionCall","src":"4888:9:4"},"variableNames":[{"name":"diff","nodeType":"YulIdentifier","src":"4880:4:4"}]}]},"name":"checked_sub_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"4743:1:4","type":""},{"name":"y","nodeType":"YulTypedName","src":"4746:1:4","type":""}],"returnVariables":[{"name":"diff","nodeType":"YulTypedName","src":"4752:4:4","type":""}],"src":"4712:191:4"},{"body":{"nodeType":"YulBlock","src":"4954:51:4","statements":[{"nodeType":"YulAssignment","src":"4964:35:4","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4993:5:4"}],"functionName":{"name":"cleanup_t_uint160","nodeType":"YulIdentifier","src":"4975:17:4"},"nodeType":"YulFunctionCall","src":"4975:24:4"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"4964:7:4"}]}]},"name":"cleanup_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"4936:5:4","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"4946:7:4","type":""}],"src":"4909:96:4"},{"body":{"nodeType":"YulBlock","src":"5053:48:4","statements":[{"nodeType":"YulAssignment","src":"5063:32:4","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5088:5:4"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"5081:6:4"},"nodeType":"YulFunctionCall","src":"5081:13:4"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"5074:6:4"},"nodeType":"YulFunctionCall","src":"5074:21:4"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"5063:7:4"}]}]},"name":"cleanup_t_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"5035:5:4","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"5045:7:4","type":""}],"src":"5011:90:4"},{"body":{"nodeType":"YulBlock","src":"5152:81:4","statements":[{"nodeType":"YulAssignment","src":"5162:65:4","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5177:5:4"},{"kind":"number","nodeType":"YulLiteral","src":"5184:42:4","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5173:3:4"},"nodeType":"YulFunctionCall","src":"5173:54:4"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"5162:7:4"}]}]},"name":"cleanup_t_uint160","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"5134:5:4","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"5144:7:4","type":""}],"src":"5107:126:4"},{"body":{"nodeType":"YulBlock","src":"5284:32:4","statements":[{"nodeType":"YulAssignment","src":"5294:16:4","value":{"name":"value","nodeType":"YulIdentifier","src":"5305:5:4"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"5294:7:4"}]}]},"name":"cleanup_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"5266:5:4","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"5276:7:4","type":""}],"src":"5239:77:4"},{"body":{"nodeType":"YulBlock","src":"5350:152:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5367:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5370:77:4","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5360:6:4"},"nodeType":"YulFunctionCall","src":"5360:88:4"},"nodeType":"YulExpressionStatement","src":"5360:88:4"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5464:1:4","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"5467:4:4","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5457:6:4"},"nodeType":"YulFunctionCall","src":"5457:15:4"},"nodeType":"YulExpressionStatement","src":"5457:15:4"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5488:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5491:4:4","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5481:6:4"},"nodeType":"YulFunctionCall","src":"5481:15:4"},"nodeType":"YulExpressionStatement","src":"5481:15:4"}]},"name":"panic_error_0x11","nodeType":"YulFunctionDefinition","src":"5322:180:4"},{"body":{"nodeType":"YulBlock","src":"5614:66:4","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"5636:6:4"},{"kind":"number","nodeType":"YulLiteral","src":"5644:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5632:3:4"},"nodeType":"YulFunctionCall","src":"5632:14:4"},{"kind":"string","nodeType":"YulLiteral","src":"5648:24:4","type":"","value":"Insufficient allowance"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5625:6:4"},"nodeType":"YulFunctionCall","src":"5625:48:4"},"nodeType":"YulExpressionStatement","src":"5625:48:4"}]},"name":"store_literal_in_memory_45e3d26e36c3151c7f92a1eee9add9658cbb8e14605ee2452ec007389b9744bc","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"5606:6:4","type":""}],"src":"5508:172:4"},{"body":{"nodeType":"YulBlock","src":"5792:69:4","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"5814:6:4"},{"kind":"number","nodeType":"YulLiteral","src":"5822:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5810:3:4"},"nodeType":"YulFunctionCall","src":"5810:14:4"},{"kind":"string","nodeType":"YulLiteral","src":"5826:27:4","type":"","value":"Transferred value is zero"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5803:6:4"},"nodeType":"YulFunctionCall","src":"5803:51:4"},"nodeType":"YulExpressionStatement","src":"5803:51:4"}]},"name":"store_literal_in_memory_4ca3cd75a1831a94a24913bfd2c9b9d35acbb11ac3447f65bb0682cf14f63f5c","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"5784:6:4","type":""}],"src":"5686:175:4"},{"body":{"nodeType":"YulBlock","src":"5910:79:4","statements":[{"body":{"nodeType":"YulBlock","src":"5967:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5976:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5979:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5969:6:4"},"nodeType":"YulFunctionCall","src":"5969:12:4"},"nodeType":"YulExpressionStatement","src":"5969:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5933:5:4"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5958:5:4"}],"functionName":{"name":"cleanup_t_address","nodeType":"YulIdentifier","src":"5940:17:4"},"nodeType":"YulFunctionCall","src":"5940:24:4"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"5930:2:4"},"nodeType":"YulFunctionCall","src":"5930:35:4"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"5923:6:4"},"nodeType":"YulFunctionCall","src":"5923:43:4"},"nodeType":"YulIf","src":"5920:2:4"}]},"name":"validator_revert_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"5903:5:4","type":""}],"src":"5867:122:4"},{"body":{"nodeType":"YulBlock","src":"6038:79:4","statements":[{"body":{"nodeType":"YulBlock","src":"6095:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6104:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6107:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6097:6:4"},"nodeType":"YulFunctionCall","src":"6097:12:4"},"nodeType":"YulExpressionStatement","src":"6097:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6061:5:4"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6086:5:4"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"6068:17:4"},"nodeType":"YulFunctionCall","src":"6068:24:4"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"6058:2:4"},"nodeType":"YulFunctionCall","src":"6058:35:4"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"6051:6:4"},"nodeType":"YulFunctionCall","src":"6051:43:4"},"nodeType":"YulIf","src":"6048:2:4"}]},"name":"validator_revert_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"6031:5:4","type":""}],"src":"5995:122:4"}]},"contents":"{\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_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_addresst_address(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(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2 {\n if slt(sub(dataEnd, headStart), 96) { 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 let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_addresst_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(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_encode_t_bool_to_t_bool_fromStack(value, pos) {\n mstore(pos, cleanup_t_bool(value))\n }\n\n function abi_encode_t_stringliteral_45e3d26e36c3151c7f92a1eee9add9658cbb8e14605ee2452ec007389b9744bc_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 22)\n store_literal_in_memory_45e3d26e36c3151c7f92a1eee9add9658cbb8e14605ee2452ec007389b9744bc(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_t_stringliteral_4ca3cd75a1831a94a24913bfd2c9b9d35acbb11ac3447f65bb0682cf14f63f5c_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 25)\n store_literal_in_memory_4ca3cd75a1831a94a24913bfd2c9b9d35acbb11ac3447f65bb0682cf14f63f5c(pos)\n end := add(pos, 32)\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_bool__to_t_bool__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_bool_to_t_bool_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_encode_tuple_t_stringliteral_45e3d26e36c3151c7f92a1eee9add9658cbb8e14605ee2452ec007389b9744bc__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_45e3d26e36c3151c7f92a1eee9add9658cbb8e14605ee2452ec007389b9744bc_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function abi_encode_tuple_t_stringliteral_4ca3cd75a1831a94a24913bfd2c9b9d35acbb11ac3447f65bb0682cf14f63f5c__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_4ca3cd75a1831a94a24913bfd2c9b9d35acbb11ac3447f65bb0682cf14f63f5c_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 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_bool(value) -> cleaned {\n cleaned := iszero(iszero(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 panic_error_0x11() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n\n function store_literal_in_memory_45e3d26e36c3151c7f92a1eee9add9658cbb8e14605ee2452ec007389b9744bc(memPtr) {\n\n mstore(add(memPtr, 0), \"Insufficient allowance\")\n\n }\n\n function store_literal_in_memory_4ca3cd75a1831a94a24913bfd2c9b9d35acbb11ac3447f65bb0682cf14f63f5c(memPtr) {\n\n mstore(add(memPtr, 0), \"Transferred value is zero\")\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_uint256(value) {\n if iszero(eq(value, cleanup_t_uint256(value))) { revert(0, 0) }\n }\n\n}\n","id":4,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b506004361061007d5760003560e01c8063313ce5671161005b578063313ce5671461010057806370a082311461011e578063a9059cbb1461014e578063dd62ed3e1461017e5761007d565b8063095ea7b31461008257806318160ddd146100b257806323b872dd146100d0575b600080fd5b61009c60048036038101906100979190610656565b6101ae565b6040516100a991906106f6565b60405180910390f35b6100ba61023b565b6040516100c79190610751565b60405180910390f35b6100ea60048036038101906100e59190610607565b610241565b6040516100f791906106f6565b60405180910390f35b6101086103d9565b6040516101159190610751565b60405180910390f35b610138600480360381019061013391906105a2565b6103df565b6040516101459190610751565b60405180910390f35b61016860048036038101906101639190610656565b6103f7565b60405161017591906106f6565b60405180910390f35b610198600480360381019061019391906105cb565b6104f1565b6040516101a59190610751565b60405180910390f35b600081600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001905092915050565b60015481565b60008161024e85336104f1565b101561028f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161028690610711565b60405180910390fd5b81600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461031b91906107d3565b9250508190555081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461037191906107d3565b9250508190555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546103c7919061077d565b92505081905550600190509392505050565b60005481565b60026020528060005260406000206000915090505481565b600080821161043b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043290610731565b60405180910390fd5b81600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461048a91906107d3565b9250508190555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546104e0919061077d565b925050819055506001905092915050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600081359050610587816108d0565b92915050565b60008135905061059c816108e7565b92915050565b6000602082840312156105b457600080fd5b60006105c284828501610578565b91505092915050565b600080604083850312156105de57600080fd5b60006105ec85828601610578565b92505060206105fd85828601610578565b9150509250929050565b60008060006060848603121561061c57600080fd5b600061062a86828701610578565b935050602061063b86828701610578565b925050604061064c8682870161058d565b9150509250925092565b6000806040838503121561066957600080fd5b600061067785828601610578565b92505060206106888582860161058d565b9150509250929050565b61069b81610819565b82525050565b60006106ae60168361076c565b91506106b98261087e565b602082019050919050565b60006106d160198361076c565b91506106dc826108a7565b602082019050919050565b6106f081610845565b82525050565b600060208201905061070b6000830184610692565b92915050565b6000602082019050818103600083015261072a816106a1565b9050919050565b6000602082019050818103600083015261074a816106c4565b9050919050565b600060208201905061076660008301846106e7565b92915050565b600082825260208201905092915050565b600061078882610845565b915061079383610845565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156107c8576107c761084f565b5b828201905092915050565b60006107de82610845565b91506107e983610845565b9250828210156107fc576107fb61084f565b5b828203905092915050565b600061081282610825565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f496e73756666696369656e7420616c6c6f77616e636500000000000000000000600082015250565b7f5472616e736665727265642076616c7565206973207a65726f00000000000000600082015250565b6108d981610807565b81146108e457600080fd5b50565b6108f081610845565b81146108fb57600080fd5b5056fea2646970667358221220a8a6918adf2af132e4e49a96a108a2d9c62cfb74de3e267b6c8af323b87f6ec964736f6c63430008040033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x7D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x313CE567 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x100 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x11E JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x14E JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x17E JUMPI PUSH2 0x7D JUMP JUMPDEST DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x82 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0xB2 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0xD0 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9C PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x97 SWAP2 SWAP1 PUSH2 0x656 JUMP JUMPDEST PUSH2 0x1AE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xA9 SWAP2 SWAP1 PUSH2 0x6F6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xBA PUSH2 0x23B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xC7 SWAP2 SWAP1 PUSH2 0x751 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xEA PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xE5 SWAP2 SWAP1 PUSH2 0x607 JUMP JUMPDEST PUSH2 0x241 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xF7 SWAP2 SWAP1 PUSH2 0x6F6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x108 PUSH2 0x3D9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x115 SWAP2 SWAP1 PUSH2 0x751 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x138 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x133 SWAP2 SWAP1 PUSH2 0x5A2 JUMP JUMPDEST PUSH2 0x3DF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x145 SWAP2 SWAP1 PUSH2 0x751 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x168 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x163 SWAP2 SWAP1 PUSH2 0x656 JUMP JUMPDEST PUSH2 0x3F7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x175 SWAP2 SWAP1 PUSH2 0x6F6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x198 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x193 SWAP2 SWAP1 PUSH2 0x5CB JUMP JUMPDEST PUSH2 0x4F1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1A5 SWAP2 SWAP1 PUSH2 0x751 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x3 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 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP PUSH1 0x1 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x24E DUP6 CALLER PUSH2 0x4F1 JUMP JUMPDEST LT ISZERO PUSH2 0x28F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x286 SWAP1 PUSH2 0x711 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 PUSH1 0x3 PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 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 0x31B SWAP2 SWAP1 PUSH2 0x7D3 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x2 PUSH1 0x0 DUP7 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 0x371 SWAP2 SWAP1 PUSH2 0x7D3 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x2 PUSH1 0x0 DUP6 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 0x3C7 SWAP2 SWAP1 PUSH2 0x77D JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH1 0x1 SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD 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 DUP3 GT PUSH2 0x43B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x432 SWAP1 PUSH2 0x731 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 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 0x48A SWAP2 SWAP1 PUSH2 0x7D3 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x2 PUSH1 0x0 DUP6 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 0x4E0 SWAP2 SWAP1 PUSH2 0x77D JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH1 0x1 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x3 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x587 DUP2 PUSH2 0x8D0 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x59C DUP2 PUSH2 0x8E7 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x5B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x5C2 DUP5 DUP3 DUP6 ADD PUSH2 0x578 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x5DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x5EC DUP6 DUP3 DUP7 ADD PUSH2 0x578 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x5FD DUP6 DUP3 DUP7 ADD PUSH2 0x578 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x61C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x62A DUP7 DUP3 DUP8 ADD PUSH2 0x578 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x63B DUP7 DUP3 DUP8 ADD PUSH2 0x578 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x64C DUP7 DUP3 DUP8 ADD PUSH2 0x58D JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x669 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x677 DUP6 DUP3 DUP7 ADD PUSH2 0x578 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x688 DUP6 DUP3 DUP7 ADD PUSH2 0x58D JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH2 0x69B DUP2 PUSH2 0x819 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6AE PUSH1 0x16 DUP4 PUSH2 0x76C JUMP JUMPDEST SWAP2 POP PUSH2 0x6B9 DUP3 PUSH2 0x87E JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6D1 PUSH1 0x19 DUP4 PUSH2 0x76C JUMP JUMPDEST SWAP2 POP PUSH2 0x6DC DUP3 PUSH2 0x8A7 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x6F0 DUP2 PUSH2 0x845 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x70B PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x692 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 0x72A DUP2 PUSH2 0x6A1 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 0x74A DUP2 PUSH2 0x6C4 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x766 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x6E7 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x788 DUP3 PUSH2 0x845 JUMP JUMPDEST SWAP2 POP PUSH2 0x793 DUP4 PUSH2 0x845 JUMP JUMPDEST SWAP3 POP DUP3 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SUB DUP3 GT ISZERO PUSH2 0x7C8 JUMPI PUSH2 0x7C7 PUSH2 0x84F JUMP JUMPDEST JUMPDEST DUP3 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7DE DUP3 PUSH2 0x845 JUMP JUMPDEST SWAP2 POP PUSH2 0x7E9 DUP4 PUSH2 0x845 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 LT ISZERO PUSH2 0x7FC JUMPI PUSH2 0x7FB PUSH2 0x84F JUMP JUMPDEST JUMPDEST DUP3 DUP3 SUB SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x812 DUP3 PUSH2 0x825 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO ISZERO 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 PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x496E73756666696369656E7420616C6C6F77616E636500000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH32 0x5472616E736665727265642076616C7565206973207A65726F00000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH2 0x8D9 DUP2 PUSH2 0x807 JUMP JUMPDEST DUP2 EQ PUSH2 0x8E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x8F0 DUP2 PUSH2 0x845 JUMP JUMPDEST DUP2 EQ PUSH2 0x8FB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xA8 0xA6 SWAP2 DUP11 0xDF 0x2A CALL ORIGIN 0xE4 0xE4 SWAP11 SWAP7 LOG1 ADDMOD LOG2 0xD9 0xC6 0x2C 0xFB PUSH21 0xDE3E267B6C8AF323B87F6EC964736F6C6343000804 STOP CALLER ","sourceMap":"57:1085:3:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;703:146;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;125:23;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;853:287;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;96:24;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;152:41;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;355:205;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;564:135;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;703:146;768:12;822:5;788:10;:22;799:10;788:22;;;;;;;;;;;;;;;:31;811:7;788:31;;;;;;;;;;;;;;;:39;;;;840:4;833:11;;703:146;;;;:::o;125:23::-;;;;:::o;853:287::-;932:4;983:5;952:27;962:4;968:10;952:9;:27::i;:::-;:36;;944:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;1054:5;1022:10;:16;1033:4;1022:16;;;;;;;;;;;;;;;:28;1039:10;1022:28;;;;;;;;;;;;;;;;:37;;;;;;;:::i;:::-;;;;;;;;1084:5;1065:9;:15;1075:4;1065:15;;;;;;;;;;;;;;;;:24;;;;;;;:::i;:::-;;;;;;;;1112:5;1095:9;:13;1105:2;1095:13;;;;;;;;;;;;;;;;:22;;;;;;;:::i;:::-;;;;;;;;1131:4;1124:11;;853:287;;;;;:::o;96:24::-;;;;:::o;152:41::-;;;;;;;;;;;;;;;;;:::o;355:205::-;413:4;441:1;433:5;:9;425:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;504:5;479:9;:21;489:10;479:21;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;532:5;515:9;:13;525:2;515:13;;;;;;;;;;;;;;;;:22;;;;;;;:::i;:::-;;;;;;;;551:4;544:11;;355:205;;;;:::o;564:135::-;636:17;668:10;:17;679:5;668:17;;;;;;;;;;;;;;;:26;686:7;668:26;;;;;;;;;;;;;;;;661:33;;564:135;;;;:::o;7:139:4:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:139::-;198:5;236:6;223:20;214:29;;252:33;279:5;252:33;:::i;:::-;204:87;;;;:::o;297:262::-;356:6;405:2;393:9;384:7;380:23;376:32;373:2;;;421:1;418;411:12;373:2;464:1;489:53;534:7;525:6;514:9;510:22;489:53;:::i;:::-;479:63;;435:117;363:196;;;;:::o;565:407::-;633:6;641;690:2;678:9;669:7;665:23;661:32;658:2;;;706:1;703;696:12;658:2;749:1;774:53;819:7;810:6;799:9;795:22;774:53;:::i;:::-;764:63;;720:117;876:2;902:53;947:7;938:6;927:9;923:22;902:53;:::i;:::-;892:63;;847:118;648:324;;;;;:::o;978:552::-;1055:6;1063;1071;1120:2;1108:9;1099:7;1095:23;1091:32;1088:2;;;1136:1;1133;1126:12;1088:2;1179:1;1204:53;1249:7;1240:6;1229:9;1225:22;1204:53;:::i;:::-;1194:63;;1150:117;1306:2;1332:53;1377:7;1368:6;1357:9;1353:22;1332:53;:::i;:::-;1322:63;;1277:118;1434:2;1460:53;1505:7;1496:6;1485:9;1481:22;1460:53;:::i;:::-;1450:63;;1405:118;1078:452;;;;;:::o;1536:407::-;1604:6;1612;1661:2;1649:9;1640:7;1636:23;1632:32;1629:2;;;1677:1;1674;1667:12;1629:2;1720:1;1745:53;1790:7;1781:6;1770:9;1766:22;1745:53;:::i;:::-;1735:63;;1691:117;1847:2;1873:53;1918:7;1909:6;1898:9;1894:22;1873:53;:::i;:::-;1863:63;;1818:118;1619:324;;;;;:::o;1949:109::-;2030:21;2045:5;2030:21;:::i;:::-;2025:3;2018:34;2008:50;;:::o;2064:366::-;2206:3;2227:67;2291:2;2286:3;2227:67;:::i;:::-;2220:74;;2303:93;2392:3;2303:93;:::i;:::-;2421:2;2416:3;2412:12;2405:19;;2210:220;;;:::o;2436:366::-;2578:3;2599:67;2663:2;2658:3;2599:67;:::i;:::-;2592:74;;2675:93;2764:3;2675:93;:::i;:::-;2793:2;2788:3;2784:12;2777:19;;2582:220;;;:::o;2808:118::-;2895:24;2913:5;2895:24;:::i;:::-;2890:3;2883:37;2873:53;;:::o;2932:210::-;3019:4;3057:2;3046:9;3042:18;3034:26;;3070:65;3132:1;3121:9;3117:17;3108:6;3070:65;:::i;:::-;3024:118;;;;:::o;3148:419::-;3314:4;3352:2;3341:9;3337:18;3329:26;;3401:9;3395:4;3391:20;3387:1;3376:9;3372:17;3365:47;3429:131;3555:4;3429:131;:::i;:::-;3421:139;;3319:248;;;:::o;3573:419::-;3739:4;3777:2;3766:9;3762:18;3754:26;;3826:9;3820:4;3816:20;3812:1;3801:9;3797:17;3790:47;3854:131;3980:4;3854:131;:::i;:::-;3846:139;;3744:248;;;:::o;3998:222::-;4091:4;4129:2;4118:9;4114:18;4106:26;;4142:71;4210:1;4199:9;4195:17;4186:6;4142:71;:::i;:::-;4096:124;;;;:::o;4226:169::-;4310:11;4344:6;4339:3;4332:19;4384:4;4379:3;4375:14;4360:29;;4322:73;;;;:::o;4401:305::-;4441:3;4460:20;4478:1;4460:20;:::i;:::-;4455:25;;4494:20;4512:1;4494:20;:::i;:::-;4489:25;;4648:1;4580:66;4576:74;4573:1;4570:81;4567:2;;;4654:18;;:::i;:::-;4567:2;4698:1;4695;4691:9;4684:16;;4445:261;;;;:::o;4712:191::-;4752:4;4772:20;4790:1;4772:20;:::i;:::-;4767:25;;4806:20;4824:1;4806:20;:::i;:::-;4801:25;;4845:1;4842;4839:8;4836:2;;;4850:18;;:::i;:::-;4836:2;4895:1;4892;4888:9;4880:17;;4757:146;;;;:::o;4909:96::-;4946:7;4975:24;4993:5;4975:24;:::i;:::-;4964:35;;4954:51;;;:::o;5011:90::-;5045:7;5088:5;5081:13;5074:21;5063:32;;5053:48;;;:::o;5107:126::-;5144:7;5184:42;5177:5;5173:54;5162:65;;5152:81;;;:::o;5239:77::-;5276:7;5305:5;5294:16;;5284:32;;;:::o;5322:180::-;5370:77;5367:1;5360:88;5467:4;5464:1;5457:15;5491:4;5488:1;5481:15;5508:172;5648:24;5644:1;5636:6;5632:14;5625:48;5614:66;:::o;5686:175::-;5826:27;5822:1;5814:6;5810:14;5803:51;5792:69;:::o;5867:122::-;5940:24;5958:5;5940:24;:::i;:::-;5933:5;5930:35;5920:2;;5979:1;5976;5969:12;5920:2;5910:79;:::o;5995:122::-;6068:24;6086:5;6068:24;:::i;:::-;6061:5;6058:35;6048:2;;6107:1;6104;6097:12;6048:2;6038:79;:::o"},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.4+commit.c7e474f2\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"remaining\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/Token.sol\":\"TokenWithoutNameNorSymbol\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/Token.sol\":{\"keccak256\":\"0x3c98df2a7295115a107e950c40733f37ce5384cf18a0b5efb948ccf6d1acaa59\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://21c0d9ad7fee4c50e057a477ec0c151985566e51e1df46d3dc42f4320eceeccf\",\"dweb:/ipfs/QmSVvnCWd9MH3F93atgJGuwbHMJpifnoMLSosQsZUKUrZ8\"]}},\"version\":1}"}}}}} \ No newline at end of file diff --git a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/ChangeEtherBalance.sol/ChangeEtherBalance.dbg.json b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/ChangeEtherBalance.sol/ChangeEtherBalance.dbg.json new file mode 100644 index 0000000000..224dfafc9c --- /dev/null +++ b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/ChangeEtherBalance.sol/ChangeEtherBalance.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../build-info/16efa488de3a0283218beddfadbd1423.json" +} diff --git a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/ChangeEtherBalance.sol/ChangeEtherBalance.json b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/ChangeEtherBalance.sol/ChangeEtherBalance.json new file mode 100644 index 0000000000..b533ba35a4 --- /dev/null +++ b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/ChangeEtherBalance.sol/ChangeEtherBalance.json @@ -0,0 +1,35 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "ChangeEtherBalance", + "sourceName": "contracts/ChangeEtherBalance.sol", + "abi": [ + { + "inputs": [], + "name": "returnHalf", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "addr", + "type": "address" + } + ], + "name": "transferTo", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "stateMutability": "payable", + "type": "receive" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b50610225806100206000396000f3fe60806040526004361061002d5760003560e01c8063a03fa7e314610039578063b019946e1461005557610034565b3661003457005b600080fd5b610053600480360381019061004e9190610113565b61005f565b005b61005d6100a9565b005b8073ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f193505050501580156100a5573d6000803e3d6000fd5b5050565b3373ffffffffffffffffffffffffffffffffffffffff166108fc6002346100d0919061013c565b9081150290604051600060405180830381858888f193505050501580156100fb573d6000803e3d6000fd5b50565b60008135905061010d816101d8565b92915050565b60006020828403121561012557600080fd5b6000610133848285016100fe565b91505092915050565b60006101478261019f565b91506101528361019f565b925082610162576101616101a9565b5b828204905092915050565b60006101788261017f565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6101e18161016d565b81146101ec57600080fd5b5056fea26469706673582212208e553461507bae731d37afa0d5a2a7dae74de7a6eab682733425a78884ed60b364736f6c63430008040033", + "deployedBytecode": "0x60806040526004361061002d5760003560e01c8063a03fa7e314610039578063b019946e1461005557610034565b3661003457005b600080fd5b610053600480360381019061004e9190610113565b61005f565b005b61005d6100a9565b005b8073ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f193505050501580156100a5573d6000803e3d6000fd5b5050565b3373ffffffffffffffffffffffffffffffffffffffff166108fc6002346100d0919061013c565b9081150290604051600060405180830381858888f193505050501580156100fb573d6000803e3d6000fd5b50565b60008135905061010d816101d8565b92915050565b60006020828403121561012557600080fd5b6000610133848285016100fe565b91505092915050565b60006101478261019f565b91506101528361019f565b925082610162576101616101a9565b5b828204905092915050565b60006101788261017f565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6101e18161016d565b81146101ec57600080fd5b5056fea26469706673582212208e553461507bae731d37afa0d5a2a7dae74de7a6eab682733425a78884ed60b364736f6c63430008040033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Events.sol/AnotherContract.dbg.json b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Events.sol/AnotherContract.dbg.json new file mode 100644 index 0000000000..224dfafc9c --- /dev/null +++ b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Events.sol/AnotherContract.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../build-info/16efa488de3a0283218beddfadbd1423.json" +} diff --git a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Events.sol/AnotherContract.json b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Events.sol/AnotherContract.json new file mode 100644 index 0000000000..495cf4c9ed --- /dev/null +++ b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Events.sol/AnotherContract.json @@ -0,0 +1,37 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "AnotherContract", + "sourceName": "contracts/Events.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "u", + "type": "uint256" + } + ], + "name": "WithUintArg", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "u", + "type": "uint256" + } + ], + "name": "emitUint", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b50610130806100206000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c80639194024414602d575b600080fd5b60436004803603810190603f91906090565b6045565b005b7f97535d4b4270d3f1a499c85ae918ba6798cbdcc83a26529331a25dcd2194cfce816040516072919060c3565b60405180910390a150565b600081359050608a8160e6565b92915050565b60006020828403121560a157600080fd5b600060ad84828501607d565b91505092915050565b60bd8160dc565b82525050565b600060208201905060d6600083018460b6565b92915050565b6000819050919050565b60ed8160dc565b811460f757600080fd5b5056fea264697066735822122083cb9b1ec00d6d1ec78d28771d3bf4778c5ba00b0532a2448d42cbab653355a064736f6c63430008040033", + "deployedBytecode": "0x6080604052348015600f57600080fd5b506004361060285760003560e01c80639194024414602d575b600080fd5b60436004803603810190603f91906090565b6045565b005b7f97535d4b4270d3f1a499c85ae918ba6798cbdcc83a26529331a25dcd2194cfce816040516072919060c3565b60405180910390a150565b600081359050608a8160e6565b92915050565b60006020828403121560a157600080fd5b600060ad84828501607d565b91505092915050565b60bd8160dc565b82525050565b600060208201905060d6600083018460b6565b92915050565b6000819050919050565b60ed8160dc565b811460f757600080fd5b5056fea264697066735822122083cb9b1ec00d6d1ec78d28771d3bf4778c5ba00b0532a2448d42cbab653355a064736f6c63430008040033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Events.sol/Events.dbg.json b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Events.sol/Events.dbg.json new file mode 100644 index 0000000000..224dfafc9c --- /dev/null +++ b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Events.sol/Events.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../build-info/16efa488de3a0283218beddfadbd1423.json" +} diff --git a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Events.sol/Events.json b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Events.sol/Events.json new file mode 100644 index 0000000000..965dcb8d99 --- /dev/null +++ b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Events.sol/Events.json @@ -0,0 +1,527 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "Events", + "sourceName": "contracts/Events.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "contract AnotherContract", + "name": "c", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "a", + "type": "address" + } + ], + "name": "WithAddressArg", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes32", + "name": "b", + "type": "bytes32" + } + ], + "name": "WithBytes32Arg", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes32[2]", + "name": "a", + "type": "bytes32[2]" + } + ], + "name": "WithBytes32Array", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes", + "name": "b", + "type": "bytes" + } + ], + "name": "WithBytesArg", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "b", + "type": "bytes32" + } + ], + "name": "WithIndexedBytes32Arg", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes", + "name": "b", + "type": "bytes" + } + ], + "name": "WithIndexedBytesArg", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "string", + "name": "s", + "type": "string" + } + ], + "name": "WithIndexedStringArg", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "int256", + "name": "i", + "type": "int256" + } + ], + "name": "WithIntArg", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "string", + "name": "s", + "type": "string" + } + ], + "name": "WithStringArg", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "components": [ + { + "internalType": "uint256", + "name": "u", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "v", + "type": "uint256" + } + ], + "indexed": false, + "internalType": "struct Events.Struct", + "name": "s", + "type": "tuple" + } + ], + "name": "WithStructArg", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "string", + "name": "s", + "type": "string" + }, + { + "indexed": false, + "internalType": "string", + "name": "t", + "type": "string" + } + ], + "name": "WithTwoStringArgs", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "u", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "v", + "type": "uint256" + } + ], + "name": "WithTwoUintArgs", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "u", + "type": "uint256" + } + ], + "name": "WithUintArg", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256[2]", + "name": "a", + "type": "uint256[2]" + } + ], + "name": "WithUintArray", + "type": "event" + }, + { + "anonymous": false, + "inputs": [], + "name": "WithoutArgs", + "type": "event" + }, + { + "inputs": [], + "name": "doNotEmit", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "a", + "type": "address" + } + ], + "name": "emitAddress", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "b", + "type": "bytes" + } + ], + "name": "emitBytes", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "b", + "type": "bytes32" + } + ], + "name": "emitBytes32", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "b", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "c", + "type": "bytes32" + } + ], + "name": "emitBytes32Array", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "b", + "type": "bytes" + } + ], + "name": "emitIndexedBytes", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "b", + "type": "bytes32" + } + ], + "name": "emitIndexedBytes32", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "s", + "type": "string" + } + ], + "name": "emitIndexedString", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "int256", + "name": "i", + "type": "int256" + } + ], + "name": "emitInt", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "u", + "type": "uint256" + } + ], + "name": "emitNestedUintFromAnotherContract", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "u", + "type": "uint256" + } + ], + "name": "emitNestedUintFromSameContract", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "s", + "type": "string" + } + ], + "name": "emitString", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "u", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "v", + "type": "uint256" + } + ], + "name": "emitStruct", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "u", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "v", + "type": "uint256" + } + ], + "name": "emitTwoUints", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "u", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "v", + "type": "uint256" + }, + { + "internalType": "string", + "name": "s", + "type": "string" + }, + { + "internalType": "string", + "name": "t", + "type": "string" + } + ], + "name": "emitTwoUintsAndTwoStrings", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "u", + "type": "uint256" + } + ], + "name": "emitUint", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "u", + "type": "uint256" + }, + { + "internalType": "string", + "name": "s", + "type": "string" + } + ], + "name": "emitUintAndString", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "u", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "v", + "type": "uint256" + } + ], + "name": "emitUintArray", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "u", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "v", + "type": "uint256" + } + ], + "name": "emitUintTwice", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "emitWithoutArgs", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x60806040523480156200001157600080fd5b506040516200140d3803806200140d833981810160405281019062000037919062000095565b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505062000123565b6000815190506200008f8162000109565b92915050565b600060208284031215620000a857600080fd5b6000620000b8848285016200007e565b91505092915050565b6000620000ce82620000e9565b9050919050565b6000620000e282620000c1565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6200011481620000d5565b81146200012057600080fd5b50565b6112da80620001336000396000f3fe608060405234801561001057600080fd5b506004361061012c5760003560e01c80638a618191116100ad578063c76f063511610071578063c76f0635146102c3578063cc07e605146102df578063d3931e57146102fb578063db6cdf6814610317578063ec5c3ede146103215761012c565b80638a6181911461024957806390b37ea214610265578063919402441461026f5780639f31a2231461028b578063c0cd80e6146102a75761012c565b806333311ef3116100f457806333311ef3146101bd57806338393646146101d9578063443690a0146101f5578063532b9cce14610211578063813a8cf51461022d5761012c565b8063048858e5146101315780630c0c941a1461014d57806317aba537146101695780632536f127146101855780632785f8d6146101a1575b600080fd5b61014b600480360381019061014691906109f0565b61033d565b005b61016760048036038101906101629190610b7d565b61036d565b005b610183600480360381019061017e9190610b7d565b6103df565b005b61019f600480360381019061019a9190610abf565b61042e565b005b6101bb60048036038101906101b69190610b29565b610468565b005b6101d760048036038101906101d291906109f0565b6104da565b005b6101f360048036038101906101ee9190610b7d565b610514565b005b61020f600480360381019061020a9190610abf565b610551565b005b61022b60048036038101906102269190610bb9565b610596565b005b61024760048036038101906102429190610b00565b61060e565b005b610263600480360381019061025e9190610a96565b61061a565b005b61026d610654565b005b61028960048036038101906102849190610b00565b610682565b005b6102a560048036038101906102a09190610b7d565b6106bc565b005b6102c160048036038101906102bc9190610a19565b61070b565b005b6102dd60048036038101906102d89190610a55565b61075a565b005b6102f960048036038101906102f49190610a55565b610794565b005b61031560048036038101906103109190610b00565b6107d9565b005b61031f610867565b005b61033b600480360381019061033691906109c7565b610869565b005b807fb421ad092cfce88844bfbfaa9654e824ba0ee5b6b0a220f822406b62c05364c060405160405180910390a250565b7f97535d4b4270d3f1a499c85ae918ba6798cbdcc83a26529331a25dcd2194cfce8260405161039c9190610fd2565b60405180910390a17f97535d4b4270d3f1a499c85ae918ba6798cbdcc83a26529331a25dcd2194cfce816040516103d39190610fd2565b60405180910390a15050565b7f73e687a2685d698f7acf934b4929a29ae783a4bcb640d71c5d6994d74e2380ca6040518060400160405280848152602001838152506040516104229190610eeb565b60405180910390a15050565b7f9b7ddcbde8dac280e036f87acafec72f9eee31a640c08087e8439139c7e5b52a8160405161045d9190610f5e565b60405180910390a150565b7f9b7ddcbde8dac280e036f87acafec72f9eee31a640c08087e8439139c7e5b52a816040516104979190610f5e565b60405180910390a17f97535d4b4270d3f1a499c85ae918ba6798cbdcc83a26529331a25dcd2194cfce826040516104ce9190610fd2565b60405180910390a15050565b7f425517d2678bbca3c0d9d8d9fdbec34c81194e7935ed48a6a19f97db93bcef6a816040516105099190610f06565b60405180910390a150565b7f8b268bb46a33a55bece084a8b6858719c9f2985c860fa06c155a341df0b73c0e8282604051610545929190610fed565b60405180910390a15050565b8060405161055f9190610e9e565b60405180910390207fd9ca28363e2d8739e0e9c4fea1d2df98d1bd7d9d915d00e5fccbf78c0fddcdb060405160405180910390a250565b7f8b268bb46a33a55bece084a8b6858719c9f2985c860fa06c155a341df0b73c0e84846040516105c7929190610fed565b60405180910390a17f1f1a2c748505fcd8f16a719fa88d517b1b41111c4f5e07bb28311cdc4d1515388282604051610600929190610f80565b60405180910390a150505050565b61061781610682565b50565b7f39feab747bb4f579008aea963d7ebac85ad410bb83ee663a42af01464654e93f816040516106499190610f43565b60405180910390a150565b7f917b7bf7ab24d61500cb699921a3a1cc22b8833da6484fea20f262b2610604af60405160405180910390a1565b7f97535d4b4270d3f1a499c85ae918ba6798cbdcc83a26529331a25dcd2194cfce816040516106b19190610fd2565b60405180910390a150565b7fd59ab87bf64b9d737998f3dc70c649d16b135f085029c1666ca0634beb75a7736040518060400160405280848152602001838152506040516106ff9190610fb7565b60405180910390a15050565b7f15100859f3ffe92910dc3f11ed3db4e9cf32ff657c05066e44be4e69b2b488bc60405180604001604052808481526020018381525060405161074e9190610ed0565b60405180910390a15050565b7f433470edcdd53b50238be4d8e048e2baa269af5be2a4e29515c138883c745aa8816040516107899190610f21565b60405180910390a150565b806040516107a29190610e87565b60405180910390207f160e4655df40987951accf7c731d5c504f77d20c139bd73032821b91a426dd9860405160405180910390a250565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166391940244826040518263ffffffff1660e01b81526004016108329190610fd2565b600060405180830381600087803b15801561084c57600080fd5b505af1158015610860573d6000803e3d6000fd5b5050505050565b565b7f336bcd960d2e5a52cef6094ba33727f309dc2c675eebefc6d9b6b6d79abac877816040516108989190610eb5565b60405180910390a150565b60006108b66108b18461103b565b611016565b9050828152602081018484840111156108ce57600080fd5b6108d9848285611195565b509392505050565b60006108f46108ef8461106c565b611016565b90508281526020810184848401111561090c57600080fd5b610917848285611195565b509392505050565b60008135905061092e81611248565b92915050565b6000813590506109438161125f565b92915050565b600082601f83011261095a57600080fd5b813561096a8482602086016108a3565b91505092915050565b60008135905061098281611276565b92915050565b600082601f83011261099957600080fd5b81356109a98482602086016108e1565b91505092915050565b6000813590506109c18161128d565b92915050565b6000602082840312156109d957600080fd5b60006109e78482850161091f565b91505092915050565b600060208284031215610a0257600080fd5b6000610a1084828501610934565b91505092915050565b60008060408385031215610a2c57600080fd5b6000610a3a85828601610934565b9250506020610a4b85828601610934565b9150509250929050565b600060208284031215610a6757600080fd5b600082013567ffffffffffffffff811115610a8157600080fd5b610a8d84828501610949565b91505092915050565b600060208284031215610aa857600080fd5b6000610ab684828501610973565b91505092915050565b600060208284031215610ad157600080fd5b600082013567ffffffffffffffff811115610aeb57600080fd5b610af784828501610988565b91505092915050565b600060208284031215610b1257600080fd5b6000610b20848285016109b2565b91505092915050565b60008060408385031215610b3c57600080fd5b6000610b4a858286016109b2565b925050602083013567ffffffffffffffff811115610b6757600080fd5b610b7385828601610988565b9150509250929050565b60008060408385031215610b9057600080fd5b6000610b9e858286016109b2565b9250506020610baf858286016109b2565b9150509250929050565b60008060008060808587031215610bcf57600080fd5b6000610bdd878288016109b2565b9450506020610bee878288016109b2565b935050604085013567ffffffffffffffff811115610c0b57600080fd5b610c1787828801610988565b925050606085013567ffffffffffffffff811115610c3457600080fd5b610c4087828801610988565b91505092959194509250565b6000610c588383610d39565b60208301905092915050565b6000610c708383610e69565b60208301905092915050565b610c8581611145565b82525050565b610c94816110b1565b610c9e81846110f7565b9250610ca98261109d565b8060005b83811015610cda578151610cc18782610c4c565b9650610ccc836110dd565b925050600181019050610cad565b505050505050565b610ceb816110bc565b610cf58184611102565b9250610d00826110a7565b8060005b83811015610d31578151610d188782610c64565b9650610d23836110ea565b925050600181019050610d04565b505050505050565b610d4281611157565b82525050565b610d5181611157565b82525050565b6000610d62826110c7565b610d6c818561110d565b9350610d7c8185602086016111a4565b610d8581611237565b840191505092915050565b6000610d9b826110c7565b610da5818561111e565b9350610db58185602086016111a4565b80840191505092915050565b610dca81611161565b82525050565b6000610ddb826110d2565b610de58185611129565b9350610df58185602086016111a4565b610dfe81611237565b840191505092915050565b6000610e14826110d2565b610e1e818561113a565b9350610e2e8185602086016111a4565b80840191505092915050565b604082016000820151610e506000850182610e69565b506020820151610e636020850182610e69565b50505050565b610e728161118b565b82525050565b610e818161118b565b82525050565b6000610e938284610d90565b915081905092915050565b6000610eaa8284610e09565b915081905092915050565b6000602082019050610eca6000830184610c7c565b92915050565b6000604082019050610ee56000830184610c8b565b92915050565b6000604082019050610f006000830184610ce2565b92915050565b6000602082019050610f1b6000830184610d48565b92915050565b60006020820190508181036000830152610f3b8184610d57565b905092915050565b6000602082019050610f586000830184610dc1565b92915050565b60006020820190508181036000830152610f788184610dd0565b905092915050565b60006040820190508181036000830152610f9a8185610dd0565b90508181036020830152610fae8184610dd0565b90509392505050565b6000604082019050610fcc6000830184610e3a565b92915050565b6000602082019050610fe76000830184610e78565b92915050565b60006040820190506110026000830185610e78565b61100f6020830184610e78565b9392505050565b6000611020611031565b905061102c82826111d7565b919050565b6000604051905090565b600067ffffffffffffffff82111561105657611055611208565b5b61105f82611237565b9050602081019050919050565b600067ffffffffffffffff82111561108757611086611208565b5b61109082611237565b9050602081019050919050565b6000819050919050565b6000819050919050565b600060029050919050565b600060029050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b600081905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b60006111508261116b565b9050919050565b6000819050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b838110156111c25780820151818401526020810190506111a7565b838111156111d1576000848401525b50505050565b6111e082611237565b810181811067ffffffffffffffff821117156111ff576111fe611208565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b61125181611145565b811461125c57600080fd5b50565b61126881611157565b811461127357600080fd5b50565b61127f81611161565b811461128a57600080fd5b50565b6112968161118b565b81146112a157600080fd5b5056fea264697066735822122073a91a740c0de3883c5213c5981d98d2396a8b60b3cf2fb364d7e4cc826a841e64736f6c63430008040033", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061012c5760003560e01c80638a618191116100ad578063c76f063511610071578063c76f0635146102c3578063cc07e605146102df578063d3931e57146102fb578063db6cdf6814610317578063ec5c3ede146103215761012c565b80638a6181911461024957806390b37ea214610265578063919402441461026f5780639f31a2231461028b578063c0cd80e6146102a75761012c565b806333311ef3116100f457806333311ef3146101bd57806338393646146101d9578063443690a0146101f5578063532b9cce14610211578063813a8cf51461022d5761012c565b8063048858e5146101315780630c0c941a1461014d57806317aba537146101695780632536f127146101855780632785f8d6146101a1575b600080fd5b61014b600480360381019061014691906109f0565b61033d565b005b61016760048036038101906101629190610b7d565b61036d565b005b610183600480360381019061017e9190610b7d565b6103df565b005b61019f600480360381019061019a9190610abf565b61042e565b005b6101bb60048036038101906101b69190610b29565b610468565b005b6101d760048036038101906101d291906109f0565b6104da565b005b6101f360048036038101906101ee9190610b7d565b610514565b005b61020f600480360381019061020a9190610abf565b610551565b005b61022b60048036038101906102269190610bb9565b610596565b005b61024760048036038101906102429190610b00565b61060e565b005b610263600480360381019061025e9190610a96565b61061a565b005b61026d610654565b005b61028960048036038101906102849190610b00565b610682565b005b6102a560048036038101906102a09190610b7d565b6106bc565b005b6102c160048036038101906102bc9190610a19565b61070b565b005b6102dd60048036038101906102d89190610a55565b61075a565b005b6102f960048036038101906102f49190610a55565b610794565b005b61031560048036038101906103109190610b00565b6107d9565b005b61031f610867565b005b61033b600480360381019061033691906109c7565b610869565b005b807fb421ad092cfce88844bfbfaa9654e824ba0ee5b6b0a220f822406b62c05364c060405160405180910390a250565b7f97535d4b4270d3f1a499c85ae918ba6798cbdcc83a26529331a25dcd2194cfce8260405161039c9190610fd2565b60405180910390a17f97535d4b4270d3f1a499c85ae918ba6798cbdcc83a26529331a25dcd2194cfce816040516103d39190610fd2565b60405180910390a15050565b7f73e687a2685d698f7acf934b4929a29ae783a4bcb640d71c5d6994d74e2380ca6040518060400160405280848152602001838152506040516104229190610eeb565b60405180910390a15050565b7f9b7ddcbde8dac280e036f87acafec72f9eee31a640c08087e8439139c7e5b52a8160405161045d9190610f5e565b60405180910390a150565b7f9b7ddcbde8dac280e036f87acafec72f9eee31a640c08087e8439139c7e5b52a816040516104979190610f5e565b60405180910390a17f97535d4b4270d3f1a499c85ae918ba6798cbdcc83a26529331a25dcd2194cfce826040516104ce9190610fd2565b60405180910390a15050565b7f425517d2678bbca3c0d9d8d9fdbec34c81194e7935ed48a6a19f97db93bcef6a816040516105099190610f06565b60405180910390a150565b7f8b268bb46a33a55bece084a8b6858719c9f2985c860fa06c155a341df0b73c0e8282604051610545929190610fed565b60405180910390a15050565b8060405161055f9190610e9e565b60405180910390207fd9ca28363e2d8739e0e9c4fea1d2df98d1bd7d9d915d00e5fccbf78c0fddcdb060405160405180910390a250565b7f8b268bb46a33a55bece084a8b6858719c9f2985c860fa06c155a341df0b73c0e84846040516105c7929190610fed565b60405180910390a17f1f1a2c748505fcd8f16a719fa88d517b1b41111c4f5e07bb28311cdc4d1515388282604051610600929190610f80565b60405180910390a150505050565b61061781610682565b50565b7f39feab747bb4f579008aea963d7ebac85ad410bb83ee663a42af01464654e93f816040516106499190610f43565b60405180910390a150565b7f917b7bf7ab24d61500cb699921a3a1cc22b8833da6484fea20f262b2610604af60405160405180910390a1565b7f97535d4b4270d3f1a499c85ae918ba6798cbdcc83a26529331a25dcd2194cfce816040516106b19190610fd2565b60405180910390a150565b7fd59ab87bf64b9d737998f3dc70c649d16b135f085029c1666ca0634beb75a7736040518060400160405280848152602001838152506040516106ff9190610fb7565b60405180910390a15050565b7f15100859f3ffe92910dc3f11ed3db4e9cf32ff657c05066e44be4e69b2b488bc60405180604001604052808481526020018381525060405161074e9190610ed0565b60405180910390a15050565b7f433470edcdd53b50238be4d8e048e2baa269af5be2a4e29515c138883c745aa8816040516107899190610f21565b60405180910390a150565b806040516107a29190610e87565b60405180910390207f160e4655df40987951accf7c731d5c504f77d20c139bd73032821b91a426dd9860405160405180910390a250565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166391940244826040518263ffffffff1660e01b81526004016108329190610fd2565b600060405180830381600087803b15801561084c57600080fd5b505af1158015610860573d6000803e3d6000fd5b5050505050565b565b7f336bcd960d2e5a52cef6094ba33727f309dc2c675eebefc6d9b6b6d79abac877816040516108989190610eb5565b60405180910390a150565b60006108b66108b18461103b565b611016565b9050828152602081018484840111156108ce57600080fd5b6108d9848285611195565b509392505050565b60006108f46108ef8461106c565b611016565b90508281526020810184848401111561090c57600080fd5b610917848285611195565b509392505050565b60008135905061092e81611248565b92915050565b6000813590506109438161125f565b92915050565b600082601f83011261095a57600080fd5b813561096a8482602086016108a3565b91505092915050565b60008135905061098281611276565b92915050565b600082601f83011261099957600080fd5b81356109a98482602086016108e1565b91505092915050565b6000813590506109c18161128d565b92915050565b6000602082840312156109d957600080fd5b60006109e78482850161091f565b91505092915050565b600060208284031215610a0257600080fd5b6000610a1084828501610934565b91505092915050565b60008060408385031215610a2c57600080fd5b6000610a3a85828601610934565b9250506020610a4b85828601610934565b9150509250929050565b600060208284031215610a6757600080fd5b600082013567ffffffffffffffff811115610a8157600080fd5b610a8d84828501610949565b91505092915050565b600060208284031215610aa857600080fd5b6000610ab684828501610973565b91505092915050565b600060208284031215610ad157600080fd5b600082013567ffffffffffffffff811115610aeb57600080fd5b610af784828501610988565b91505092915050565b600060208284031215610b1257600080fd5b6000610b20848285016109b2565b91505092915050565b60008060408385031215610b3c57600080fd5b6000610b4a858286016109b2565b925050602083013567ffffffffffffffff811115610b6757600080fd5b610b7385828601610988565b9150509250929050565b60008060408385031215610b9057600080fd5b6000610b9e858286016109b2565b9250506020610baf858286016109b2565b9150509250929050565b60008060008060808587031215610bcf57600080fd5b6000610bdd878288016109b2565b9450506020610bee878288016109b2565b935050604085013567ffffffffffffffff811115610c0b57600080fd5b610c1787828801610988565b925050606085013567ffffffffffffffff811115610c3457600080fd5b610c4087828801610988565b91505092959194509250565b6000610c588383610d39565b60208301905092915050565b6000610c708383610e69565b60208301905092915050565b610c8581611145565b82525050565b610c94816110b1565b610c9e81846110f7565b9250610ca98261109d565b8060005b83811015610cda578151610cc18782610c4c565b9650610ccc836110dd565b925050600181019050610cad565b505050505050565b610ceb816110bc565b610cf58184611102565b9250610d00826110a7565b8060005b83811015610d31578151610d188782610c64565b9650610d23836110ea565b925050600181019050610d04565b505050505050565b610d4281611157565b82525050565b610d5181611157565b82525050565b6000610d62826110c7565b610d6c818561110d565b9350610d7c8185602086016111a4565b610d8581611237565b840191505092915050565b6000610d9b826110c7565b610da5818561111e565b9350610db58185602086016111a4565b80840191505092915050565b610dca81611161565b82525050565b6000610ddb826110d2565b610de58185611129565b9350610df58185602086016111a4565b610dfe81611237565b840191505092915050565b6000610e14826110d2565b610e1e818561113a565b9350610e2e8185602086016111a4565b80840191505092915050565b604082016000820151610e506000850182610e69565b506020820151610e636020850182610e69565b50505050565b610e728161118b565b82525050565b610e818161118b565b82525050565b6000610e938284610d90565b915081905092915050565b6000610eaa8284610e09565b915081905092915050565b6000602082019050610eca6000830184610c7c565b92915050565b6000604082019050610ee56000830184610c8b565b92915050565b6000604082019050610f006000830184610ce2565b92915050565b6000602082019050610f1b6000830184610d48565b92915050565b60006020820190508181036000830152610f3b8184610d57565b905092915050565b6000602082019050610f586000830184610dc1565b92915050565b60006020820190508181036000830152610f788184610dd0565b905092915050565b60006040820190508181036000830152610f9a8185610dd0565b90508181036020830152610fae8184610dd0565b90509392505050565b6000604082019050610fcc6000830184610e3a565b92915050565b6000602082019050610fe76000830184610e78565b92915050565b60006040820190506110026000830185610e78565b61100f6020830184610e78565b9392505050565b6000611020611031565b905061102c82826111d7565b919050565b6000604051905090565b600067ffffffffffffffff82111561105657611055611208565b5b61105f82611237565b9050602081019050919050565b600067ffffffffffffffff82111561108757611086611208565b5b61109082611237565b9050602081019050919050565b6000819050919050565b6000819050919050565b600060029050919050565b600060029050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b600081905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b60006111508261116b565b9050919050565b6000819050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b838110156111c25780820151818401526020810190506111a7565b838111156111d1576000848401525b50505050565b6111e082611237565b810181811067ffffffffffffffff821117156111ff576111fe611208565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b61125181611145565b811461125c57600080fd5b50565b61126881611157565b811461127357600080fd5b50565b61127f81611161565b811461128a57600080fd5b50565b6112968161118b565b81146112a157600080fd5b5056fea264697066735822122073a91a740c0de3883c5213c5981d98d2396a8b60b3cf2fb364d7e4cc826a841e64736f6c63430008040033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Events.sol/OverrideEventContract.dbg.json b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Events.sol/OverrideEventContract.dbg.json new file mode 100644 index 0000000000..224dfafc9c --- /dev/null +++ b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Events.sol/OverrideEventContract.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../build-info/16efa488de3a0283218beddfadbd1423.json" +} diff --git a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Events.sol/OverrideEventContract.json b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Events.sol/OverrideEventContract.json new file mode 100644 index 0000000000..8400a4909c --- /dev/null +++ b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Events.sol/OverrideEventContract.json @@ -0,0 +1,50 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "OverrideEventContract", + "sourceName": "contracts/Events.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "u", + "type": "uint256" + } + ], + "name": "simpleEvent", + "type": "event" + }, + { + "anonymous": false, + "inputs": [], + "name": "simpleEvent", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "u", + "type": "uint256" + } + ], + "name": "emitSimpleEventWithUintArg", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "emitSimpleEventWithoutArg", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b50610188806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80632ce136d91461003b5780638e1c72bb14610057575b600080fd5b610055600480360381019061005091906100de565b610061565b005b61005f61009b565b005b7fb2dc4835200bc382210c109031e47d05b37c9244807898f5910a43f961e6719a816040516100909190610116565b60405180910390a150565b7f8922a6ca0f59f137d8e739a3dca968247fca890d147a5006a57da5bc782f6ae960405160405180910390a1565b6000813590506100d88161013b565b92915050565b6000602082840312156100f057600080fd5b60006100fe848285016100c9565b91505092915050565b61011081610131565b82525050565b600060208201905061012b6000830184610107565b92915050565b6000819050919050565b61014481610131565b811461014f57600080fd5b5056fea264697066735822122016232a4f6ea73657adfebd142c8d15f5593e419f600cb1983aba440defd27a5064736f6c63430008040033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100365760003560e01c80632ce136d91461003b5780638e1c72bb14610057575b600080fd5b610055600480360381019061005091906100de565b610061565b005b61005f61009b565b005b7fb2dc4835200bc382210c109031e47d05b37c9244807898f5910a43f961e6719a816040516100909190610116565b60405180910390a150565b7f8922a6ca0f59f137d8e739a3dca968247fca890d147a5006a57da5bc782f6ae960405160405180910390a1565b6000813590506100d88161013b565b92915050565b6000602082840312156100f057600080fd5b60006100fe848285016100c9565b91505092915050565b61011081610131565b82525050565b600060208201905061012b6000830184610107565b92915050565b6000819050919050565b61014481610131565b811461014f57600080fd5b5056fea264697066735822122016232a4f6ea73657adfebd142c8d15f5593e419f600cb1983aba440defd27a5064736f6c63430008040033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Matchers.sol/AnotherMatchersContract.dbg.json b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Matchers.sol/AnotherMatchersContract.dbg.json new file mode 100644 index 0000000000..224dfafc9c --- /dev/null +++ b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Matchers.sol/AnotherMatchersContract.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../build-info/16efa488de3a0283218beddfadbd1423.json" +} diff --git a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Matchers.sol/AnotherMatchersContract.json b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Matchers.sol/AnotherMatchersContract.json new file mode 100644 index 0000000000..6774821378 --- /dev/null +++ b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Matchers.sol/AnotherMatchersContract.json @@ -0,0 +1,30 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "AnotherMatchersContract", + "sourceName": "contracts/Matchers.sol", + "abi": [ + { + "inputs": [], + "name": "YetAnotherCustomError", + "type": "error" + }, + { + "inputs": [], + "name": "revertWithYetAnotherCustomError", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "revertWithYetAnotherCustomErrorView", + "outputs": [], + "stateMutability": "pure", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b50610182806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c806340d83b241461003b5780634b2bd7e914610045575b600080fd5b61004361004f565b005b61004d610081565b005b6040517fff05e87500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080815480929190610093906100d4565b91905055506040517fff05e87500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000819050919050565b60006100df826100ca565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156101125761011161011d565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea2646970667358221220188b4117d3c1f35f2fcbff7fbf51ee28f08c8abd18e3796ccd1d2fbc8c862e3f64736f6c63430008040033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100365760003560e01c806340d83b241461003b5780634b2bd7e914610045575b600080fd5b61004361004f565b005b61004d610081565b005b6040517fff05e87500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080815480929190610093906100d4565b91905055506040517fff05e87500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000819050919050565b60006100df826100ca565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156101125761011161011d565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea2646970667358221220188b4117d3c1f35f2fcbff7fbf51ee28f08c8abd18e3796ccd1d2fbc8c862e3f64736f6c63430008040033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Matchers.sol/Matchers.dbg.json b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Matchers.sol/Matchers.dbg.json new file mode 100644 index 0000000000..224dfafc9c --- /dev/null +++ b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Matchers.sol/Matchers.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../build-info/16efa488de3a0283218beddfadbd1423.json" +} diff --git a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Matchers.sol/Matchers.json b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Matchers.sol/Matchers.json new file mode 100644 index 0000000000..5a4f85691d --- /dev/null +++ b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Matchers.sol/Matchers.json @@ -0,0 +1,333 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "Matchers", + "sourceName": "contracts/Matchers.sol", + "abi": [ + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "AnotherCustomError", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "int256", + "name": "", + "type": "int256" + } + ], + "name": "CustomErrorWithInt", + "type": "error" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "uint256", + "name": "a", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "b", + "type": "uint256" + } + ], + "internalType": "struct Matchers.Pair", + "name": "", + "type": "tuple" + } + ], + "name": "CustomErrorWithPair", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "nameToForceEthersToUseAnArrayLikeWithNamedProperties", + "type": "uint256" + } + ], + "name": "CustomErrorWithUint", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "name": "CustomErrorWithUintAndString", + "type": "error" + }, + { + "inputs": [], + "name": "SomeCustomError", + "type": "error" + }, + { + "anonymous": false, + "inputs": [], + "name": "SomeEvent", + "type": "event" + }, + { + "inputs": [], + "name": "panicAssert", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "panicAssertView", + "outputs": [], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "revertWithAnotherContractCustomError", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "revertWithAnotherContractCustomErrorView", + "outputs": [], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "revertWithAnotherCustomError", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "revertWithAnotherCustomErrorView", + "outputs": [], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "int256", + "name": "i", + "type": "int256" + } + ], + "name": "revertWithCustomErrorWithInt", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "int256", + "name": "i", + "type": "int256" + } + ], + "name": "revertWithCustomErrorWithIntView", + "outputs": [], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "a", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "b", + "type": "uint256" + } + ], + "name": "revertWithCustomErrorWithPair", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "a", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "b", + "type": "uint256" + } + ], + "name": "revertWithCustomErrorWithPairView", + "outputs": [], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "n", + "type": "uint256" + } + ], + "name": "revertWithCustomErrorWithUint", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "n", + "type": "uint256" + }, + { + "internalType": "string", + "name": "s", + "type": "string" + } + ], + "name": "revertWithCustomErrorWithUintAndString", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "n", + "type": "uint256" + }, + { + "internalType": "string", + "name": "s", + "type": "string" + } + ], + "name": "revertWithCustomErrorWithUintAndStringView", + "outputs": [], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "n", + "type": "uint256" + } + ], + "name": "revertWithCustomErrorWithUintView", + "outputs": [], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "revertWithSomeCustomError", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "revertWithSomeCustomErrorView", + "outputs": [], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "reason", + "type": "string" + } + ], + "name": "revertsWith", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "reason", + "type": "string" + } + ], + "name": "revertsWithView", + "outputs": [], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "revertsWithoutReason", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "revertsWithoutReasonView", + "outputs": [], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "succeeds", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "succeedsView", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b5060405161001d9061007f565b604051809103906000f080158015610039573d6000803e3d6000fd5b50600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061008c565b6101a280610e8a83390190565b610def8061009b6000396000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c806373d2ea85116100b8578063aac014e01161007c578063aac014e01461028b578063b6bbe06114610295578063bad92aa91461029f578063e0a03812146102a9578063fe276a34146102c5578063ffb4746b146102e157610142565b806373d2ea851461022357806374afd4521461023f578063772f243a146102495780637c3cb0af146102535780638f9330301461026f57610142565b80634b5bbf6a1161010a5780634b5bbf6a146101c157806358a1d1ed146101cb5780635b94e31e146101d5578063622051f1146101df5780636f1fdc31146101e95780636fc588d21461020557610142565b80631b4f3f3d146101475780631f542cf3146101515780633ba4178b1461016d578063467e3d371461018957806347c56769146101a5575b600080fd5b61014f6102eb565b005b61016b60048036038101906101669190610a66565b61030f565b005b61018760048036038101906101829190610a12565b610360565b005b6101a3600480360381019061019e91906109a8565b61039f565b005b6101bf60048036038101906101ba919061097f565b6103e7565b005b6101c9610424565b005b6101d361046d565b005b6101dd61047a565b005b6101e76104b1565b005b61020360048036038101906101fe91906109a8565b610533565b005b61020d610592565b60405161021a9190610b8f565b60405180910390f35b61023d600480360381019061023891906109e9565b61059b565b005b6102476105ef565b005b610251610608565b005b61026d600480360381019061026891906109e9565b6106a3565b005b6102896004803603810190610284919061097f565b6106e0565b005b610293610734565b005b61029d610766565b005b6102a76107b4565b005b6102c360048036038101906102be9190610a66565b6107fd565b005b6102df60048036038101906102da9190610a12565b610865565b005b6102e96108bb565b005b6000808154809291906102fd90610cd3565b9190505550600061030d57600080fd5b565b6040518060400160405280838152602001828152506040517fdecab0e70000000000000000000000000000000000000000000000000000000081526004016103579190610b74565b60405180910390fd5b81816040517fa92ee8e3000000000000000000000000000000000000000000000000000000008152600401610396929190610baa565b60405180910390fd5b600081906103e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103da9190610b52565b60405180910390fd5b5050565b806040517fcdd7a0cc00000000000000000000000000000000000000000000000000000000815260040161041b9190610b37565b60405180910390fd5b60008081548092919061043690610cd3565b91905055506040517fd2c097a600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061047857600080fd5b565b60006104af577f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340d83b246040518163ffffffff1660e01b815260040160006040518083038186803b15801561051957600080fd5b505afa15801561052d573d6000803e3d6000fd5b50505050565b60008081548092919061054590610cd3565b91905055506000819061058e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105859190610b52565b60405180910390fd5b5050565b60008054905090565b6000808154809291906105ad90610cd3565b9190505550806040517f01f4d5d20000000000000000000000000000000000000000000000000000000081526004016105e69190610b8f565b60405180910390fd5b60008081548092919061060190610cd3565b9190505550565b60008081548092919061061a90610cd3565b9190505550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634b2bd7e96040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561068957600080fd5b505af115801561069d573d6000803e3d6000fd5b50505050565b806040517f01f4d5d20000000000000000000000000000000000000000000000000000000081526004016106d79190610b8f565b60405180910390fd5b6000808154809291906106f290610cd3565b9190505550806040517fcdd7a0cc00000000000000000000000000000000000000000000000000000000815260040161072b9190610b37565b60405180910390fd5b6040517fd2c097a600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008081548092919061077890610cd3565b919050555060006107b2577f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b565b6000808154809291906107c690610cd3565b91905055506040517f0bd3d39c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008081548092919061080f90610cd3565b91905055506040518060400160405280838152602001828152506040517fdecab0e700000000000000000000000000000000000000000000000000000000815260040161085c9190610b74565b60405180910390fd5b60008081548092919061087790610cd3565b919050555081816040517fa92ee8e30000000000000000000000000000000000000000000000000000000081526004016108b2929190610baa565b60405180910390fd5b6040517f0bd3d39c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006109006108fb84610bff565b610bda565b90508281526020810184848401111561091857600080fd5b610923848285610c60565b509392505050565b60008135905061093a81610d8b565b92915050565b600082601f83011261095157600080fd5b81356109618482602086016108ed565b91505092915050565b60008135905061097981610da2565b92915050565b60006020828403121561099157600080fd5b600061099f8482850161092b565b91505092915050565b6000602082840312156109ba57600080fd5b600082013567ffffffffffffffff8111156109d457600080fd5b6109e084828501610940565b91505092915050565b6000602082840312156109fb57600080fd5b6000610a098482850161096a565b91505092915050565b60008060408385031215610a2557600080fd5b6000610a338582860161096a565b925050602083013567ffffffffffffffff811115610a5057600080fd5b610a5c85828601610940565b9150509250929050565b60008060408385031215610a7957600080fd5b6000610a878582860161096a565b9250506020610a988582860161096a565b9150509250929050565b610aab81610c4c565b82525050565b6000610abc82610c30565b610ac68185610c3b565b9350610ad6818560208601610c6f565b610adf81610d7a565b840191505092915050565b604082016000820151610b006000850182610b19565b506020820151610b136020850182610b19565b50505050565b610b2281610c56565b82525050565b610b3181610c56565b82525050565b6000602082019050610b4c6000830184610aa2565b92915050565b60006020820190508181036000830152610b6c8184610ab1565b905092915050565b6000604082019050610b896000830184610aea565b92915050565b6000602082019050610ba46000830184610b28565b92915050565b6000604082019050610bbf6000830185610b28565b8181036020830152610bd18184610ab1565b90509392505050565b6000610be4610bf5565b9050610bf08282610ca2565b919050565b6000604051905090565b600067ffffffffffffffff821115610c1a57610c19610d4b565b5b610c2382610d7a565b9050602081019050919050565b600081519050919050565b600082825260208201905092915050565b6000819050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015610c8d578082015181840152602081019050610c72565b83811115610c9c576000848401525b50505050565b610cab82610d7a565b810181811067ffffffffffffffff82111715610cca57610cc9610d4b565b5b80604052505050565b6000610cde82610c56565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415610d1157610d10610d1c565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b610d9481610c4c565b8114610d9f57600080fd5b50565b610dab81610c56565b8114610db657600080fd5b5056fea264697066735822122025e4c9eca28af81eeb16cfbb3832355e24c64c7eae221a5034159a671d61281464736f6c63430008040033608060405234801561001057600080fd5b50610182806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c806340d83b241461003b5780634b2bd7e914610045575b600080fd5b61004361004f565b005b61004d610081565b005b6040517fff05e87500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080815480929190610093906100d4565b91905055506040517fff05e87500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000819050919050565b60006100df826100ca565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156101125761011161011d565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea2646970667358221220188b4117d3c1f35f2fcbff7fbf51ee28f08c8abd18e3796ccd1d2fbc8c862e3f64736f6c63430008040033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101425760003560e01c806373d2ea85116100b8578063aac014e01161007c578063aac014e01461028b578063b6bbe06114610295578063bad92aa91461029f578063e0a03812146102a9578063fe276a34146102c5578063ffb4746b146102e157610142565b806373d2ea851461022357806374afd4521461023f578063772f243a146102495780637c3cb0af146102535780638f9330301461026f57610142565b80634b5bbf6a1161010a5780634b5bbf6a146101c157806358a1d1ed146101cb5780635b94e31e146101d5578063622051f1146101df5780636f1fdc31146101e95780636fc588d21461020557610142565b80631b4f3f3d146101475780631f542cf3146101515780633ba4178b1461016d578063467e3d371461018957806347c56769146101a5575b600080fd5b61014f6102eb565b005b61016b60048036038101906101669190610a66565b61030f565b005b61018760048036038101906101829190610a12565b610360565b005b6101a3600480360381019061019e91906109a8565b61039f565b005b6101bf60048036038101906101ba919061097f565b6103e7565b005b6101c9610424565b005b6101d361046d565b005b6101dd61047a565b005b6101e76104b1565b005b61020360048036038101906101fe91906109a8565b610533565b005b61020d610592565b60405161021a9190610b8f565b60405180910390f35b61023d600480360381019061023891906109e9565b61059b565b005b6102476105ef565b005b610251610608565b005b61026d600480360381019061026891906109e9565b6106a3565b005b6102896004803603810190610284919061097f565b6106e0565b005b610293610734565b005b61029d610766565b005b6102a76107b4565b005b6102c360048036038101906102be9190610a66565b6107fd565b005b6102df60048036038101906102da9190610a12565b610865565b005b6102e96108bb565b005b6000808154809291906102fd90610cd3565b9190505550600061030d57600080fd5b565b6040518060400160405280838152602001828152506040517fdecab0e70000000000000000000000000000000000000000000000000000000081526004016103579190610b74565b60405180910390fd5b81816040517fa92ee8e3000000000000000000000000000000000000000000000000000000008152600401610396929190610baa565b60405180910390fd5b600081906103e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103da9190610b52565b60405180910390fd5b5050565b806040517fcdd7a0cc00000000000000000000000000000000000000000000000000000000815260040161041b9190610b37565b60405180910390fd5b60008081548092919061043690610cd3565b91905055506040517fd2c097a600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061047857600080fd5b565b60006104af577f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340d83b246040518163ffffffff1660e01b815260040160006040518083038186803b15801561051957600080fd5b505afa15801561052d573d6000803e3d6000fd5b50505050565b60008081548092919061054590610cd3565b91905055506000819061058e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105859190610b52565b60405180910390fd5b5050565b60008054905090565b6000808154809291906105ad90610cd3565b9190505550806040517f01f4d5d20000000000000000000000000000000000000000000000000000000081526004016105e69190610b8f565b60405180910390fd5b60008081548092919061060190610cd3565b9190505550565b60008081548092919061061a90610cd3565b9190505550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634b2bd7e96040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561068957600080fd5b505af115801561069d573d6000803e3d6000fd5b50505050565b806040517f01f4d5d20000000000000000000000000000000000000000000000000000000081526004016106d79190610b8f565b60405180910390fd5b6000808154809291906106f290610cd3565b9190505550806040517fcdd7a0cc00000000000000000000000000000000000000000000000000000000815260040161072b9190610b37565b60405180910390fd5b6040517fd2c097a600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008081548092919061077890610cd3565b919050555060006107b2577f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b565b6000808154809291906107c690610cd3565b91905055506040517f0bd3d39c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008081548092919061080f90610cd3565b91905055506040518060400160405280838152602001828152506040517fdecab0e700000000000000000000000000000000000000000000000000000000815260040161085c9190610b74565b60405180910390fd5b60008081548092919061087790610cd3565b919050555081816040517fa92ee8e30000000000000000000000000000000000000000000000000000000081526004016108b2929190610baa565b60405180910390fd5b6040517f0bd3d39c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006109006108fb84610bff565b610bda565b90508281526020810184848401111561091857600080fd5b610923848285610c60565b509392505050565b60008135905061093a81610d8b565b92915050565b600082601f83011261095157600080fd5b81356109618482602086016108ed565b91505092915050565b60008135905061097981610da2565b92915050565b60006020828403121561099157600080fd5b600061099f8482850161092b565b91505092915050565b6000602082840312156109ba57600080fd5b600082013567ffffffffffffffff8111156109d457600080fd5b6109e084828501610940565b91505092915050565b6000602082840312156109fb57600080fd5b6000610a098482850161096a565b91505092915050565b60008060408385031215610a2557600080fd5b6000610a338582860161096a565b925050602083013567ffffffffffffffff811115610a5057600080fd5b610a5c85828601610940565b9150509250929050565b60008060408385031215610a7957600080fd5b6000610a878582860161096a565b9250506020610a988582860161096a565b9150509250929050565b610aab81610c4c565b82525050565b6000610abc82610c30565b610ac68185610c3b565b9350610ad6818560208601610c6f565b610adf81610d7a565b840191505092915050565b604082016000820151610b006000850182610b19565b506020820151610b136020850182610b19565b50505050565b610b2281610c56565b82525050565b610b3181610c56565b82525050565b6000602082019050610b4c6000830184610aa2565b92915050565b60006020820190508181036000830152610b6c8184610ab1565b905092915050565b6000604082019050610b896000830184610aea565b92915050565b6000602082019050610ba46000830184610b28565b92915050565b6000604082019050610bbf6000830185610b28565b8181036020830152610bd18184610ab1565b90509392505050565b6000610be4610bf5565b9050610bf08282610ca2565b919050565b6000604051905090565b600067ffffffffffffffff821115610c1a57610c19610d4b565b5b610c2382610d7a565b9050602081019050919050565b600081519050919050565b600082825260208201905092915050565b6000819050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015610c8d578082015181840152602081019050610c72565b83811115610c9c576000848401525b50505050565b610cab82610d7a565b810181811067ffffffffffffffff82111715610cca57610cc9610d4b565b5b80604052505050565b6000610cde82610c56565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415610d1157610d10610d1c565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b610d9481610c4c565b8114610d9f57600080fd5b50565b610dab81610c56565b8114610db657600080fd5b5056fea264697066735822122025e4c9eca28af81eeb16cfbb3832355e24c64c7eae221a5034159a671d61281464736f6c63430008040033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Token.sol/MockToken.dbg.json b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Token.sol/MockToken.dbg.json new file mode 100644 index 0000000000..224dfafc9c --- /dev/null +++ b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Token.sol/MockToken.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../build-info/16efa488de3a0283218beddfadbd1423.json" +} diff --git a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Token.sol/MockToken.json b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Token.sol/MockToken.json new file mode 100644 index 0000000000..20f3bfa19b --- /dev/null +++ b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Token.sol/MockToken.json @@ -0,0 +1,183 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "MockToken", + "sourceName": "contracts/Token.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "remaining", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "success", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x608060405260016000556040518060400160405280600981526020017f4d6f636b546f6b656e000000000000000000000000000000000000000000000081525060049080519060200190620000569291906200010a565b506040518060400160405280600381526020017f4d434b000000000000000000000000000000000000000000000000000000000081525060059080519060200190620000a49291906200010a565b50348015620000b257600080fd5b50633b9aca00600181905550600154600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506200021f565b8280546200011890620001ba565b90600052602060002090601f0160209004810192826200013c576000855562000188565b82601f106200015757805160ff191683800117855562000188565b8280016001018555821562000188579182015b82811115620001875782518255916020019190600101906200016a565b5b5090506200019791906200019b565b5090565b5b80821115620001b65760008160009055506001016200019c565b5090565b60006002820490506001821680620001d357607f821691505b60208210811415620001ea57620001e9620001f0565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b610bad806200022f6000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c8063313ce56711610066578063313ce5671461013457806370a082311461015257806395d89b4114610182578063a9059cbb146101a0578063dd62ed3e146101d057610093565b806306fdde0314610098578063095ea7b3146100b657806318160ddd146100e657806323b872dd14610104575b600080fd5b6100a0610200565b6040516100ad91906108b8565b60405180910390f35b6100d060048036038101906100cb91906107c4565b61028e565b6040516100dd919061089d565b60405180910390f35b6100ee61031b565b6040516100fb919061091a565b60405180910390f35b61011e60048036038101906101199190610775565b610321565b60405161012b919061089d565b60405180910390f35b61013c6104b9565b604051610149919061091a565b60405180910390f35b61016c60048036038101906101679190610710565b6104bf565b604051610179919061091a565b60405180910390f35b61018a6104d7565b60405161019791906108b8565b60405180910390f35b6101ba60048036038101906101b591906107c4565b610565565b6040516101c7919061089d565b60405180910390f35b6101ea60048036038101906101e59190610739565b61065f565b6040516101f7919061091a565b60405180910390f35b6004805461020d90610a56565b80601f016020809104026020016040519081016040528092919081815260200182805461023990610a56565b80156102865780601f1061025b57610100808354040283529160200191610286565b820191906000526020600020905b81548152906001019060200180831161026957829003601f168201915b505050505081565b600081600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001905092915050565b60015481565b60008161032e853361065f565b101561036f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610366906108da565b60405180910390fd5b81600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546103fb91906109a7565b9250508190555081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461045191906109a7565b9250508190555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546104a79190610951565b92505081905550600190509392505050565b60005481565b60026020528060005260406000206000915090505481565b600580546104e490610a56565b80601f016020809104026020016040519081016040528092919081815260200182805461051090610a56565b801561055d5780601f106105325761010080835404028352916020019161055d565b820191906000526020600020905b81548152906001019060200180831161054057829003601f168201915b505050505081565b60008082116105a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105a0906108fa565b60405180910390fd5b81600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546105f891906109a7565b9250508190555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461064e9190610951565b925050819055506001905092915050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000813590506106f581610b49565b92915050565b60008135905061070a81610b60565b92915050565b60006020828403121561072257600080fd5b6000610730848285016106e6565b91505092915050565b6000806040838503121561074c57600080fd5b600061075a858286016106e6565b925050602061076b858286016106e6565b9150509250929050565b60008060006060848603121561078a57600080fd5b6000610798868287016106e6565b93505060206107a9868287016106e6565b92505060406107ba868287016106fb565b9150509250925092565b600080604083850312156107d757600080fd5b60006107e5858286016106e6565b92505060206107f6858286016106fb565b9150509250929050565b610809816109ed565b82525050565b600061081a82610935565b6108248185610940565b9350610834818560208601610a23565b61083d81610ae6565b840191505092915050565b6000610855601683610940565b915061086082610af7565b602082019050919050565b6000610878601983610940565b915061088382610b20565b602082019050919050565b61089781610a19565b82525050565b60006020820190506108b26000830184610800565b92915050565b600060208201905081810360008301526108d2818461080f565b905092915050565b600060208201905081810360008301526108f381610848565b9050919050565b600060208201905081810360008301526109138161086b565b9050919050565b600060208201905061092f600083018461088e565b92915050565b600081519050919050565b600082825260208201905092915050565b600061095c82610a19565b915061096783610a19565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561099c5761099b610a88565b5b828201905092915050565b60006109b282610a19565b91506109bd83610a19565b9250828210156109d0576109cf610a88565b5b828203905092915050565b60006109e6826109f9565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b83811015610a41578082015181840152602081019050610a26565b83811115610a50576000848401525b50505050565b60006002820490506001821680610a6e57607f821691505b60208210811415610a8257610a81610ab7565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f496e73756666696369656e7420616c6c6f77616e636500000000000000000000600082015250565b7f5472616e736665727265642076616c7565206973207a65726f00000000000000600082015250565b610b52816109db565b8114610b5d57600080fd5b50565b610b6981610a19565b8114610b7457600080fd5b5056fea26469706673582212208ce961870c9d6cd505270df5da0c70d49a8f6cb7e04d5a03b16637783be136e764736f6c63430008040033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100935760003560e01c8063313ce56711610066578063313ce5671461013457806370a082311461015257806395d89b4114610182578063a9059cbb146101a0578063dd62ed3e146101d057610093565b806306fdde0314610098578063095ea7b3146100b657806318160ddd146100e657806323b872dd14610104575b600080fd5b6100a0610200565b6040516100ad91906108b8565b60405180910390f35b6100d060048036038101906100cb91906107c4565b61028e565b6040516100dd919061089d565b60405180910390f35b6100ee61031b565b6040516100fb919061091a565b60405180910390f35b61011e60048036038101906101199190610775565b610321565b60405161012b919061089d565b60405180910390f35b61013c6104b9565b604051610149919061091a565b60405180910390f35b61016c60048036038101906101679190610710565b6104bf565b604051610179919061091a565b60405180910390f35b61018a6104d7565b60405161019791906108b8565b60405180910390f35b6101ba60048036038101906101b591906107c4565b610565565b6040516101c7919061089d565b60405180910390f35b6101ea60048036038101906101e59190610739565b61065f565b6040516101f7919061091a565b60405180910390f35b6004805461020d90610a56565b80601f016020809104026020016040519081016040528092919081815260200182805461023990610a56565b80156102865780601f1061025b57610100808354040283529160200191610286565b820191906000526020600020905b81548152906001019060200180831161026957829003601f168201915b505050505081565b600081600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001905092915050565b60015481565b60008161032e853361065f565b101561036f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610366906108da565b60405180910390fd5b81600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546103fb91906109a7565b9250508190555081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461045191906109a7565b9250508190555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546104a79190610951565b92505081905550600190509392505050565b60005481565b60026020528060005260406000206000915090505481565b600580546104e490610a56565b80601f016020809104026020016040519081016040528092919081815260200182805461051090610a56565b801561055d5780601f106105325761010080835404028352916020019161055d565b820191906000526020600020905b81548152906001019060200180831161054057829003601f168201915b505050505081565b60008082116105a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105a0906108fa565b60405180910390fd5b81600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546105f891906109a7565b9250508190555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461064e9190610951565b925050819055506001905092915050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000813590506106f581610b49565b92915050565b60008135905061070a81610b60565b92915050565b60006020828403121561072257600080fd5b6000610730848285016106e6565b91505092915050565b6000806040838503121561074c57600080fd5b600061075a858286016106e6565b925050602061076b858286016106e6565b9150509250929050565b60008060006060848603121561078a57600080fd5b6000610798868287016106e6565b93505060206107a9868287016106e6565b92505060406107ba868287016106fb565b9150509250925092565b600080604083850312156107d757600080fd5b60006107e5858286016106e6565b92505060206107f6858286016106fb565b9150509250929050565b610809816109ed565b82525050565b600061081a82610935565b6108248185610940565b9350610834818560208601610a23565b61083d81610ae6565b840191505092915050565b6000610855601683610940565b915061086082610af7565b602082019050919050565b6000610878601983610940565b915061088382610b20565b602082019050919050565b61089781610a19565b82525050565b60006020820190506108b26000830184610800565b92915050565b600060208201905081810360008301526108d2818461080f565b905092915050565b600060208201905081810360008301526108f381610848565b9050919050565b600060208201905081810360008301526109138161086b565b9050919050565b600060208201905061092f600083018461088e565b92915050565b600081519050919050565b600082825260208201905092915050565b600061095c82610a19565b915061096783610a19565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561099c5761099b610a88565b5b828201905092915050565b60006109b282610a19565b91506109bd83610a19565b9250828210156109d0576109cf610a88565b5b828203905092915050565b60006109e6826109f9565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b83811015610a41578082015181840152602081019050610a26565b83811115610a50576000848401525b50505050565b60006002820490506001821680610a6e57607f821691505b60208210811415610a8257610a81610ab7565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f496e73756666696369656e7420616c6c6f77616e636500000000000000000000600082015250565b7f5472616e736665727265642076616c7565206973207a65726f00000000000000600082015250565b610b52816109db565b8114610b5d57600080fd5b50565b610b6981610a19565b8114610b7457600080fd5b5056fea26469706673582212208ce961870c9d6cd505270df5da0c70d49a8f6cb7e04d5a03b16637783be136e764736f6c63430008040033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Token.sol/NotAToken.dbg.json b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Token.sol/NotAToken.dbg.json new file mode 100644 index 0000000000..224dfafc9c --- /dev/null +++ b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Token.sol/NotAToken.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../build-info/16efa488de3a0283218beddfadbd1423.json" +} diff --git a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Token.sol/NotAToken.json b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Token.sol/NotAToken.json new file mode 100644 index 0000000000..e50d9826d8 --- /dev/null +++ b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Token.sol/NotAToken.json @@ -0,0 +1,10 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "NotAToken", + "sourceName": "contracts/Token.sol", + "abi": [], + "bytecode": "0x6080604052348015600f57600080fd5b50603f80601d6000396000f3fe6080604052600080fdfea26469706673582212209449725821c33b87347a40f451b2c6483bf5505349fe39bcd25604669e50f33364736f6c63430008040033", + "deployedBytecode": "0x6080604052600080fdfea26469706673582212209449725821c33b87347a40f451b2c6483bf5505349fe39bcd25604669e50f33364736f6c63430008040033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Token.sol/TokenWithOnlyName.dbg.json b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Token.sol/TokenWithOnlyName.dbg.json new file mode 100644 index 0000000000..224dfafc9c --- /dev/null +++ b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Token.sol/TokenWithOnlyName.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../build-info/16efa488de3a0283218beddfadbd1423.json" +} diff --git a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Token.sol/TokenWithOnlyName.json b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Token.sol/TokenWithOnlyName.json new file mode 100644 index 0000000000..65eb5c812c --- /dev/null +++ b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Token.sol/TokenWithOnlyName.json @@ -0,0 +1,170 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "TokenWithOnlyName", + "sourceName": "contracts/Token.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "remaining", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "success", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x608060405260016000556040518060400160405280600981526020017f4d6f636b546f6b656e0000000000000000000000000000000000000000000000815250600490805190602001906100549291906100b8565b5034801561006157600080fd5b50633b9aca00600181905550600154600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506101bc565b8280546100c49061015b565b90600052602060002090601f0160209004810192826100e6576000855561012d565b82601f106100ff57805160ff191683800117855561012d565b8280016001018555821561012d579182015b8281111561012c578251825591602001919060010190610111565b5b50905061013a919061013e565b5090565b5b8082111561015757600081600090555060010161013f565b5090565b6000600282049050600182168061017357607f821691505b602082108114156101875761018661018d565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b610af6806101cb6000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063313ce5671161005b578063313ce5671461012957806370a0823114610147578063a9059cbb14610177578063dd62ed3e146101a757610088565b806306fdde031461008d578063095ea7b3146100ab57806318160ddd146100db57806323b872dd146100f9575b600080fd5b6100956101d7565b6040516100a29190610801565b60405180910390f35b6100c560048036038101906100c0919061070d565b610265565b6040516100d291906107e6565b60405180910390f35b6100e36102f2565b6040516100f09190610863565b60405180910390f35b610113600480360381019061010e91906106be565b6102f8565b60405161012091906107e6565b60405180910390f35b610131610490565b60405161013e9190610863565b60405180910390f35b610161600480360381019061015c9190610659565b610496565b60405161016e9190610863565b60405180910390f35b610191600480360381019061018c919061070d565b6104ae565b60405161019e91906107e6565b60405180910390f35b6101c160048036038101906101bc9190610682565b6105a8565b6040516101ce9190610863565b60405180910390f35b600480546101e49061099f565b80601f01602080910402602001604051908101604052809291908181526020018280546102109061099f565b801561025d5780601f106102325761010080835404028352916020019161025d565b820191906000526020600020905b81548152906001019060200180831161024057829003601f168201915b505050505081565b600081600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001905092915050565b60015481565b60008161030585336105a8565b1015610346576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161033d90610823565b60405180910390fd5b81600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546103d291906108f0565b9250508190555081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461042891906108f0565b9250508190555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461047e919061089a565b92505081905550600190509392505050565b60005481565b60026020528060005260406000206000915090505481565b60008082116104f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104e990610843565b60405180910390fd5b81600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461054191906108f0565b9250508190555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610597919061089a565b925050819055506001905092915050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008135905061063e81610a92565b92915050565b60008135905061065381610aa9565b92915050565b60006020828403121561066b57600080fd5b60006106798482850161062f565b91505092915050565b6000806040838503121561069557600080fd5b60006106a38582860161062f565b92505060206106b48582860161062f565b9150509250929050565b6000806000606084860312156106d357600080fd5b60006106e18682870161062f565b93505060206106f28682870161062f565b925050604061070386828701610644565b9150509250925092565b6000806040838503121561072057600080fd5b600061072e8582860161062f565b925050602061073f85828601610644565b9150509250929050565b61075281610936565b82525050565b60006107638261087e565b61076d8185610889565b935061077d81856020860161096c565b61078681610a2f565b840191505092915050565b600061079e601683610889565b91506107a982610a40565b602082019050919050565b60006107c1601983610889565b91506107cc82610a69565b602082019050919050565b6107e081610962565b82525050565b60006020820190506107fb6000830184610749565b92915050565b6000602082019050818103600083015261081b8184610758565b905092915050565b6000602082019050818103600083015261083c81610791565b9050919050565b6000602082019050818103600083015261085c816107b4565b9050919050565b600060208201905061087860008301846107d7565b92915050565b600081519050919050565b600082825260208201905092915050565b60006108a582610962565b91506108b083610962565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156108e5576108e46109d1565b5b828201905092915050565b60006108fb82610962565b915061090683610962565b925082821015610919576109186109d1565b5b828203905092915050565b600061092f82610942565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b8381101561098a57808201518184015260208101905061096f565b83811115610999576000848401525b50505050565b600060028204905060018216806109b757607f821691505b602082108114156109cb576109ca610a00565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f496e73756666696369656e7420616c6c6f77616e636500000000000000000000600082015250565b7f5472616e736665727265642076616c7565206973207a65726f00000000000000600082015250565b610a9b81610924565b8114610aa657600080fd5b50565b610ab281610962565b8114610abd57600080fd5b5056fea2646970667358221220a6fcd04aa893368d0e3e9a004a848844c520623183d6b2111fbc6f837204d0fa64736f6c63430008040033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100885760003560e01c8063313ce5671161005b578063313ce5671461012957806370a0823114610147578063a9059cbb14610177578063dd62ed3e146101a757610088565b806306fdde031461008d578063095ea7b3146100ab57806318160ddd146100db57806323b872dd146100f9575b600080fd5b6100956101d7565b6040516100a29190610801565b60405180910390f35b6100c560048036038101906100c0919061070d565b610265565b6040516100d291906107e6565b60405180910390f35b6100e36102f2565b6040516100f09190610863565b60405180910390f35b610113600480360381019061010e91906106be565b6102f8565b60405161012091906107e6565b60405180910390f35b610131610490565b60405161013e9190610863565b60405180910390f35b610161600480360381019061015c9190610659565b610496565b60405161016e9190610863565b60405180910390f35b610191600480360381019061018c919061070d565b6104ae565b60405161019e91906107e6565b60405180910390f35b6101c160048036038101906101bc9190610682565b6105a8565b6040516101ce9190610863565b60405180910390f35b600480546101e49061099f565b80601f01602080910402602001604051908101604052809291908181526020018280546102109061099f565b801561025d5780601f106102325761010080835404028352916020019161025d565b820191906000526020600020905b81548152906001019060200180831161024057829003601f168201915b505050505081565b600081600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001905092915050565b60015481565b60008161030585336105a8565b1015610346576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161033d90610823565b60405180910390fd5b81600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546103d291906108f0565b9250508190555081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461042891906108f0565b9250508190555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461047e919061089a565b92505081905550600190509392505050565b60005481565b60026020528060005260406000206000915090505481565b60008082116104f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104e990610843565b60405180910390fd5b81600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461054191906108f0565b9250508190555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610597919061089a565b925050819055506001905092915050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008135905061063e81610a92565b92915050565b60008135905061065381610aa9565b92915050565b60006020828403121561066b57600080fd5b60006106798482850161062f565b91505092915050565b6000806040838503121561069557600080fd5b60006106a38582860161062f565b92505060206106b48582860161062f565b9150509250929050565b6000806000606084860312156106d357600080fd5b60006106e18682870161062f565b93505060206106f28682870161062f565b925050604061070386828701610644565b9150509250925092565b6000806040838503121561072057600080fd5b600061072e8582860161062f565b925050602061073f85828601610644565b9150509250929050565b61075281610936565b82525050565b60006107638261087e565b61076d8185610889565b935061077d81856020860161096c565b61078681610a2f565b840191505092915050565b600061079e601683610889565b91506107a982610a40565b602082019050919050565b60006107c1601983610889565b91506107cc82610a69565b602082019050919050565b6107e081610962565b82525050565b60006020820190506107fb6000830184610749565b92915050565b6000602082019050818103600083015261081b8184610758565b905092915050565b6000602082019050818103600083015261083c81610791565b9050919050565b6000602082019050818103600083015261085c816107b4565b9050919050565b600060208201905061087860008301846107d7565b92915050565b600081519050919050565b600082825260208201905092915050565b60006108a582610962565b91506108b083610962565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156108e5576108e46109d1565b5b828201905092915050565b60006108fb82610962565b915061090683610962565b925082821015610919576109186109d1565b5b828203905092915050565b600061092f82610942565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b8381101561098a57808201518184015260208101905061096f565b83811115610999576000848401525b50505050565b600060028204905060018216806109b757607f821691505b602082108114156109cb576109ca610a00565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f496e73756666696369656e7420616c6c6f77616e636500000000000000000000600082015250565b7f5472616e736665727265642076616c7565206973207a65726f00000000000000600082015250565b610a9b81610924565b8114610aa657600080fd5b50565b610ab281610962565b8114610abd57600080fd5b5056fea2646970667358221220a6fcd04aa893368d0e3e9a004a848844c520623183d6b2111fbc6f837204d0fa64736f6c63430008040033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Token.sol/TokenWithoutNameNorSymbol.dbg.json b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Token.sol/TokenWithoutNameNorSymbol.dbg.json new file mode 100644 index 0000000000..224dfafc9c --- /dev/null +++ b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Token.sol/TokenWithoutNameNorSymbol.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../build-info/16efa488de3a0283218beddfadbd1423.json" +} diff --git a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Token.sol/TokenWithoutNameNorSymbol.json b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Token.sol/TokenWithoutNameNorSymbol.json new file mode 100644 index 0000000000..14e0511214 --- /dev/null +++ b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Token.sol/TokenWithoutNameNorSymbol.json @@ -0,0 +1,162 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "TokenWithoutNameNorSymbol", + "sourceName": "contracts/Token.sol", + "abi": [ + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "remaining", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "success", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x6080604052600160005534801561001557600080fd5b50633b9aca00600181905550600154600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610934806100766000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c8063313ce5671161005b578063313ce5671461010057806370a082311461011e578063a9059cbb1461014e578063dd62ed3e1461017e5761007d565b8063095ea7b31461008257806318160ddd146100b257806323b872dd146100d0575b600080fd5b61009c60048036038101906100979190610656565b6101ae565b6040516100a991906106f6565b60405180910390f35b6100ba61023b565b6040516100c79190610751565b60405180910390f35b6100ea60048036038101906100e59190610607565b610241565b6040516100f791906106f6565b60405180910390f35b6101086103d9565b6040516101159190610751565b60405180910390f35b610138600480360381019061013391906105a2565b6103df565b6040516101459190610751565b60405180910390f35b61016860048036038101906101639190610656565b6103f7565b60405161017591906106f6565b60405180910390f35b610198600480360381019061019391906105cb565b6104f1565b6040516101a59190610751565b60405180910390f35b600081600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001905092915050565b60015481565b60008161024e85336104f1565b101561028f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161028690610711565b60405180910390fd5b81600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461031b91906107d3565b9250508190555081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461037191906107d3565b9250508190555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546103c7919061077d565b92505081905550600190509392505050565b60005481565b60026020528060005260406000206000915090505481565b600080821161043b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043290610731565b60405180910390fd5b81600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461048a91906107d3565b9250508190555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546104e0919061077d565b925050819055506001905092915050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600081359050610587816108d0565b92915050565b60008135905061059c816108e7565b92915050565b6000602082840312156105b457600080fd5b60006105c284828501610578565b91505092915050565b600080604083850312156105de57600080fd5b60006105ec85828601610578565b92505060206105fd85828601610578565b9150509250929050565b60008060006060848603121561061c57600080fd5b600061062a86828701610578565b935050602061063b86828701610578565b925050604061064c8682870161058d565b9150509250925092565b6000806040838503121561066957600080fd5b600061067785828601610578565b92505060206106888582860161058d565b9150509250929050565b61069b81610819565b82525050565b60006106ae60168361076c565b91506106b98261087e565b602082019050919050565b60006106d160198361076c565b91506106dc826108a7565b602082019050919050565b6106f081610845565b82525050565b600060208201905061070b6000830184610692565b92915050565b6000602082019050818103600083015261072a816106a1565b9050919050565b6000602082019050818103600083015261074a816106c4565b9050919050565b600060208201905061076660008301846106e7565b92915050565b600082825260208201905092915050565b600061078882610845565b915061079383610845565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156107c8576107c761084f565b5b828201905092915050565b60006107de82610845565b91506107e983610845565b9250828210156107fc576107fb61084f565b5b828203905092915050565b600061081282610825565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f496e73756666696369656e7420616c6c6f77616e636500000000000000000000600082015250565b7f5472616e736665727265642076616c7565206973207a65726f00000000000000600082015250565b6108d981610807565b81146108e457600080fd5b50565b6108f081610845565b81146108fb57600080fd5b5056fea2646970667358221220a8a6918adf2af132e4e49a96a108a2d9c62cfb74de3e267b6c8af323b87f6ec964736f6c63430008040033", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061007d5760003560e01c8063313ce5671161005b578063313ce5671461010057806370a082311461011e578063a9059cbb1461014e578063dd62ed3e1461017e5761007d565b8063095ea7b31461008257806318160ddd146100b257806323b872dd146100d0575b600080fd5b61009c60048036038101906100979190610656565b6101ae565b6040516100a991906106f6565b60405180910390f35b6100ba61023b565b6040516100c79190610751565b60405180910390f35b6100ea60048036038101906100e59190610607565b610241565b6040516100f791906106f6565b60405180910390f35b6101086103d9565b6040516101159190610751565b60405180910390f35b610138600480360381019061013391906105a2565b6103df565b6040516101459190610751565b60405180910390f35b61016860048036038101906101639190610656565b6103f7565b60405161017591906106f6565b60405180910390f35b610198600480360381019061019391906105cb565b6104f1565b6040516101a59190610751565b60405180910390f35b600081600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001905092915050565b60015481565b60008161024e85336104f1565b101561028f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161028690610711565b60405180910390fd5b81600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461031b91906107d3565b9250508190555081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461037191906107d3565b9250508190555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546103c7919061077d565b92505081905550600190509392505050565b60005481565b60026020528060005260406000206000915090505481565b600080821161043b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043290610731565b60405180910390fd5b81600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461048a91906107d3565b9250508190555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546104e0919061077d565b925050819055506001905092915050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600081359050610587816108d0565b92915050565b60008135905061059c816108e7565b92915050565b6000602082840312156105b457600080fd5b60006105c284828501610578565b91505092915050565b600080604083850312156105de57600080fd5b60006105ec85828601610578565b92505060206105fd85828601610578565b9150509250929050565b60008060006060848603121561061c57600080fd5b600061062a86828701610578565b935050602061063b86828701610578565b925050604061064c8682870161058d565b9150509250925092565b6000806040838503121561066957600080fd5b600061067785828601610578565b92505060206106888582860161058d565b9150509250929050565b61069b81610819565b82525050565b60006106ae60168361076c565b91506106b98261087e565b602082019050919050565b60006106d160198361076c565b91506106dc826108a7565b602082019050919050565b6106f081610845565b82525050565b600060208201905061070b6000830184610692565b92915050565b6000602082019050818103600083015261072a816106a1565b9050919050565b6000602082019050818103600083015261074a816106c4565b9050919050565b600060208201905061076660008301846106e7565b92915050565b600082825260208201905092915050565b600061078882610845565b915061079383610845565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156107c8576107c761084f565b5b828201905092915050565b60006107de82610845565b91506107e983610845565b9250828210156107fc576107fb61084f565b5b828203905092915050565b600061081282610825565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f496e73756666696369656e7420616c6c6f77616e636500000000000000000000600082015250565b7f5472616e736665727265642076616c7565206973207a65726f00000000000000600082015250565b6108d981610807565b81146108e457600080fd5b50565b6108f081610845565b81146108fb57600080fd5b5056fea2646970667358221220a8a6918adf2af132e4e49a96a108a2d9c62cfb74de3e267b6c8af323b87f6ec964736f6c63430008040033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/cache/solidity-files-cache.json b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/cache/solidity-files-cache.json new file mode 100644 index 0000000000..e790e6ed89 --- /dev/null +++ b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/cache/solidity-files-cache.json @@ -0,0 +1,151 @@ +{ + "_format": "hh-sol-cache-2", + "files": { + "/home/chris/repos/nomic-foundation/hardhat2/packages/hardhat-chai-matchers/test/fixture-projects/hardhat-project/contracts/ChangeEtherBalance.sol": { + "lastModificationDate": 1728320765682, + "contentHash": "9dc9459c32d8af0a0f4d5acfebd155a4", + "sourceName": "contracts/ChangeEtherBalance.sol", + "solcConfig": { + "version": "0.8.4", + "settings": { + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [], + "versionPragmas": [ + "^0.8.0" + ], + "artifacts": [ + "ChangeEtherBalance" + ] + }, + "/home/chris/repos/nomic-foundation/hardhat2/packages/hardhat-chai-matchers/test/fixture-projects/hardhat-project/contracts/Events.sol": { + "lastModificationDate": 1728320765682, + "contentHash": "099fe3f0b22189d2eb9219e8e74ab261", + "sourceName": "contracts/Events.sol", + "solcConfig": { + "version": "0.8.4", + "settings": { + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [], + "versionPragmas": [ + "^0.8.0" + ], + "artifacts": [ + "AnotherContract", + "Events", + "OverrideEventContract" + ] + }, + "/home/chris/repos/nomic-foundation/hardhat2/packages/hardhat-chai-matchers/test/fixture-projects/hardhat-project/contracts/Matchers.sol": { + "lastModificationDate": 1728320765682, + "contentHash": "cf77d6e0a9ab773b8772b00d07ca587f", + "sourceName": "contracts/Matchers.sol", + "solcConfig": { + "version": "0.8.4", + "settings": { + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [], + "versionPragmas": [ + "^0.8.0" + ], + "artifacts": [ + "AnotherMatchersContract", + "Matchers" + ] + }, + "/home/chris/repos/nomic-foundation/hardhat2/packages/hardhat-chai-matchers/test/fixture-projects/hardhat-project/contracts/Token.sol": { + "lastModificationDate": 1728320765682, + "contentHash": "e2710c31b1afaab46382eb7735e73547", + "sourceName": "contracts/Token.sol", + "solcConfig": { + "version": "0.8.4", + "settings": { + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [], + "versionPragmas": [ + "^0.8.0" + ], + "artifacts": [ + "MockToken", + "NotAToken", + "TokenWithOnlyName", + "TokenWithoutNameNorSymbol" + ] + } + } +} From 45c76cc2a9bb2f8897589882aa7fe7e83790133f Mon Sep 17 00:00:00 2001 From: ChrisD <18092467+ChristopherDedominici@users.noreply.github.com> Date: Thu, 21 Nov 2024 22:16:54 +0100 Subject: [PATCH 28/61] remove tmp committed compiled contracts --- .../test/fixture-projects/.gitignore | 4 +- .../16efa488de3a0283218beddfadbd1423.json | 1 - .../ChangeEtherBalance.dbg.json | 4 - .../ChangeEtherBalance.json | 35 -- .../Events.sol/AnotherContract.dbg.json | 4 - .../contracts/Events.sol/AnotherContract.json | 37 -- .../contracts/Events.sol/Events.dbg.json | 4 - .../contracts/Events.sol/Events.json | 527 ------------------ .../Events.sol/OverrideEventContract.dbg.json | 4 - .../Events.sol/OverrideEventContract.json | 50 -- .../AnotherMatchersContract.dbg.json | 4 - .../Matchers.sol/AnotherMatchersContract.json | 30 - .../contracts/Matchers.sol/Matchers.dbg.json | 4 - .../contracts/Matchers.sol/Matchers.json | 333 ----------- .../contracts/Token.sol/MockToken.dbg.json | 4 - .../contracts/Token.sol/MockToken.json | 183 ------ .../contracts/Token.sol/NotAToken.dbg.json | 4 - .../contracts/Token.sol/NotAToken.json | 10 - .../Token.sol/TokenWithOnlyName.dbg.json | 4 - .../Token.sol/TokenWithOnlyName.json | 170 ------ .../TokenWithoutNameNorSymbol.dbg.json | 4 - .../Token.sol/TokenWithoutNameNorSymbol.json | 162 ------ .../cache/solidity-files-cache.json | 151 ----- .../contracts/ChangeEtherBalance.sol | 4 +- .../hardhat-project/contracts/Events.sol | 11 +- .../hardhat-project/contracts/Matchers.sol | 23 +- .../hardhat-project/contracts/Token.sol | 20 +- 27 files changed, 44 insertions(+), 1747 deletions(-) delete mode 100644 v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/build-info/16efa488de3a0283218beddfadbd1423.json delete mode 100644 v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/ChangeEtherBalance.sol/ChangeEtherBalance.dbg.json delete mode 100644 v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/ChangeEtherBalance.sol/ChangeEtherBalance.json delete mode 100644 v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Events.sol/AnotherContract.dbg.json delete mode 100644 v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Events.sol/AnotherContract.json delete mode 100644 v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Events.sol/Events.dbg.json delete mode 100644 v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Events.sol/Events.json delete mode 100644 v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Events.sol/OverrideEventContract.dbg.json delete mode 100644 v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Events.sol/OverrideEventContract.json delete mode 100644 v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Matchers.sol/AnotherMatchersContract.dbg.json delete mode 100644 v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Matchers.sol/AnotherMatchersContract.json delete mode 100644 v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Matchers.sol/Matchers.dbg.json delete mode 100644 v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Matchers.sol/Matchers.json delete mode 100644 v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Token.sol/MockToken.dbg.json delete mode 100644 v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Token.sol/MockToken.json delete mode 100644 v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Token.sol/NotAToken.dbg.json delete mode 100644 v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Token.sol/NotAToken.json delete mode 100644 v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Token.sol/TokenWithOnlyName.dbg.json delete mode 100644 v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Token.sol/TokenWithOnlyName.json delete mode 100644 v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Token.sol/TokenWithoutNameNorSymbol.dbg.json delete mode 100644 v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Token.sol/TokenWithoutNameNorSymbol.json delete mode 100644 v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/cache/solidity-files-cache.json diff --git a/v-next/hardhat-chai-matchers/test/fixture-projects/.gitignore b/v-next/hardhat-chai-matchers/test/fixture-projects/.gitignore index e1084b1e5d..e7f801166c 100644 --- a/v-next/hardhat-chai-matchers/test/fixture-projects/.gitignore +++ b/v-next/hardhat-chai-matchers/test/fixture-projects/.gitignore @@ -1,2 +1,2 @@ -# artifacts/ -# cache/ +artifacts/ +cache/ diff --git a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/build-info/16efa488de3a0283218beddfadbd1423.json b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/build-info/16efa488de3a0283218beddfadbd1423.json deleted file mode 100644 index 2a1c7ecac1..0000000000 --- a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/build-info/16efa488de3a0283218beddfadbd1423.json +++ /dev/null @@ -1 +0,0 @@ -{"id":"16efa488de3a0283218beddfadbd1423","_format":"hh-sol-build-info-1","solcVersion":"0.8.4","solcLongVersion":"0.8.4+commit.c7e474f2","input":{"language":"Solidity","sources":{"contracts/ChangeEtherBalance.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\ncontract ChangeEtherBalance {\n function returnHalf() public payable {\n payable(msg.sender).transfer(msg.value / 2);\n }\n\n function transferTo(address addr) public payable {\n payable(addr).transfer(msg.value);\n }\n\n receive() external payable {}\n}"},"contracts/Events.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\ncontract Events {\n AnotherContract anotherContract;\n\n struct Struct {\n uint u;\n uint v;\n }\n\n event WithoutArgs();\n event WithUintArg(uint u);\n event WithIntArg(int i);\n event WithAddressArg(address a);\n event WithTwoUintArgs(uint u, uint v);\n event WithStringArg(string s);\n event WithTwoStringArgs(string s, string t);\n event WithIndexedStringArg(string indexed s);\n event WithBytesArg(bytes b);\n event WithIndexedBytesArg(bytes indexed b);\n event WithBytes32Arg(bytes32 b);\n event WithStructArg(Struct s);\n event WithIndexedBytes32Arg(bytes32 indexed b);\n event WithUintArray(uint[2] a);\n event WithBytes32Array(bytes32[2] a);\n\n constructor (AnotherContract c) {\n anotherContract = c;\n }\n\n function doNotEmit() public {}\n\n function emitWithoutArgs() public {\n emit WithoutArgs();\n }\n\n function emitUint(uint u) public {\n emit WithUintArg(u);\n }\n\n function emitInt(int i) public {\n emit WithIntArg(i);\n }\n\n function emitAddress(address a) public {\n emit WithAddressArg(a);\n }\n\n function emitUintTwice(uint u, uint v) public {\n emit WithUintArg(u);\n emit WithUintArg(v);\n }\n\n function emitTwoUints(uint u, uint v) public {\n emit WithTwoUintArgs(u, v);\n }\n\n function emitString(string memory s) public {\n emit WithStringArg(s);\n }\n\n function emitIndexedString(string memory s) public {\n emit WithIndexedStringArg(s);\n }\n\n function emitBytes(bytes memory b) public {\n emit WithBytesArg(b);\n }\n\n function emitIndexedBytes(bytes memory b) public {\n emit WithIndexedBytesArg(b);\n }\n\n function emitBytes32(bytes32 b) public {\n emit WithBytes32Arg(b);\n }\n\n function emitIndexedBytes32(bytes32 b) public {\n emit WithIndexedBytes32Arg(b);\n }\n\n function emitUintAndString(uint u, string memory s) public {\n emit WithStringArg(s);\n emit WithUintArg(u);\n }\n\n function emitTwoUintsAndTwoStrings(uint u, uint v, string memory s, string memory t) public {\n emit WithTwoUintArgs(u, v);\n emit WithTwoStringArgs(s, t);\n }\n\n function emitStruct(uint u, uint v) public {\n emit WithStructArg(Struct(u, v));\n }\n\n function emitUintArray(uint u, uint v) public {\n emit WithUintArray([u, v]);\n }\n\n function emitBytes32Array(bytes32 b, bytes32 c) public {\n emit WithBytes32Array([b, c]);\n }\n\n function emitNestedUintFromSameContract(uint u) public {\n emitUint(u);\n }\n\n function emitNestedUintFromAnotherContract(uint u) public {\n anotherContract.emitUint(u);\n }\n}\n\ncontract AnotherContract {\n event WithUintArg(uint u);\n\n function emitUint(uint u) public {\n emit WithUintArg(u);\n }\n}\n\ncontract OverrideEventContract {\n event simpleEvent(uint u);\n event simpleEvent();\n\n function emitSimpleEventWithUintArg(uint u) public {\n emit simpleEvent(u);\n }\n\n function emitSimpleEventWithoutArg() public {\n emit simpleEvent();\n }\n}\n"},"contracts/Matchers.sol":{"content":"// SPDX-License-Identifier: UNLICENSED\n\npragma solidity ^0.8.0;\n\ncontract Matchers {\n uint x;\n\n event SomeEvent();\n\n AnotherMatchersContract anotherContract;\n\n struct Pair { uint a; uint b; }\n\n error SomeCustomError();\n error AnotherCustomError();\n error CustomErrorWithInt(int);\n error CustomErrorWithUint(uint nameToForceEthersToUseAnArrayLikeWithNamedProperties);\n error CustomErrorWithUintAndString(uint, string);\n error CustomErrorWithPair(Pair);\n\n constructor () {\n anotherContract = new AnotherMatchersContract();\n }\n\n function succeeds() public {\n x++; // just to avoid compiler warnings\n }\n\n function succeedsView() public view returns (uint) {\n return x;\n }\n\n function revertsWith(string memory reason) public {\n x++;\n require(false, reason);\n }\n\n function revertsWithView(string memory reason) public pure {\n require(false, reason);\n }\n\n function revertsWithoutReason() public {\n x++;\n require(false);\n }\n\n function revertsWithoutReasonView() public pure {\n require(false);\n }\n\n function panicAssert() public {\n x++;\n assert(false);\n }\n\n function panicAssertView() public pure {\n assert(false);\n }\n\n function revertWithSomeCustomError() public {\n x++;\n revert SomeCustomError();\n }\n\n function revertWithSomeCustomErrorView() public pure {\n revert SomeCustomError();\n }\n\n function revertWithAnotherCustomError() public {\n x++;\n revert AnotherCustomError();\n }\n\n function revertWithAnotherCustomErrorView() public pure {\n revert AnotherCustomError();\n }\n\n function revertWithAnotherContractCustomError() public {\n x++;\n anotherContract.revertWithYetAnotherCustomError();\n }\n\n function revertWithAnotherContractCustomErrorView() public view {\n anotherContract.revertWithYetAnotherCustomErrorView();\n }\n\n function revertWithCustomErrorWithUint(uint n) public {\n x++;\n revert CustomErrorWithUint(n);\n }\n\n function revertWithCustomErrorWithUintView(uint n) public pure {\n revert CustomErrorWithUint(n);\n }\n\n function revertWithCustomErrorWithInt(int i) public {\n x++;\n revert CustomErrorWithInt(i);\n }\n\n function revertWithCustomErrorWithIntView(int i) public pure {\n revert CustomErrorWithInt(i);\n }\n\n function revertWithCustomErrorWithUintAndString(uint n, string memory s) public {\n x++;\n revert CustomErrorWithUintAndString(n, s);\n }\n\n function revertWithCustomErrorWithUintAndStringView(uint n, string memory s) public pure {\n revert CustomErrorWithUintAndString(n, s);\n }\n\n function revertWithCustomErrorWithPair(uint a, uint b) public {\n x++;\n revert CustomErrorWithPair(Pair(a, b));\n }\n\n function revertWithCustomErrorWithPairView(uint a, uint b) public pure {\n revert CustomErrorWithPair(Pair(a, b));\n }\n}\n\ncontract AnotherMatchersContract {\n uint x;\n\n error YetAnotherCustomError();\n\n function revertWithYetAnotherCustomError() public {\n x++;\n revert YetAnotherCustomError();\n }\n\n function revertWithYetAnotherCustomErrorView() public pure {\n revert YetAnotherCustomError();\n }\n}\n"},"contracts/Token.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\ncontract TokenWithoutNameNorSymbol {\n uint public decimals = 1;\n\n uint public totalSupply;\n mapping(address => uint) public balanceOf;\n mapping(address => mapping(address => uint)) allowances;\n\n constructor () {\n totalSupply = 1_000_000_000;\n balanceOf[msg.sender] = totalSupply;\n }\n\n function transfer(address to, uint value) public returns (bool) {\n require(value > 0, \"Transferred value is zero\");\n\n balanceOf[msg.sender] -= value;\n balanceOf[to] += value;\n\n return true;\n }\n\n function allowance(address owner, address spender) public view returns (uint256 remaining) {\n return allowances[owner][spender];\n }\n\n function approve(address spender, uint256 value) public returns (bool success) {\n allowances[msg.sender][spender] = value;\n return true;\n }\n\n function transferFrom(address from, address to, uint256 value) public returns (bool) {\n require(allowance(from, msg.sender) >= value, \"Insufficient allowance\");\n\n allowances[from][msg.sender] -= value;\n balanceOf[from] -= value;\n balanceOf[to] += value;\n\n return true;\n }\n}\n\ncontract TokenWithOnlyName is TokenWithoutNameNorSymbol {\n string public name = \"MockToken\";\n}\n\ncontract MockToken is TokenWithoutNameNorSymbol {\n string public name = \"MockToken\";\n string public symbol = \"MCK\";\n}\n\ncontract NotAToken {}\n"}},"settings":{"optimizer":{"enabled":false,"runs":200},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"],"":["ast"]}}}},"output":{"sources":{"contracts/ChangeEtherBalance.sol":{"ast":{"absolutePath":"contracts/ChangeEtherBalance.sol","exportedSymbols":{"ChangeEtherBalance":[37]},"id":38,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"32:23:0"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":37,"linearizedBaseContracts":[37],"name":"ChangeEtherBalance","nameLocation":"66:18:0","nodeType":"ContractDefinition","nodes":[{"body":{"id":16,"nodeType":"Block","src":"126:54:0","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":10,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"161:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":11,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"value","nodeType":"MemberAccess","src":"161:9:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"32","id":12,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"173:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"161:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"expression":{"id":6,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"140:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":7,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"140:10:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":5,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"132:8:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_payable_$","typeString":"type(address payable)"},"typeName":{"id":4,"name":"address","nodeType":"ElementaryTypeName","src":"132:8:0","stateMutability":"payable","typeDescriptions":{}}},"id":8,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"132:19:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":9,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"transfer","nodeType":"MemberAccess","src":"132:28:0","typeDescriptions":{"typeIdentifier":"t_function_transfer_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":14,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"132:43:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15,"nodeType":"ExpressionStatement","src":"132:43:0"}]},"functionSelector":"b019946e","id":17,"implemented":true,"kind":"function","modifiers":[],"name":"returnHalf","nameLocation":"98:10:0","nodeType":"FunctionDefinition","parameters":{"id":2,"nodeType":"ParameterList","parameters":[],"src":"108:2:0"},"returnParameters":{"id":3,"nodeType":"ParameterList","parameters":[],"src":"126:0:0"},"scope":37,"src":"89:91:0","stateMutability":"payable","virtual":false,"visibility":"public"},{"body":{"id":31,"nodeType":"Block","src":"233:44:0","statements":[{"expression":{"arguments":[{"expression":{"id":27,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"262:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":28,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"value","nodeType":"MemberAccess","src":"262:9:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":24,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19,"src":"247:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":23,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"239:8:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_payable_$","typeString":"type(address payable)"},"typeName":{"id":22,"name":"address","nodeType":"ElementaryTypeName","src":"239:8:0","stateMutability":"payable","typeDescriptions":{}}},"id":25,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"239:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":26,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"transfer","nodeType":"MemberAccess","src":"239:22:0","typeDescriptions":{"typeIdentifier":"t_function_transfer_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":29,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"239:33:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":30,"nodeType":"ExpressionStatement","src":"239:33:0"}]},"functionSelector":"a03fa7e3","id":32,"implemented":true,"kind":"function","modifiers":[],"name":"transferTo","nameLocation":"193:10:0","nodeType":"FunctionDefinition","parameters":{"id":20,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19,"mutability":"mutable","name":"addr","nameLocation":"212:4:0","nodeType":"VariableDeclaration","scope":32,"src":"204:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18,"name":"address","nodeType":"ElementaryTypeName","src":"204:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"203:14:0"},"returnParameters":{"id":21,"nodeType":"ParameterList","parameters":[],"src":"233:0:0"},"scope":37,"src":"184:93:0","stateMutability":"payable","virtual":false,"visibility":"public"},{"body":{"id":35,"nodeType":"Block","src":"308:2:0","statements":[]},"id":36,"implemented":true,"kind":"receive","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":33,"nodeType":"ParameterList","parameters":[],"src":"288:2:0"},"returnParameters":{"id":34,"nodeType":"ParameterList","parameters":[],"src":"308:0:0"},"scope":37,"src":"281:29:0","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":38,"src":"57:255:0","usedErrors":[]}],"src":"32:280:0"},"id":0},"contracts/Events.sol":{"ast":{"absolutePath":"contracts/Events.sol","exportedSymbols":{"AnotherContract":[374],"Events":[359],"OverrideEventContract":[398]},"id":399,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":39,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"32:23:1"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":359,"linearizedBaseContracts":[359],"name":"Events","nameLocation":"66:6:1","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":42,"mutability":"mutable","name":"anotherContract","nameLocation":"93:15:1","nodeType":"VariableDeclaration","scope":359,"src":"77:31:1","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_AnotherContract_$374","typeString":"contract AnotherContract"},"typeName":{"id":41,"nodeType":"UserDefinedTypeName","pathNode":{"id":40,"name":"AnotherContract","nodeType":"IdentifierPath","referencedDeclaration":374,"src":"77:15:1"},"referencedDeclaration":374,"src":"77:15:1","typeDescriptions":{"typeIdentifier":"t_contract$_AnotherContract_$374","typeString":"contract AnotherContract"}},"visibility":"internal"},{"canonicalName":"Events.Struct","id":47,"members":[{"constant":false,"id":44,"mutability":"mutable","name":"u","nameLocation":"138:1:1","nodeType":"VariableDeclaration","scope":47,"src":"133:6:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":43,"name":"uint","nodeType":"ElementaryTypeName","src":"133:4:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":46,"mutability":"mutable","name":"v","nameLocation":"150:1:1","nodeType":"VariableDeclaration","scope":47,"src":"145:6:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":45,"name":"uint","nodeType":"ElementaryTypeName","src":"145:4:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"Struct","nameLocation":"120:6:1","nodeType":"StructDefinition","scope":359,"src":"113:43:1","visibility":"public"},{"anonymous":false,"id":49,"name":"WithoutArgs","nameLocation":"166:11:1","nodeType":"EventDefinition","parameters":{"id":48,"nodeType":"ParameterList","parameters":[],"src":"177:2:1"},"src":"160:20:1"},{"anonymous":false,"id":53,"name":"WithUintArg","nameLocation":"189:11:1","nodeType":"EventDefinition","parameters":{"id":52,"nodeType":"ParameterList","parameters":[{"constant":false,"id":51,"indexed":false,"mutability":"mutable","name":"u","nameLocation":"206:1:1","nodeType":"VariableDeclaration","scope":53,"src":"201:6:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":50,"name":"uint","nodeType":"ElementaryTypeName","src":"201:4:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"200:8:1"},"src":"183:26:1"},{"anonymous":false,"id":57,"name":"WithIntArg","nameLocation":"218:10:1","nodeType":"EventDefinition","parameters":{"id":56,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55,"indexed":false,"mutability":"mutable","name":"i","nameLocation":"233:1:1","nodeType":"VariableDeclaration","scope":57,"src":"229:5:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":54,"name":"int","nodeType":"ElementaryTypeName","src":"229:3:1","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"228:7:1"},"src":"212:24:1"},{"anonymous":false,"id":61,"name":"WithAddressArg","nameLocation":"245:14:1","nodeType":"EventDefinition","parameters":{"id":60,"nodeType":"ParameterList","parameters":[{"constant":false,"id":59,"indexed":false,"mutability":"mutable","name":"a","nameLocation":"268:1:1","nodeType":"VariableDeclaration","scope":61,"src":"260:9:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":58,"name":"address","nodeType":"ElementaryTypeName","src":"260:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"259:11:1"},"src":"239:32:1"},{"anonymous":false,"id":67,"name":"WithTwoUintArgs","nameLocation":"280:15:1","nodeType":"EventDefinition","parameters":{"id":66,"nodeType":"ParameterList","parameters":[{"constant":false,"id":63,"indexed":false,"mutability":"mutable","name":"u","nameLocation":"301:1:1","nodeType":"VariableDeclaration","scope":67,"src":"296:6:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":62,"name":"uint","nodeType":"ElementaryTypeName","src":"296:4:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":65,"indexed":false,"mutability":"mutable","name":"v","nameLocation":"309:1:1","nodeType":"VariableDeclaration","scope":67,"src":"304:6:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":64,"name":"uint","nodeType":"ElementaryTypeName","src":"304:4:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"295:16:1"},"src":"274:38:1"},{"anonymous":false,"id":71,"name":"WithStringArg","nameLocation":"321:13:1","nodeType":"EventDefinition","parameters":{"id":70,"nodeType":"ParameterList","parameters":[{"constant":false,"id":69,"indexed":false,"mutability":"mutable","name":"s","nameLocation":"342:1:1","nodeType":"VariableDeclaration","scope":71,"src":"335:8:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":68,"name":"string","nodeType":"ElementaryTypeName","src":"335:6:1","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"334:10:1"},"src":"315:30:1"},{"anonymous":false,"id":77,"name":"WithTwoStringArgs","nameLocation":"354:17:1","nodeType":"EventDefinition","parameters":{"id":76,"nodeType":"ParameterList","parameters":[{"constant":false,"id":73,"indexed":false,"mutability":"mutable","name":"s","nameLocation":"379:1:1","nodeType":"VariableDeclaration","scope":77,"src":"372:8:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":72,"name":"string","nodeType":"ElementaryTypeName","src":"372:6:1","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":75,"indexed":false,"mutability":"mutable","name":"t","nameLocation":"389:1:1","nodeType":"VariableDeclaration","scope":77,"src":"382:8:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":74,"name":"string","nodeType":"ElementaryTypeName","src":"382:6:1","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"371:20:1"},"src":"348:44:1"},{"anonymous":false,"id":81,"name":"WithIndexedStringArg","nameLocation":"401:20:1","nodeType":"EventDefinition","parameters":{"id":80,"nodeType":"ParameterList","parameters":[{"constant":false,"id":79,"indexed":true,"mutability":"mutable","name":"s","nameLocation":"437:1:1","nodeType":"VariableDeclaration","scope":81,"src":"422:16:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":78,"name":"string","nodeType":"ElementaryTypeName","src":"422:6:1","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"421:18:1"},"src":"395:45:1"},{"anonymous":false,"id":85,"name":"WithBytesArg","nameLocation":"449:12:1","nodeType":"EventDefinition","parameters":{"id":84,"nodeType":"ParameterList","parameters":[{"constant":false,"id":83,"indexed":false,"mutability":"mutable","name":"b","nameLocation":"468:1:1","nodeType":"VariableDeclaration","scope":85,"src":"462:7:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":82,"name":"bytes","nodeType":"ElementaryTypeName","src":"462:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"461:9:1"},"src":"443:28:1"},{"anonymous":false,"id":89,"name":"WithIndexedBytesArg","nameLocation":"480:19:1","nodeType":"EventDefinition","parameters":{"id":88,"nodeType":"ParameterList","parameters":[{"constant":false,"id":87,"indexed":true,"mutability":"mutable","name":"b","nameLocation":"514:1:1","nodeType":"VariableDeclaration","scope":89,"src":"500:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":86,"name":"bytes","nodeType":"ElementaryTypeName","src":"500:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"499:17:1"},"src":"474:43:1"},{"anonymous":false,"id":93,"name":"WithBytes32Arg","nameLocation":"526:14:1","nodeType":"EventDefinition","parameters":{"id":92,"nodeType":"ParameterList","parameters":[{"constant":false,"id":91,"indexed":false,"mutability":"mutable","name":"b","nameLocation":"549:1:1","nodeType":"VariableDeclaration","scope":93,"src":"541:9:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":90,"name":"bytes32","nodeType":"ElementaryTypeName","src":"541:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"540:11:1"},"src":"520:32:1"},{"anonymous":false,"id":98,"name":"WithStructArg","nameLocation":"561:13:1","nodeType":"EventDefinition","parameters":{"id":97,"nodeType":"ParameterList","parameters":[{"constant":false,"id":96,"indexed":false,"mutability":"mutable","name":"s","nameLocation":"582:1:1","nodeType":"VariableDeclaration","scope":98,"src":"575:8:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_Struct_$47_memory_ptr","typeString":"struct Events.Struct"},"typeName":{"id":95,"nodeType":"UserDefinedTypeName","pathNode":{"id":94,"name":"Struct","nodeType":"IdentifierPath","referencedDeclaration":47,"src":"575:6:1"},"referencedDeclaration":47,"src":"575:6:1","typeDescriptions":{"typeIdentifier":"t_struct$_Struct_$47_storage_ptr","typeString":"struct Events.Struct"}},"visibility":"internal"}],"src":"574:10:1"},"src":"555:30:1"},{"anonymous":false,"id":102,"name":"WithIndexedBytes32Arg","nameLocation":"594:21:1","nodeType":"EventDefinition","parameters":{"id":101,"nodeType":"ParameterList","parameters":[{"constant":false,"id":100,"indexed":true,"mutability":"mutable","name":"b","nameLocation":"632:1:1","nodeType":"VariableDeclaration","scope":102,"src":"616:17:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":99,"name":"bytes32","nodeType":"ElementaryTypeName","src":"616:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"615:19:1"},"src":"588:47:1"},{"anonymous":false,"id":108,"name":"WithUintArray","nameLocation":"644:13:1","nodeType":"EventDefinition","parameters":{"id":107,"nodeType":"ParameterList","parameters":[{"constant":false,"id":106,"indexed":false,"mutability":"mutable","name":"a","nameLocation":"666:1:1","nodeType":"VariableDeclaration","scope":108,"src":"658:9:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$2_memory_ptr","typeString":"uint256[2]"},"typeName":{"baseType":{"id":103,"name":"uint","nodeType":"ElementaryTypeName","src":"658:4:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":105,"length":{"hexValue":"32","id":104,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"663:1:1","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"ArrayTypeName","src":"658:7:1","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$2_storage_ptr","typeString":"uint256[2]"}},"visibility":"internal"}],"src":"657:11:1"},"src":"638:31:1"},{"anonymous":false,"id":114,"name":"WithBytes32Array","nameLocation":"678:16:1","nodeType":"EventDefinition","parameters":{"id":113,"nodeType":"ParameterList","parameters":[{"constant":false,"id":112,"indexed":false,"mutability":"mutable","name":"a","nameLocation":"706:1:1","nodeType":"VariableDeclaration","scope":114,"src":"695:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$2_memory_ptr","typeString":"bytes32[2]"},"typeName":{"baseType":{"id":109,"name":"bytes32","nodeType":"ElementaryTypeName","src":"695:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":111,"length":{"hexValue":"32","id":110,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"703:1:1","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"ArrayTypeName","src":"695:10:1","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$2_storage_ptr","typeString":"bytes32[2]"}},"visibility":"internal"}],"src":"694:14:1"},"src":"672:37:1"},{"body":{"id":124,"nodeType":"Block","src":"745:30:1","statements":[{"expression":{"id":122,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":120,"name":"anotherContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42,"src":"751:15:1","typeDescriptions":{"typeIdentifier":"t_contract$_AnotherContract_$374","typeString":"contract AnotherContract"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":121,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":117,"src":"769:1:1","typeDescriptions":{"typeIdentifier":"t_contract$_AnotherContract_$374","typeString":"contract AnotherContract"}},"src":"751:19:1","typeDescriptions":{"typeIdentifier":"t_contract$_AnotherContract_$374","typeString":"contract AnotherContract"}},"id":123,"nodeType":"ExpressionStatement","src":"751:19:1"}]},"id":125,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":118,"nodeType":"ParameterList","parameters":[{"constant":false,"id":117,"mutability":"mutable","name":"c","nameLocation":"742:1:1","nodeType":"VariableDeclaration","scope":125,"src":"726:17:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_AnotherContract_$374","typeString":"contract AnotherContract"},"typeName":{"id":116,"nodeType":"UserDefinedTypeName","pathNode":{"id":115,"name":"AnotherContract","nodeType":"IdentifierPath","referencedDeclaration":374,"src":"726:15:1"},"referencedDeclaration":374,"src":"726:15:1","typeDescriptions":{"typeIdentifier":"t_contract$_AnotherContract_$374","typeString":"contract AnotherContract"}},"visibility":"internal"}],"src":"725:19:1"},"returnParameters":{"id":119,"nodeType":"ParameterList","parameters":[],"src":"745:0:1"},"scope":359,"src":"713:62:1","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":128,"nodeType":"Block","src":"807:2:1","statements":[]},"functionSelector":"db6cdf68","id":129,"implemented":true,"kind":"function","modifiers":[],"name":"doNotEmit","nameLocation":"788:9:1","nodeType":"FunctionDefinition","parameters":{"id":126,"nodeType":"ParameterList","parameters":[],"src":"797:2:1"},"returnParameters":{"id":127,"nodeType":"ParameterList","parameters":[],"src":"807:0:1"},"scope":359,"src":"779:30:1","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":135,"nodeType":"Block","src":"847:29:1","statements":[{"eventCall":{"arguments":[],"expression":{"argumentTypes":[],"id":132,"name":"WithoutArgs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":49,"src":"858:11:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$__$returns$__$","typeString":"function ()"}},"id":133,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"858:13:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":134,"nodeType":"EmitStatement","src":"853:18:1"}]},"functionSelector":"90b37ea2","id":136,"implemented":true,"kind":"function","modifiers":[],"name":"emitWithoutArgs","nameLocation":"822:15:1","nodeType":"FunctionDefinition","parameters":{"id":130,"nodeType":"ParameterList","parameters":[],"src":"837:2:1"},"returnParameters":{"id":131,"nodeType":"ParameterList","parameters":[],"src":"847:0:1"},"scope":359,"src":"813:63:1","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":145,"nodeType":"Block","src":"913:30:1","statements":[{"eventCall":{"arguments":[{"id":142,"name":"u","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":138,"src":"936:1:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":141,"name":"WithUintArg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53,"src":"924:11:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":143,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"924:14:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":144,"nodeType":"EmitStatement","src":"919:19:1"}]},"functionSelector":"91940244","id":146,"implemented":true,"kind":"function","modifiers":[],"name":"emitUint","nameLocation":"889:8:1","nodeType":"FunctionDefinition","parameters":{"id":139,"nodeType":"ParameterList","parameters":[{"constant":false,"id":138,"mutability":"mutable","name":"u","nameLocation":"903:1:1","nodeType":"VariableDeclaration","scope":146,"src":"898:6:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":137,"name":"uint","nodeType":"ElementaryTypeName","src":"898:4:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"897:8:1"},"returnParameters":{"id":140,"nodeType":"ParameterList","parameters":[],"src":"913:0:1"},"scope":359,"src":"880:63:1","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":155,"nodeType":"Block","src":"978:29:1","statements":[{"eventCall":{"arguments":[{"id":152,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":148,"src":"1000:1:1","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":151,"name":"WithIntArg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":57,"src":"989:10:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_int256_$returns$__$","typeString":"function (int256)"}},"id":153,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"989:13:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":154,"nodeType":"EmitStatement","src":"984:18:1"}]},"functionSelector":"8a618191","id":156,"implemented":true,"kind":"function","modifiers":[],"name":"emitInt","nameLocation":"956:7:1","nodeType":"FunctionDefinition","parameters":{"id":149,"nodeType":"ParameterList","parameters":[{"constant":false,"id":148,"mutability":"mutable","name":"i","nameLocation":"968:1:1","nodeType":"VariableDeclaration","scope":156,"src":"964:5:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":147,"name":"int","nodeType":"ElementaryTypeName","src":"964:3:1","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"963:7:1"},"returnParameters":{"id":150,"nodeType":"ParameterList","parameters":[],"src":"978:0:1"},"scope":359,"src":"947:60:1","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":165,"nodeType":"Block","src":"1050:33:1","statements":[{"eventCall":{"arguments":[{"id":162,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":158,"src":"1076:1:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":161,"name":"WithAddressArg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61,"src":"1061:14:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":163,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1061:17:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":164,"nodeType":"EmitStatement","src":"1056:22:1"}]},"functionSelector":"ec5c3ede","id":166,"implemented":true,"kind":"function","modifiers":[],"name":"emitAddress","nameLocation":"1020:11:1","nodeType":"FunctionDefinition","parameters":{"id":159,"nodeType":"ParameterList","parameters":[{"constant":false,"id":158,"mutability":"mutable","name":"a","nameLocation":"1040:1:1","nodeType":"VariableDeclaration","scope":166,"src":"1032:9:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":157,"name":"address","nodeType":"ElementaryTypeName","src":"1032:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1031:11:1"},"returnParameters":{"id":160,"nodeType":"ParameterList","parameters":[],"src":"1050:0:1"},"scope":359,"src":"1011:72:1","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":181,"nodeType":"Block","src":"1133:55:1","statements":[{"eventCall":{"arguments":[{"id":174,"name":"u","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":168,"src":"1156:1:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":173,"name":"WithUintArg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53,"src":"1144:11:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":175,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1144:14:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":176,"nodeType":"EmitStatement","src":"1139:19:1"},{"eventCall":{"arguments":[{"id":178,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":170,"src":"1181:1:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":177,"name":"WithUintArg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53,"src":"1169:11:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":179,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1169:14:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":180,"nodeType":"EmitStatement","src":"1164:19:1"}]},"functionSelector":"0c0c941a","id":182,"implemented":true,"kind":"function","modifiers":[],"name":"emitUintTwice","nameLocation":"1096:13:1","nodeType":"FunctionDefinition","parameters":{"id":171,"nodeType":"ParameterList","parameters":[{"constant":false,"id":168,"mutability":"mutable","name":"u","nameLocation":"1115:1:1","nodeType":"VariableDeclaration","scope":182,"src":"1110:6:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":167,"name":"uint","nodeType":"ElementaryTypeName","src":"1110:4:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":170,"mutability":"mutable","name":"v","nameLocation":"1123:1:1","nodeType":"VariableDeclaration","scope":182,"src":"1118:6:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":169,"name":"uint","nodeType":"ElementaryTypeName","src":"1118:4:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1109:16:1"},"returnParameters":{"id":172,"nodeType":"ParameterList","parameters":[],"src":"1133:0:1"},"scope":359,"src":"1087:101:1","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":194,"nodeType":"Block","src":"1237:37:1","statements":[{"eventCall":{"arguments":[{"id":190,"name":"u","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":184,"src":"1264:1:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":191,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":186,"src":"1267:1:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":189,"name":"WithTwoUintArgs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67,"src":"1248:15:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":192,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1248:21:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":193,"nodeType":"EmitStatement","src":"1243:26:1"}]},"functionSelector":"38393646","id":195,"implemented":true,"kind":"function","modifiers":[],"name":"emitTwoUints","nameLocation":"1201:12:1","nodeType":"FunctionDefinition","parameters":{"id":187,"nodeType":"ParameterList","parameters":[{"constant":false,"id":184,"mutability":"mutable","name":"u","nameLocation":"1219:1:1","nodeType":"VariableDeclaration","scope":195,"src":"1214:6:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":183,"name":"uint","nodeType":"ElementaryTypeName","src":"1214:4:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":186,"mutability":"mutable","name":"v","nameLocation":"1227:1:1","nodeType":"VariableDeclaration","scope":195,"src":"1222:6:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":185,"name":"uint","nodeType":"ElementaryTypeName","src":"1222:4:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1213:16:1"},"returnParameters":{"id":188,"nodeType":"ParameterList","parameters":[],"src":"1237:0:1"},"scope":359,"src":"1192:82:1","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":204,"nodeType":"Block","src":"1322:32:1","statements":[{"eventCall":{"arguments":[{"id":201,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":197,"src":"1347:1:1","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":200,"name":"WithStringArg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"1333:13:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory)"}},"id":202,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1333:16:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":203,"nodeType":"EmitStatement","src":"1328:21:1"}]},"functionSelector":"2536f127","id":205,"implemented":true,"kind":"function","modifiers":[],"name":"emitString","nameLocation":"1287:10:1","nodeType":"FunctionDefinition","parameters":{"id":198,"nodeType":"ParameterList","parameters":[{"constant":false,"id":197,"mutability":"mutable","name":"s","nameLocation":"1312:1:1","nodeType":"VariableDeclaration","scope":205,"src":"1298:15:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":196,"name":"string","nodeType":"ElementaryTypeName","src":"1298:6:1","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1297:17:1"},"returnParameters":{"id":199,"nodeType":"ParameterList","parameters":[],"src":"1322:0:1"},"scope":359,"src":"1278:76:1","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":214,"nodeType":"Block","src":"1409:39:1","statements":[{"eventCall":{"arguments":[{"id":211,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":207,"src":"1441:1:1","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":210,"name":"WithIndexedStringArg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81,"src":"1420:20:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory)"}},"id":212,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1420:23:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":213,"nodeType":"EmitStatement","src":"1415:28:1"}]},"functionSelector":"443690a0","id":215,"implemented":true,"kind":"function","modifiers":[],"name":"emitIndexedString","nameLocation":"1367:17:1","nodeType":"FunctionDefinition","parameters":{"id":208,"nodeType":"ParameterList","parameters":[{"constant":false,"id":207,"mutability":"mutable","name":"s","nameLocation":"1399:1:1","nodeType":"VariableDeclaration","scope":215,"src":"1385:15:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":206,"name":"string","nodeType":"ElementaryTypeName","src":"1385:6:1","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1384:17:1"},"returnParameters":{"id":209,"nodeType":"ParameterList","parameters":[],"src":"1409:0:1"},"scope":359,"src":"1358:90:1","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":224,"nodeType":"Block","src":"1494:31:1","statements":[{"eventCall":{"arguments":[{"id":221,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":217,"src":"1518:1:1","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":220,"name":"WithBytesArg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85,"src":"1505:12:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes memory)"}},"id":222,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1505:15:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":223,"nodeType":"EmitStatement","src":"1500:20:1"}]},"functionSelector":"c76f0635","id":225,"implemented":true,"kind":"function","modifiers":[],"name":"emitBytes","nameLocation":"1461:9:1","nodeType":"FunctionDefinition","parameters":{"id":218,"nodeType":"ParameterList","parameters":[{"constant":false,"id":217,"mutability":"mutable","name":"b","nameLocation":"1484:1:1","nodeType":"VariableDeclaration","scope":225,"src":"1471:14:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":216,"name":"bytes","nodeType":"ElementaryTypeName","src":"1471:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1470:16:1"},"returnParameters":{"id":219,"nodeType":"ParameterList","parameters":[],"src":"1494:0:1"},"scope":359,"src":"1452:73:1","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":234,"nodeType":"Block","src":"1578:38:1","statements":[{"eventCall":{"arguments":[{"id":231,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":227,"src":"1609:1:1","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":230,"name":"WithIndexedBytesArg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89,"src":"1589:19:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes memory)"}},"id":232,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1589:22:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":233,"nodeType":"EmitStatement","src":"1584:27:1"}]},"functionSelector":"cc07e605","id":235,"implemented":true,"kind":"function","modifiers":[],"name":"emitIndexedBytes","nameLocation":"1538:16:1","nodeType":"FunctionDefinition","parameters":{"id":228,"nodeType":"ParameterList","parameters":[{"constant":false,"id":227,"mutability":"mutable","name":"b","nameLocation":"1568:1:1","nodeType":"VariableDeclaration","scope":235,"src":"1555:14:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":226,"name":"bytes","nodeType":"ElementaryTypeName","src":"1555:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1554:16:1"},"returnParameters":{"id":229,"nodeType":"ParameterList","parameters":[],"src":"1578:0:1"},"scope":359,"src":"1529:87:1","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":244,"nodeType":"Block","src":"1659:33:1","statements":[{"eventCall":{"arguments":[{"id":241,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":237,"src":"1685:1:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":240,"name":"WithBytes32Arg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":93,"src":"1670:14:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$returns$__$","typeString":"function (bytes32)"}},"id":242,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1670:17:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":243,"nodeType":"EmitStatement","src":"1665:22:1"}]},"functionSelector":"33311ef3","id":245,"implemented":true,"kind":"function","modifiers":[],"name":"emitBytes32","nameLocation":"1629:11:1","nodeType":"FunctionDefinition","parameters":{"id":238,"nodeType":"ParameterList","parameters":[{"constant":false,"id":237,"mutability":"mutable","name":"b","nameLocation":"1649:1:1","nodeType":"VariableDeclaration","scope":245,"src":"1641:9:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":236,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1641:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1640:11:1"},"returnParameters":{"id":239,"nodeType":"ParameterList","parameters":[],"src":"1659:0:1"},"scope":359,"src":"1620:72:1","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":254,"nodeType":"Block","src":"1742:40:1","statements":[{"eventCall":{"arguments":[{"id":251,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":247,"src":"1775:1:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":250,"name":"WithIndexedBytes32Arg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":102,"src":"1753:21:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$returns$__$","typeString":"function (bytes32)"}},"id":252,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1753:24:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":253,"nodeType":"EmitStatement","src":"1748:29:1"}]},"functionSelector":"048858e5","id":255,"implemented":true,"kind":"function","modifiers":[],"name":"emitIndexedBytes32","nameLocation":"1705:18:1","nodeType":"FunctionDefinition","parameters":{"id":248,"nodeType":"ParameterList","parameters":[{"constant":false,"id":247,"mutability":"mutable","name":"b","nameLocation":"1732:1:1","nodeType":"VariableDeclaration","scope":255,"src":"1724:9:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":246,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1724:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1723:11:1"},"returnParameters":{"id":249,"nodeType":"ParameterList","parameters":[],"src":"1742:0:1"},"scope":359,"src":"1696:86:1","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":270,"nodeType":"Block","src":"1845:57:1","statements":[{"eventCall":{"arguments":[{"id":263,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":259,"src":"1870:1:1","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":262,"name":"WithStringArg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"1856:13:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory)"}},"id":264,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1856:16:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":265,"nodeType":"EmitStatement","src":"1851:21:1"},{"eventCall":{"arguments":[{"id":267,"name":"u","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":257,"src":"1895:1:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":266,"name":"WithUintArg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53,"src":"1883:11:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":268,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1883:14:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":269,"nodeType":"EmitStatement","src":"1878:19:1"}]},"functionSelector":"2785f8d6","id":271,"implemented":true,"kind":"function","modifiers":[],"name":"emitUintAndString","nameLocation":"1795:17:1","nodeType":"FunctionDefinition","parameters":{"id":260,"nodeType":"ParameterList","parameters":[{"constant":false,"id":257,"mutability":"mutable","name":"u","nameLocation":"1818:1:1","nodeType":"VariableDeclaration","scope":271,"src":"1813:6:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":256,"name":"uint","nodeType":"ElementaryTypeName","src":"1813:4:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":259,"mutability":"mutable","name":"s","nameLocation":"1835:1:1","nodeType":"VariableDeclaration","scope":271,"src":"1821:15:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":258,"name":"string","nodeType":"ElementaryTypeName","src":"1821:6:1","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1812:25:1"},"returnParameters":{"id":261,"nodeType":"ParameterList","parameters":[],"src":"1845:0:1"},"scope":359,"src":"1786:116:1","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":292,"nodeType":"Block","src":"1998:71:1","statements":[{"eventCall":{"arguments":[{"id":283,"name":"u","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":273,"src":"2025:1:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":284,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":275,"src":"2028:1:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":282,"name":"WithTwoUintArgs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67,"src":"2009:15:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":285,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2009:21:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":286,"nodeType":"EmitStatement","src":"2004:26:1"},{"eventCall":{"arguments":[{"id":288,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":277,"src":"2059:1:1","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":289,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":279,"src":"2062:1:1","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":287,"name":"WithTwoStringArgs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77,"src":"2041:17:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory,string memory)"}},"id":290,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2041:23:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":291,"nodeType":"EmitStatement","src":"2036:28:1"}]},"functionSelector":"532b9cce","id":293,"implemented":true,"kind":"function","modifiers":[],"name":"emitTwoUintsAndTwoStrings","nameLocation":"1915:25:1","nodeType":"FunctionDefinition","parameters":{"id":280,"nodeType":"ParameterList","parameters":[{"constant":false,"id":273,"mutability":"mutable","name":"u","nameLocation":"1946:1:1","nodeType":"VariableDeclaration","scope":293,"src":"1941:6:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":272,"name":"uint","nodeType":"ElementaryTypeName","src":"1941:4:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":275,"mutability":"mutable","name":"v","nameLocation":"1954:1:1","nodeType":"VariableDeclaration","scope":293,"src":"1949:6:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":274,"name":"uint","nodeType":"ElementaryTypeName","src":"1949:4:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":277,"mutability":"mutable","name":"s","nameLocation":"1971:1:1","nodeType":"VariableDeclaration","scope":293,"src":"1957:15:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":276,"name":"string","nodeType":"ElementaryTypeName","src":"1957:6:1","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":279,"mutability":"mutable","name":"t","nameLocation":"1988:1:1","nodeType":"VariableDeclaration","scope":293,"src":"1974:15:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":278,"name":"string","nodeType":"ElementaryTypeName","src":"1974:6:1","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1940:50:1"},"returnParameters":{"id":281,"nodeType":"ParameterList","parameters":[],"src":"1998:0:1"},"scope":359,"src":"1906:163:1","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":307,"nodeType":"Block","src":"2116:43:1","statements":[{"eventCall":{"arguments":[{"arguments":[{"id":302,"name":"u","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":295,"src":"2148:1:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":303,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":297,"src":"2151:1:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":301,"name":"Struct","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":47,"src":"2141:6:1","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Struct_$47_storage_ptr_$","typeString":"type(struct Events.Struct storage pointer)"}},"id":304,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2141:12:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Struct_$47_memory_ptr","typeString":"struct Events.Struct memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Struct_$47_memory_ptr","typeString":"struct Events.Struct memory"}],"id":300,"name":"WithStructArg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":98,"src":"2127:13:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_struct$_Struct_$47_memory_ptr_$returns$__$","typeString":"function (struct Events.Struct memory)"}},"id":305,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2127:27:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":306,"nodeType":"EmitStatement","src":"2122:32:1"}]},"functionSelector":"9f31a223","id":308,"implemented":true,"kind":"function","modifiers":[],"name":"emitStruct","nameLocation":"2082:10:1","nodeType":"FunctionDefinition","parameters":{"id":298,"nodeType":"ParameterList","parameters":[{"constant":false,"id":295,"mutability":"mutable","name":"u","nameLocation":"2098:1:1","nodeType":"VariableDeclaration","scope":308,"src":"2093:6:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":294,"name":"uint","nodeType":"ElementaryTypeName","src":"2093:4:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":297,"mutability":"mutable","name":"v","nameLocation":"2106:1:1","nodeType":"VariableDeclaration","scope":308,"src":"2101:6:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":296,"name":"uint","nodeType":"ElementaryTypeName","src":"2101:4:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2092:16:1"},"returnParameters":{"id":299,"nodeType":"ParameterList","parameters":[],"src":"2116:0:1"},"scope":359,"src":"2073:86:1","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":321,"nodeType":"Block","src":"2209:37:1","statements":[{"eventCall":{"arguments":[{"components":[{"id":316,"name":"u","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":310,"src":"2235:1:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":317,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":312,"src":"2238:1:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":318,"isConstant":false,"isInlineArray":true,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2234:6:1","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$2_memory_ptr","typeString":"uint256[2] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_uint256_$2_memory_ptr","typeString":"uint256[2] memory"}],"id":315,"name":"WithUintArray","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":108,"src":"2220:13:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_array$_t_uint256_$2_memory_ptr_$returns$__$","typeString":"function (uint256[2] memory)"}},"id":319,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2220:21:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":320,"nodeType":"EmitStatement","src":"2215:26:1"}]},"functionSelector":"17aba537","id":322,"implemented":true,"kind":"function","modifiers":[],"name":"emitUintArray","nameLocation":"2172:13:1","nodeType":"FunctionDefinition","parameters":{"id":313,"nodeType":"ParameterList","parameters":[{"constant":false,"id":310,"mutability":"mutable","name":"u","nameLocation":"2191:1:1","nodeType":"VariableDeclaration","scope":322,"src":"2186:6:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":309,"name":"uint","nodeType":"ElementaryTypeName","src":"2186:4:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":312,"mutability":"mutable","name":"v","nameLocation":"2199:1:1","nodeType":"VariableDeclaration","scope":322,"src":"2194:6:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":311,"name":"uint","nodeType":"ElementaryTypeName","src":"2194:4:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2185:16:1"},"returnParameters":{"id":314,"nodeType":"ParameterList","parameters":[],"src":"2209:0:1"},"scope":359,"src":"2163:83:1","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":335,"nodeType":"Block","src":"2305:40:1","statements":[{"eventCall":{"arguments":[{"components":[{"id":330,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":324,"src":"2334:1:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":331,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":326,"src":"2337:1:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":332,"isConstant":false,"isInlineArray":true,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2333:6:1","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$2_memory_ptr","typeString":"bytes32[2] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_bytes32_$2_memory_ptr","typeString":"bytes32[2] memory"}],"id":329,"name":"WithBytes32Array","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":114,"src":"2316:16:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_array$_t_bytes32_$2_memory_ptr_$returns$__$","typeString":"function (bytes32[2] memory)"}},"id":333,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2316:24:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":334,"nodeType":"EmitStatement","src":"2311:29:1"}]},"functionSelector":"c0cd80e6","id":336,"implemented":true,"kind":"function","modifiers":[],"name":"emitBytes32Array","nameLocation":"2259:16:1","nodeType":"FunctionDefinition","parameters":{"id":327,"nodeType":"ParameterList","parameters":[{"constant":false,"id":324,"mutability":"mutable","name":"b","nameLocation":"2284:1:1","nodeType":"VariableDeclaration","scope":336,"src":"2276:9:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":323,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2276:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":326,"mutability":"mutable","name":"c","nameLocation":"2295:1:1","nodeType":"VariableDeclaration","scope":336,"src":"2287:9:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":325,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2287:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2275:22:1"},"returnParameters":{"id":328,"nodeType":"ParameterList","parameters":[],"src":"2305:0:1"},"scope":359,"src":"2250:95:1","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":345,"nodeType":"Block","src":"2404:22:1","statements":[{"expression":{"arguments":[{"id":342,"name":"u","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":338,"src":"2419:1:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":341,"name":"emitUint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":146,"src":"2410:8:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":343,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2410:11:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":344,"nodeType":"ExpressionStatement","src":"2410:11:1"}]},"functionSelector":"813a8cf5","id":346,"implemented":true,"kind":"function","modifiers":[],"name":"emitNestedUintFromSameContract","nameLocation":"2358:30:1","nodeType":"FunctionDefinition","parameters":{"id":339,"nodeType":"ParameterList","parameters":[{"constant":false,"id":338,"mutability":"mutable","name":"u","nameLocation":"2394:1:1","nodeType":"VariableDeclaration","scope":346,"src":"2389:6:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":337,"name":"uint","nodeType":"ElementaryTypeName","src":"2389:4:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2388:8:1"},"returnParameters":{"id":340,"nodeType":"ParameterList","parameters":[],"src":"2404:0:1"},"scope":359,"src":"2349:77:1","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":357,"nodeType":"Block","src":"2488:38:1","statements":[{"expression":{"arguments":[{"id":354,"name":"u","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":348,"src":"2519:1:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":351,"name":"anotherContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42,"src":"2494:15:1","typeDescriptions":{"typeIdentifier":"t_contract$_AnotherContract_$374","typeString":"contract AnotherContract"}},"id":353,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"emitUint","nodeType":"MemberAccess","referencedDeclaration":373,"src":"2494:24:1","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256) external"}},"id":355,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2494:27:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":356,"nodeType":"ExpressionStatement","src":"2494:27:1"}]},"functionSelector":"d3931e57","id":358,"implemented":true,"kind":"function","modifiers":[],"name":"emitNestedUintFromAnotherContract","nameLocation":"2439:33:1","nodeType":"FunctionDefinition","parameters":{"id":349,"nodeType":"ParameterList","parameters":[{"constant":false,"id":348,"mutability":"mutable","name":"u","nameLocation":"2478:1:1","nodeType":"VariableDeclaration","scope":358,"src":"2473:6:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":347,"name":"uint","nodeType":"ElementaryTypeName","src":"2473:4:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2472:8:1"},"returnParameters":{"id":350,"nodeType":"ParameterList","parameters":[],"src":"2488:0:1"},"scope":359,"src":"2430:96:1","stateMutability":"nonpayable","virtual":false,"visibility":"public"}],"scope":399,"src":"57:2471:1","usedErrors":[]},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":374,"linearizedBaseContracts":[374],"name":"AnotherContract","nameLocation":"2539:15:1","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"id":363,"name":"WithUintArg","nameLocation":"2565:11:1","nodeType":"EventDefinition","parameters":{"id":362,"nodeType":"ParameterList","parameters":[{"constant":false,"id":361,"indexed":false,"mutability":"mutable","name":"u","nameLocation":"2582:1:1","nodeType":"VariableDeclaration","scope":363,"src":"2577:6:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":360,"name":"uint","nodeType":"ElementaryTypeName","src":"2577:4:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2576:8:1"},"src":"2559:26:1"},{"body":{"id":372,"nodeType":"Block","src":"2622:30:1","statements":[{"eventCall":{"arguments":[{"id":369,"name":"u","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":365,"src":"2645:1:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":368,"name":"WithUintArg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":363,"src":"2633:11:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":370,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2633:14:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":371,"nodeType":"EmitStatement","src":"2628:19:1"}]},"functionSelector":"91940244","id":373,"implemented":true,"kind":"function","modifiers":[],"name":"emitUint","nameLocation":"2598:8:1","nodeType":"FunctionDefinition","parameters":{"id":366,"nodeType":"ParameterList","parameters":[{"constant":false,"id":365,"mutability":"mutable","name":"u","nameLocation":"2612:1:1","nodeType":"VariableDeclaration","scope":373,"src":"2607:6:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":364,"name":"uint","nodeType":"ElementaryTypeName","src":"2607:4:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2606:8:1"},"returnParameters":{"id":367,"nodeType":"ParameterList","parameters":[],"src":"2622:0:1"},"scope":374,"src":"2589:63:1","stateMutability":"nonpayable","virtual":false,"visibility":"public"}],"scope":399,"src":"2530:124:1","usedErrors":[]},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":398,"linearizedBaseContracts":[398],"name":"OverrideEventContract","nameLocation":"2665:21:1","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"id":378,"name":"simpleEvent","nameLocation":"2697:11:1","nodeType":"EventDefinition","parameters":{"id":377,"nodeType":"ParameterList","parameters":[{"constant":false,"id":376,"indexed":false,"mutability":"mutable","name":"u","nameLocation":"2714:1:1","nodeType":"VariableDeclaration","scope":378,"src":"2709:6:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":375,"name":"uint","nodeType":"ElementaryTypeName","src":"2709:4:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2708:8:1"},"src":"2691:26:1"},{"anonymous":false,"id":380,"name":"simpleEvent","nameLocation":"2726:11:1","nodeType":"EventDefinition","parameters":{"id":379,"nodeType":"ParameterList","parameters":[],"src":"2737:2:1"},"src":"2720:20:1"},{"body":{"id":389,"nodeType":"Block","src":"2795:30:1","statements":[{"eventCall":{"arguments":[{"id":386,"name":"u","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":382,"src":"2818:1:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":385,"name":"simpleEvent","nodeType":"Identifier","overloadedDeclarations":[378,380],"referencedDeclaration":378,"src":"2806:11:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":387,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2806:14:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":388,"nodeType":"EmitStatement","src":"2801:19:1"}]},"functionSelector":"2ce136d9","id":390,"implemented":true,"kind":"function","modifiers":[],"name":"emitSimpleEventWithUintArg","nameLocation":"2753:26:1","nodeType":"FunctionDefinition","parameters":{"id":383,"nodeType":"ParameterList","parameters":[{"constant":false,"id":382,"mutability":"mutable","name":"u","nameLocation":"2785:1:1","nodeType":"VariableDeclaration","scope":390,"src":"2780:6:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":381,"name":"uint","nodeType":"ElementaryTypeName","src":"2780:4:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2779:8:1"},"returnParameters":{"id":384,"nodeType":"ParameterList","parameters":[],"src":"2795:0:1"},"scope":398,"src":"2744:81:1","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":396,"nodeType":"Block","src":"2873:29:1","statements":[{"eventCall":{"arguments":[],"expression":{"argumentTypes":[],"id":393,"name":"simpleEvent","nodeType":"Identifier","overloadedDeclarations":[378,380],"referencedDeclaration":380,"src":"2884:11:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$__$returns$__$","typeString":"function ()"}},"id":394,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2884:13:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":395,"nodeType":"EmitStatement","src":"2879:18:1"}]},"functionSelector":"8e1c72bb","id":397,"implemented":true,"kind":"function","modifiers":[],"name":"emitSimpleEventWithoutArg","nameLocation":"2838:25:1","nodeType":"FunctionDefinition","parameters":{"id":391,"nodeType":"ParameterList","parameters":[],"src":"2863:2:1"},"returnParameters":{"id":392,"nodeType":"ParameterList","parameters":[],"src":"2873:0:1"},"scope":398,"src":"2829:73:1","stateMutability":"nonpayable","virtual":false,"visibility":"public"}],"scope":399,"src":"2656:248:1","usedErrors":[]}],"src":"32:2873:1"},"id":1},"contracts/Matchers.sol":{"ast":{"absolutePath":"contracts/Matchers.sol","exportedSymbols":{"AnotherMatchersContract":[710],"Matchers":[688]},"id":711,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":400,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"40:23:2"},{"abstract":false,"baseContracts":[],"contractDependencies":[710],"contractKind":"contract","fullyImplemented":true,"id":688,"linearizedBaseContracts":[688],"name":"Matchers","nameLocation":"74:8:2","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":402,"mutability":"mutable","name":"x","nameLocation":"92:1:2","nodeType":"VariableDeclaration","scope":688,"src":"87:6:2","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":401,"name":"uint","nodeType":"ElementaryTypeName","src":"87:4:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"anonymous":false,"id":404,"name":"SomeEvent","nameLocation":"104:9:2","nodeType":"EventDefinition","parameters":{"id":403,"nodeType":"ParameterList","parameters":[],"src":"113:2:2"},"src":"98:18:2"},{"constant":false,"id":407,"mutability":"mutable","name":"anotherContract","nameLocation":"144:15:2","nodeType":"VariableDeclaration","scope":688,"src":"120:39:2","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_AnotherMatchersContract_$710","typeString":"contract AnotherMatchersContract"},"typeName":{"id":406,"nodeType":"UserDefinedTypeName","pathNode":{"id":405,"name":"AnotherMatchersContract","nodeType":"IdentifierPath","referencedDeclaration":710,"src":"120:23:2"},"referencedDeclaration":710,"src":"120:23:2","typeDescriptions":{"typeIdentifier":"t_contract$_AnotherMatchersContract_$710","typeString":"contract AnotherMatchersContract"}},"visibility":"internal"},{"canonicalName":"Matchers.Pair","id":412,"members":[{"constant":false,"id":409,"mutability":"mutable","name":"a","nameLocation":"183:1:2","nodeType":"VariableDeclaration","scope":412,"src":"178:6:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":408,"name":"uint","nodeType":"ElementaryTypeName","src":"178:4:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":411,"mutability":"mutable","name":"b","nameLocation":"191:1:2","nodeType":"VariableDeclaration","scope":412,"src":"186:6:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":410,"name":"uint","nodeType":"ElementaryTypeName","src":"186:4:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"Pair","nameLocation":"171:4:2","nodeType":"StructDefinition","scope":688,"src":"164:31:2","visibility":"public"},{"id":414,"name":"SomeCustomError","nameLocation":"205:15:2","nodeType":"ErrorDefinition","parameters":{"id":413,"nodeType":"ParameterList","parameters":[],"src":"220:2:2"},"src":"199:24:2"},{"id":416,"name":"AnotherCustomError","nameLocation":"232:18:2","nodeType":"ErrorDefinition","parameters":{"id":415,"nodeType":"ParameterList","parameters":[],"src":"250:2:2"},"src":"226:27:2"},{"id":420,"name":"CustomErrorWithInt","nameLocation":"262:18:2","nodeType":"ErrorDefinition","parameters":{"id":419,"nodeType":"ParameterList","parameters":[{"constant":false,"id":418,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":420,"src":"281:3:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":417,"name":"int","nodeType":"ElementaryTypeName","src":"281:3:2","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"280:5:2"},"src":"256:30:2"},{"id":424,"name":"CustomErrorWithUint","nameLocation":"295:19:2","nodeType":"ErrorDefinition","parameters":{"id":423,"nodeType":"ParameterList","parameters":[{"constant":false,"id":422,"mutability":"mutable","name":"nameToForceEthersToUseAnArrayLikeWithNamedProperties","nameLocation":"320:52:2","nodeType":"VariableDeclaration","scope":424,"src":"315:57:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":421,"name":"uint","nodeType":"ElementaryTypeName","src":"315:4:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"314:59:2"},"src":"289:85:2"},{"id":430,"name":"CustomErrorWithUintAndString","nameLocation":"383:28:2","nodeType":"ErrorDefinition","parameters":{"id":429,"nodeType":"ParameterList","parameters":[{"constant":false,"id":426,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":430,"src":"412:4:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":425,"name":"uint","nodeType":"ElementaryTypeName","src":"412:4:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":428,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":430,"src":"418:6:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":427,"name":"string","nodeType":"ElementaryTypeName","src":"418:6:2","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"411:14:2"},"src":"377:49:2"},{"id":435,"name":"CustomErrorWithPair","nameLocation":"435:19:2","nodeType":"ErrorDefinition","parameters":{"id":434,"nodeType":"ParameterList","parameters":[{"constant":false,"id":433,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":435,"src":"455:4:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_Pair_$412_memory_ptr","typeString":"struct Matchers.Pair"},"typeName":{"id":432,"nodeType":"UserDefinedTypeName","pathNode":{"id":431,"name":"Pair","nodeType":"IdentifierPath","referencedDeclaration":412,"src":"455:4:2"},"referencedDeclaration":412,"src":"455:4:2","typeDescriptions":{"typeIdentifier":"t_struct$_Pair_$412_storage_ptr","typeString":"struct Matchers.Pair"}},"visibility":"internal"}],"src":"454:6:2"},"src":"429:32:2"},{"body":{"id":445,"nodeType":"Block","src":"480:58:2","statements":[{"expression":{"id":443,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":438,"name":"anotherContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":407,"src":"486:15:2","typeDescriptions":{"typeIdentifier":"t_contract$_AnotherMatchersContract_$710","typeString":"contract AnotherMatchersContract"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"id":441,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"NewExpression","src":"504:27:2","typeDescriptions":{"typeIdentifier":"t_function_creation_nonpayable$__$returns$_t_contract$_AnotherMatchersContract_$710_$","typeString":"function () returns (contract AnotherMatchersContract)"},"typeName":{"id":440,"nodeType":"UserDefinedTypeName","pathNode":{"id":439,"name":"AnotherMatchersContract","nodeType":"IdentifierPath","referencedDeclaration":710,"src":"508:23:2"},"referencedDeclaration":710,"src":"508:23:2","typeDescriptions":{"typeIdentifier":"t_contract$_AnotherMatchersContract_$710","typeString":"contract AnotherMatchersContract"}}},"id":442,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"504:29:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_AnotherMatchersContract_$710","typeString":"contract AnotherMatchersContract"}},"src":"486:47:2","typeDescriptions":{"typeIdentifier":"t_contract$_AnotherMatchersContract_$710","typeString":"contract AnotherMatchersContract"}},"id":444,"nodeType":"ExpressionStatement","src":"486:47:2"}]},"id":446,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":436,"nodeType":"ParameterList","parameters":[],"src":"477:2:2"},"returnParameters":{"id":437,"nodeType":"ParameterList","parameters":[],"src":"480:0:2"},"scope":688,"src":"465:73:2","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":452,"nodeType":"Block","src":"569:49:2","statements":[{"expression":{"id":450,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"575:3:2","subExpression":{"id":449,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":402,"src":"575:1:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":451,"nodeType":"ExpressionStatement","src":"575:3:2"}]},"functionSelector":"74afd452","id":453,"implemented":true,"kind":"function","modifiers":[],"name":"succeeds","nameLocation":"551:8:2","nodeType":"FunctionDefinition","parameters":{"id":447,"nodeType":"ParameterList","parameters":[],"src":"559:2:2"},"returnParameters":{"id":448,"nodeType":"ParameterList","parameters":[],"src":"569:0:2"},"scope":688,"src":"542:76:2","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":460,"nodeType":"Block","src":"673:19:2","statements":[{"expression":{"id":458,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":402,"src":"686:1:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":457,"id":459,"nodeType":"Return","src":"679:8:2"}]},"functionSelector":"6fc588d2","id":461,"implemented":true,"kind":"function","modifiers":[],"name":"succeedsView","nameLocation":"631:12:2","nodeType":"FunctionDefinition","parameters":{"id":454,"nodeType":"ParameterList","parameters":[],"src":"643:2:2"},"returnParameters":{"id":457,"nodeType":"ParameterList","parameters":[{"constant":false,"id":456,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":461,"src":"667:4:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":455,"name":"uint","nodeType":"ElementaryTypeName","src":"667:4:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"666:6:2"},"scope":688,"src":"622:70:2","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":474,"nodeType":"Block","src":"746:42:2","statements":[{"expression":{"id":467,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"752:3:2","subExpression":{"id":466,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":402,"src":"752:1:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":468,"nodeType":"ExpressionStatement","src":"752:3:2"},{"expression":{"arguments":[{"hexValue":"66616c7365","id":470,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"769:5:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"id":471,"name":"reason","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":463,"src":"776:6:2","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":469,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"761:7:2","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":472,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"761:22:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":473,"nodeType":"ExpressionStatement","src":"761:22:2"}]},"functionSelector":"6f1fdc31","id":475,"implemented":true,"kind":"function","modifiers":[],"name":"revertsWith","nameLocation":"705:11:2","nodeType":"FunctionDefinition","parameters":{"id":464,"nodeType":"ParameterList","parameters":[{"constant":false,"id":463,"mutability":"mutable","name":"reason","nameLocation":"731:6:2","nodeType":"VariableDeclaration","scope":475,"src":"717:20:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":462,"name":"string","nodeType":"ElementaryTypeName","src":"717:6:2","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"716:22:2"},"returnParameters":{"id":465,"nodeType":"ParameterList","parameters":[],"src":"746:0:2"},"scope":688,"src":"696:92:2","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":485,"nodeType":"Block","src":"851:33:2","statements":[{"expression":{"arguments":[{"hexValue":"66616c7365","id":481,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"865:5:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"id":482,"name":"reason","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":477,"src":"872:6:2","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":480,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"857:7:2","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":483,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"857:22:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":484,"nodeType":"ExpressionStatement","src":"857:22:2"}]},"functionSelector":"467e3d37","id":486,"implemented":true,"kind":"function","modifiers":[],"name":"revertsWithView","nameLocation":"801:15:2","nodeType":"FunctionDefinition","parameters":{"id":478,"nodeType":"ParameterList","parameters":[{"constant":false,"id":477,"mutability":"mutable","name":"reason","nameLocation":"831:6:2","nodeType":"VariableDeclaration","scope":486,"src":"817:20:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":476,"name":"string","nodeType":"ElementaryTypeName","src":"817:6:2","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"816:22:2"},"returnParameters":{"id":479,"nodeType":"ParameterList","parameters":[],"src":"851:0:2"},"scope":688,"src":"792:92:2","stateMutability":"pure","virtual":false,"visibility":"public"},{"body":{"id":496,"nodeType":"Block","src":"927:34:2","statements":[{"expression":{"id":490,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"933:3:2","subExpression":{"id":489,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":402,"src":"933:1:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":491,"nodeType":"ExpressionStatement","src":"933:3:2"},{"expression":{"arguments":[{"hexValue":"66616c7365","id":493,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"950:5:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":492,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"942:7:2","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":494,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"942:14:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":495,"nodeType":"ExpressionStatement","src":"942:14:2"}]},"functionSelector":"1b4f3f3d","id":497,"implemented":true,"kind":"function","modifiers":[],"name":"revertsWithoutReason","nameLocation":"897:20:2","nodeType":"FunctionDefinition","parameters":{"id":487,"nodeType":"ParameterList","parameters":[],"src":"917:2:2"},"returnParameters":{"id":488,"nodeType":"ParameterList","parameters":[],"src":"927:0:2"},"scope":688,"src":"888:73:2","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":504,"nodeType":"Block","src":"1013:25:2","statements":[{"expression":{"arguments":[{"hexValue":"66616c7365","id":501,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1027:5:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":500,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1019:7:2","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":502,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1019:14:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":503,"nodeType":"ExpressionStatement","src":"1019:14:2"}]},"functionSelector":"58a1d1ed","id":505,"implemented":true,"kind":"function","modifiers":[],"name":"revertsWithoutReasonView","nameLocation":"974:24:2","nodeType":"FunctionDefinition","parameters":{"id":498,"nodeType":"ParameterList","parameters":[],"src":"998:2:2"},"returnParameters":{"id":499,"nodeType":"ParameterList","parameters":[],"src":"1013:0:2"},"scope":688,"src":"965:73:2","stateMutability":"pure","virtual":false,"visibility":"public"},{"body":{"id":515,"nodeType":"Block","src":"1072:33:2","statements":[{"expression":{"id":509,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"1078:3:2","subExpression":{"id":508,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":402,"src":"1078:1:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":510,"nodeType":"ExpressionStatement","src":"1078:3:2"},{"expression":{"arguments":[{"hexValue":"66616c7365","id":512,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1094:5:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":511,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"1087:6:2","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":513,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1087:13:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":514,"nodeType":"ExpressionStatement","src":"1087:13:2"}]},"functionSelector":"b6bbe061","id":516,"implemented":true,"kind":"function","modifiers":[],"name":"panicAssert","nameLocation":"1051:11:2","nodeType":"FunctionDefinition","parameters":{"id":506,"nodeType":"ParameterList","parameters":[],"src":"1062:2:2"},"returnParameters":{"id":507,"nodeType":"ParameterList","parameters":[],"src":"1072:0:2"},"scope":688,"src":"1042:63:2","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":523,"nodeType":"Block","src":"1148:24:2","statements":[{"expression":{"arguments":[{"hexValue":"66616c7365","id":520,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1161:5:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":519,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"1154:6:2","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":521,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1154:13:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":522,"nodeType":"ExpressionStatement","src":"1154:13:2"}]},"functionSelector":"5b94e31e","id":524,"implemented":true,"kind":"function","modifiers":[],"name":"panicAssertView","nameLocation":"1118:15:2","nodeType":"FunctionDefinition","parameters":{"id":517,"nodeType":"ParameterList","parameters":[],"src":"1133:2:2"},"returnParameters":{"id":518,"nodeType":"ParameterList","parameters":[],"src":"1148:0:2"},"scope":688,"src":"1109:63:2","stateMutability":"pure","virtual":false,"visibility":"public"},{"body":{"id":533,"nodeType":"Block","src":"1220:44:2","statements":[{"expression":{"id":528,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"1226:3:2","subExpression":{"id":527,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":402,"src":"1226:1:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":529,"nodeType":"ExpressionStatement","src":"1226:3:2"},{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":530,"name":"SomeCustomError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":414,"src":"1242:15:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":531,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1242:17:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":532,"nodeType":"RevertStatement","src":"1235:24:2"}]},"functionSelector":"bad92aa9","id":534,"implemented":true,"kind":"function","modifiers":[],"name":"revertWithSomeCustomError","nameLocation":"1185:25:2","nodeType":"FunctionDefinition","parameters":{"id":525,"nodeType":"ParameterList","parameters":[],"src":"1210:2:2"},"returnParameters":{"id":526,"nodeType":"ParameterList","parameters":[],"src":"1220:0:2"},"scope":688,"src":"1176:88:2","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":540,"nodeType":"Block","src":"1321:35:2","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":537,"name":"SomeCustomError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":414,"src":"1334:15:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":538,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1334:17:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":539,"nodeType":"RevertStatement","src":"1327:24:2"}]},"functionSelector":"ffb4746b","id":541,"implemented":true,"kind":"function","modifiers":[],"name":"revertWithSomeCustomErrorView","nameLocation":"1277:29:2","nodeType":"FunctionDefinition","parameters":{"id":535,"nodeType":"ParameterList","parameters":[],"src":"1306:2:2"},"returnParameters":{"id":536,"nodeType":"ParameterList","parameters":[],"src":"1321:0:2"},"scope":688,"src":"1268:88:2","stateMutability":"pure","virtual":false,"visibility":"public"},{"body":{"id":550,"nodeType":"Block","src":"1407:47:2","statements":[{"expression":{"id":545,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"1413:3:2","subExpression":{"id":544,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":402,"src":"1413:1:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":546,"nodeType":"ExpressionStatement","src":"1413:3:2"},{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":547,"name":"AnotherCustomError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":416,"src":"1429:18:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":548,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1429:20:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":549,"nodeType":"RevertStatement","src":"1422:27:2"}]},"functionSelector":"4b5bbf6a","id":551,"implemented":true,"kind":"function","modifiers":[],"name":"revertWithAnotherCustomError","nameLocation":"1369:28:2","nodeType":"FunctionDefinition","parameters":{"id":542,"nodeType":"ParameterList","parameters":[],"src":"1397:2:2"},"returnParameters":{"id":543,"nodeType":"ParameterList","parameters":[],"src":"1407:0:2"},"scope":688,"src":"1360:94:2","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":557,"nodeType":"Block","src":"1514:38:2","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":554,"name":"AnotherCustomError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":416,"src":"1527:18:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":555,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1527:20:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":556,"nodeType":"RevertStatement","src":"1520:27:2"}]},"functionSelector":"aac014e0","id":558,"implemented":true,"kind":"function","modifiers":[],"name":"revertWithAnotherCustomErrorView","nameLocation":"1467:32:2","nodeType":"FunctionDefinition","parameters":{"id":552,"nodeType":"ParameterList","parameters":[],"src":"1499:2:2"},"returnParameters":{"id":553,"nodeType":"ParameterList","parameters":[],"src":"1514:0:2"},"scope":688,"src":"1458:94:2","stateMutability":"pure","virtual":false,"visibility":"public"},{"body":{"id":569,"nodeType":"Block","src":"1611:69:2","statements":[{"expression":{"id":562,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"1617:3:2","subExpression":{"id":561,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":402,"src":"1617:1:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":563,"nodeType":"ExpressionStatement","src":"1617:3:2"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":564,"name":"anotherContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":407,"src":"1626:15:2","typeDescriptions":{"typeIdentifier":"t_contract$_AnotherMatchersContract_$710","typeString":"contract AnotherMatchersContract"}},"id":566,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"revertWithYetAnotherCustomError","nodeType":"MemberAccess","referencedDeclaration":702,"src":"1626:47:2","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$__$returns$__$","typeString":"function () external"}},"id":567,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1626:49:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":568,"nodeType":"ExpressionStatement","src":"1626:49:2"}]},"functionSelector":"772f243a","id":570,"implemented":true,"kind":"function","modifiers":[],"name":"revertWithAnotherContractCustomError","nameLocation":"1565:36:2","nodeType":"FunctionDefinition","parameters":{"id":559,"nodeType":"ParameterList","parameters":[],"src":"1601:2:2"},"returnParameters":{"id":560,"nodeType":"ParameterList","parameters":[],"src":"1611:0:2"},"scope":688,"src":"1556:124:2","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":578,"nodeType":"Block","src":"1748:64:2","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":573,"name":"anotherContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":407,"src":"1754:15:2","typeDescriptions":{"typeIdentifier":"t_contract$_AnotherMatchersContract_$710","typeString":"contract AnotherMatchersContract"}},"id":575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"revertWithYetAnotherCustomErrorView","nodeType":"MemberAccess","referencedDeclaration":709,"src":"1754:51:2","typeDescriptions":{"typeIdentifier":"t_function_external_pure$__$returns$__$","typeString":"function () pure external"}},"id":576,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1754:53:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":577,"nodeType":"ExpressionStatement","src":"1754:53:2"}]},"functionSelector":"622051f1","id":579,"implemented":true,"kind":"function","modifiers":[],"name":"revertWithAnotherContractCustomErrorView","nameLocation":"1693:40:2","nodeType":"FunctionDefinition","parameters":{"id":571,"nodeType":"ParameterList","parameters":[],"src":"1733:2:2"},"returnParameters":{"id":572,"nodeType":"ParameterList","parameters":[],"src":"1748:0:2"},"scope":688,"src":"1684:128:2","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":591,"nodeType":"Block","src":"1870:49:2","statements":[{"expression":{"id":585,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"1876:3:2","subExpression":{"id":584,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":402,"src":"1876:1:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":586,"nodeType":"ExpressionStatement","src":"1876:3:2"},{"errorCall":{"arguments":[{"id":588,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":581,"src":"1912:1:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":587,"name":"CustomErrorWithUint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":424,"src":"1892:19:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":589,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1892:22:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":590,"nodeType":"RevertStatement","src":"1885:29:2"}]},"functionSelector":"73d2ea85","id":592,"implemented":true,"kind":"function","modifiers":[],"name":"revertWithCustomErrorWithUint","nameLocation":"1825:29:2","nodeType":"FunctionDefinition","parameters":{"id":582,"nodeType":"ParameterList","parameters":[{"constant":false,"id":581,"mutability":"mutable","name":"n","nameLocation":"1860:1:2","nodeType":"VariableDeclaration","scope":592,"src":"1855:6:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":580,"name":"uint","nodeType":"ElementaryTypeName","src":"1855:4:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1854:8:2"},"returnParameters":{"id":583,"nodeType":"ParameterList","parameters":[],"src":"1870:0:2"},"scope":688,"src":"1816:103:2","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":601,"nodeType":"Block","src":"1986:40:2","statements":[{"errorCall":{"arguments":[{"id":598,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":594,"src":"2019:1:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":597,"name":"CustomErrorWithUint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":424,"src":"1999:19:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":599,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1999:22:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":600,"nodeType":"RevertStatement","src":"1992:29:2"}]},"functionSelector":"7c3cb0af","id":602,"implemented":true,"kind":"function","modifiers":[],"name":"revertWithCustomErrorWithUintView","nameLocation":"1932:33:2","nodeType":"FunctionDefinition","parameters":{"id":595,"nodeType":"ParameterList","parameters":[{"constant":false,"id":594,"mutability":"mutable","name":"n","nameLocation":"1971:1:2","nodeType":"VariableDeclaration","scope":602,"src":"1966:6:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":593,"name":"uint","nodeType":"ElementaryTypeName","src":"1966:4:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1965:8:2"},"returnParameters":{"id":596,"nodeType":"ParameterList","parameters":[],"src":"1986:0:2"},"scope":688,"src":"1923:103:2","stateMutability":"pure","virtual":false,"visibility":"public"},{"body":{"id":614,"nodeType":"Block","src":"2082:48:2","statements":[{"expression":{"id":608,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"2088:3:2","subExpression":{"id":607,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":402,"src":"2088:1:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":609,"nodeType":"ExpressionStatement","src":"2088:3:2"},{"errorCall":{"arguments":[{"id":611,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":604,"src":"2123:1:2","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":610,"name":"CustomErrorWithInt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":420,"src":"2104:18:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_int256_$returns$__$","typeString":"function (int256) pure"}},"id":612,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2104:21:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":613,"nodeType":"RevertStatement","src":"2097:28:2"}]},"functionSelector":"8f933030","id":615,"implemented":true,"kind":"function","modifiers":[],"name":"revertWithCustomErrorWithInt","nameLocation":"2039:28:2","nodeType":"FunctionDefinition","parameters":{"id":605,"nodeType":"ParameterList","parameters":[{"constant":false,"id":604,"mutability":"mutable","name":"i","nameLocation":"2072:1:2","nodeType":"VariableDeclaration","scope":615,"src":"2068:5:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":603,"name":"int","nodeType":"ElementaryTypeName","src":"2068:3:2","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"2067:7:2"},"returnParameters":{"id":606,"nodeType":"ParameterList","parameters":[],"src":"2082:0:2"},"scope":688,"src":"2030:100:2","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":624,"nodeType":"Block","src":"2195:39:2","statements":[{"errorCall":{"arguments":[{"id":621,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":617,"src":"2227:1:2","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":620,"name":"CustomErrorWithInt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":420,"src":"2208:18:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_int256_$returns$__$","typeString":"function (int256) pure"}},"id":622,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2208:21:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":623,"nodeType":"RevertStatement","src":"2201:28:2"}]},"functionSelector":"47c56769","id":625,"implemented":true,"kind":"function","modifiers":[],"name":"revertWithCustomErrorWithIntView","nameLocation":"2143:32:2","nodeType":"FunctionDefinition","parameters":{"id":618,"nodeType":"ParameterList","parameters":[{"constant":false,"id":617,"mutability":"mutable","name":"i","nameLocation":"2180:1:2","nodeType":"VariableDeclaration","scope":625,"src":"2176:5:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":616,"name":"int","nodeType":"ElementaryTypeName","src":"2176:3:2","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"2175:7:2"},"returnParameters":{"id":619,"nodeType":"ParameterList","parameters":[],"src":"2195:0:2"},"scope":688,"src":"2134:100:2","stateMutability":"pure","virtual":false,"visibility":"public"},{"body":{"id":640,"nodeType":"Block","src":"2318:61:2","statements":[{"expression":{"id":633,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"2324:3:2","subExpression":{"id":632,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":402,"src":"2324:1:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":634,"nodeType":"ExpressionStatement","src":"2324:3:2"},{"errorCall":{"arguments":[{"id":636,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":627,"src":"2369:1:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":637,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":629,"src":"2372:1:2","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":635,"name":"CustomErrorWithUintAndString","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":430,"src":"2340:28:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_string_memory_ptr_$returns$__$","typeString":"function (uint256,string memory) pure"}},"id":638,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2340:34:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":639,"nodeType":"RevertStatement","src":"2333:41:2"}]},"functionSelector":"fe276a34","id":641,"implemented":true,"kind":"function","modifiers":[],"name":"revertWithCustomErrorWithUintAndString","nameLocation":"2247:38:2","nodeType":"FunctionDefinition","parameters":{"id":630,"nodeType":"ParameterList","parameters":[{"constant":false,"id":627,"mutability":"mutable","name":"n","nameLocation":"2291:1:2","nodeType":"VariableDeclaration","scope":641,"src":"2286:6:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":626,"name":"uint","nodeType":"ElementaryTypeName","src":"2286:4:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":629,"mutability":"mutable","name":"s","nameLocation":"2308:1:2","nodeType":"VariableDeclaration","scope":641,"src":"2294:15:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":628,"name":"string","nodeType":"ElementaryTypeName","src":"2294:6:2","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2285:25:2"},"returnParameters":{"id":631,"nodeType":"ParameterList","parameters":[],"src":"2318:0:2"},"scope":688,"src":"2238:141:2","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":653,"nodeType":"Block","src":"2472:52:2","statements":[{"errorCall":{"arguments":[{"id":649,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":643,"src":"2514:1:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":650,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":645,"src":"2517:1:2","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":648,"name":"CustomErrorWithUintAndString","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":430,"src":"2485:28:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_string_memory_ptr_$returns$__$","typeString":"function (uint256,string memory) pure"}},"id":651,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2485:34:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":652,"nodeType":"RevertStatement","src":"2478:41:2"}]},"functionSelector":"3ba4178b","id":654,"implemented":true,"kind":"function","modifiers":[],"name":"revertWithCustomErrorWithUintAndStringView","nameLocation":"2392:42:2","nodeType":"FunctionDefinition","parameters":{"id":646,"nodeType":"ParameterList","parameters":[{"constant":false,"id":643,"mutability":"mutable","name":"n","nameLocation":"2440:1:2","nodeType":"VariableDeclaration","scope":654,"src":"2435:6:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":642,"name":"uint","nodeType":"ElementaryTypeName","src":"2435:4:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":645,"mutability":"mutable","name":"s","nameLocation":"2457:1:2","nodeType":"VariableDeclaration","scope":654,"src":"2443:15:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":644,"name":"string","nodeType":"ElementaryTypeName","src":"2443:6:2","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2434:25:2"},"returnParameters":{"id":647,"nodeType":"ParameterList","parameters":[],"src":"2472:0:2"},"scope":688,"src":"2383:141:2","stateMutability":"pure","virtual":false,"visibility":"public"},{"body":{"id":671,"nodeType":"Block","src":"2590:58:2","statements":[{"expression":{"id":662,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"2596:3:2","subExpression":{"id":661,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":402,"src":"2596:1:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":663,"nodeType":"ExpressionStatement","src":"2596:3:2"},{"errorCall":{"arguments":[{"arguments":[{"id":666,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":656,"src":"2637:1:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":667,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":658,"src":"2640:1:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":665,"name":"Pair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":412,"src":"2632:4:2","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Pair_$412_storage_ptr_$","typeString":"type(struct Matchers.Pair storage pointer)"}},"id":668,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2632:10:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Pair_$412_memory_ptr","typeString":"struct Matchers.Pair memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Pair_$412_memory_ptr","typeString":"struct Matchers.Pair memory"}],"id":664,"name":"CustomErrorWithPair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":435,"src":"2612:19:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_struct$_Pair_$412_memory_ptr_$returns$__$","typeString":"function (struct Matchers.Pair memory) pure"}},"id":669,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2612:31:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":670,"nodeType":"RevertStatement","src":"2605:38:2"}]},"functionSelector":"e0a03812","id":672,"implemented":true,"kind":"function","modifiers":[],"name":"revertWithCustomErrorWithPair","nameLocation":"2537:29:2","nodeType":"FunctionDefinition","parameters":{"id":659,"nodeType":"ParameterList","parameters":[{"constant":false,"id":656,"mutability":"mutable","name":"a","nameLocation":"2572:1:2","nodeType":"VariableDeclaration","scope":672,"src":"2567:6:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":655,"name":"uint","nodeType":"ElementaryTypeName","src":"2567:4:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":658,"mutability":"mutable","name":"b","nameLocation":"2580:1:2","nodeType":"VariableDeclaration","scope":672,"src":"2575:6:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":657,"name":"uint","nodeType":"ElementaryTypeName","src":"2575:4:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2566:16:2"},"returnParameters":{"id":660,"nodeType":"ParameterList","parameters":[],"src":"2590:0:2"},"scope":688,"src":"2528:120:2","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":686,"nodeType":"Block","src":"2723:49:2","statements":[{"errorCall":{"arguments":[{"arguments":[{"id":681,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":674,"src":"2761:1:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":682,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":676,"src":"2764:1:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":680,"name":"Pair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":412,"src":"2756:4:2","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Pair_$412_storage_ptr_$","typeString":"type(struct Matchers.Pair storage pointer)"}},"id":683,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2756:10:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Pair_$412_memory_ptr","typeString":"struct Matchers.Pair memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Pair_$412_memory_ptr","typeString":"struct Matchers.Pair memory"}],"id":679,"name":"CustomErrorWithPair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":435,"src":"2736:19:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_struct$_Pair_$412_memory_ptr_$returns$__$","typeString":"function (struct Matchers.Pair memory) pure"}},"id":684,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2736:31:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":685,"nodeType":"RevertStatement","src":"2729:38:2"}]},"functionSelector":"1f542cf3","id":687,"implemented":true,"kind":"function","modifiers":[],"name":"revertWithCustomErrorWithPairView","nameLocation":"2661:33:2","nodeType":"FunctionDefinition","parameters":{"id":677,"nodeType":"ParameterList","parameters":[{"constant":false,"id":674,"mutability":"mutable","name":"a","nameLocation":"2700:1:2","nodeType":"VariableDeclaration","scope":687,"src":"2695:6:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":673,"name":"uint","nodeType":"ElementaryTypeName","src":"2695:4:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":676,"mutability":"mutable","name":"b","nameLocation":"2708:1:2","nodeType":"VariableDeclaration","scope":687,"src":"2703:6:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":675,"name":"uint","nodeType":"ElementaryTypeName","src":"2703:4:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2694:16:2"},"returnParameters":{"id":678,"nodeType":"ParameterList","parameters":[],"src":"2723:0:2"},"scope":688,"src":"2652:120:2","stateMutability":"pure","virtual":false,"visibility":"public"}],"scope":711,"src":"65:2709:2","usedErrors":[414,416,420,424,430,435]},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":710,"linearizedBaseContracts":[710],"name":"AnotherMatchersContract","nameLocation":"2785:23:2","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":690,"mutability":"mutable","name":"x","nameLocation":"2818:1:2","nodeType":"VariableDeclaration","scope":710,"src":"2813:6:2","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":689,"name":"uint","nodeType":"ElementaryTypeName","src":"2813:4:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"id":692,"name":"YetAnotherCustomError","nameLocation":"2830:21:2","nodeType":"ErrorDefinition","parameters":{"id":691,"nodeType":"ParameterList","parameters":[],"src":"2851:2:2"},"src":"2824:30:2"},{"body":{"id":701,"nodeType":"Block","src":"2908:50:2","statements":[{"expression":{"id":696,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"2914:3:2","subExpression":{"id":695,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":690,"src":"2914:1:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":697,"nodeType":"ExpressionStatement","src":"2914:3:2"},{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":698,"name":"YetAnotherCustomError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":692,"src":"2930:21:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":699,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2930:23:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":700,"nodeType":"RevertStatement","src":"2923:30:2"}]},"functionSelector":"4b2bd7e9","id":702,"implemented":true,"kind":"function","modifiers":[],"name":"revertWithYetAnotherCustomError","nameLocation":"2867:31:2","nodeType":"FunctionDefinition","parameters":{"id":693,"nodeType":"ParameterList","parameters":[],"src":"2898:2:2"},"returnParameters":{"id":694,"nodeType":"ParameterList","parameters":[],"src":"2908:0:2"},"scope":710,"src":"2858:100:2","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":708,"nodeType":"Block","src":"3021:41:2","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":705,"name":"YetAnotherCustomError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":692,"src":"3034:21:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":706,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3034:23:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":707,"nodeType":"RevertStatement","src":"3027:30:2"}]},"functionSelector":"40d83b24","id":709,"implemented":true,"kind":"function","modifiers":[],"name":"revertWithYetAnotherCustomErrorView","nameLocation":"2971:35:2","nodeType":"FunctionDefinition","parameters":{"id":703,"nodeType":"ParameterList","parameters":[],"src":"3006:2:2"},"returnParameters":{"id":704,"nodeType":"ParameterList","parameters":[],"src":"3021:0:2"},"scope":710,"src":"2962:100:2","stateMutability":"pure","virtual":false,"visibility":"public"}],"scope":711,"src":"2776:288:2","usedErrors":[692]}],"src":"40:3025:2"},"id":2},"contracts/Token.sol":{"ast":{"absolutePath":"contracts/Token.sol","exportedSymbols":{"MockToken":[873],"NotAToken":[874],"TokenWithOnlyName":[864],"TokenWithoutNameNorSymbol":[858]},"id":875,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":712,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"32:23:3"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":858,"linearizedBaseContracts":[858],"name":"TokenWithoutNameNorSymbol","nameLocation":"66:25:3","nodeType":"ContractDefinition","nodes":[{"constant":false,"functionSelector":"313ce567","id":715,"mutability":"mutable","name":"decimals","nameLocation":"108:8:3","nodeType":"VariableDeclaration","scope":858,"src":"96:24:3","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":713,"name":"uint","nodeType":"ElementaryTypeName","src":"96:4:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"31","id":714,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"119:1:3","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"visibility":"public"},{"constant":false,"functionSelector":"18160ddd","id":717,"mutability":"mutable","name":"totalSupply","nameLocation":"137:11:3","nodeType":"VariableDeclaration","scope":858,"src":"125:23:3","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":716,"name":"uint","nodeType":"ElementaryTypeName","src":"125:4:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"constant":false,"functionSelector":"70a08231","id":721,"mutability":"mutable","name":"balanceOf","nameLocation":"184:9:3","nodeType":"VariableDeclaration","scope":858,"src":"152:41:3","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":720,"keyType":{"id":718,"name":"address","nodeType":"ElementaryTypeName","src":"160:7:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"152:24:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueType":{"id":719,"name":"uint","nodeType":"ElementaryTypeName","src":"171:4:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"public"},{"constant":false,"id":727,"mutability":"mutable","name":"allowances","nameLocation":"242:10:3","nodeType":"VariableDeclaration","scope":858,"src":"197:55:3","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"typeName":{"id":726,"keyType":{"id":722,"name":"address","nodeType":"ElementaryTypeName","src":"205:7:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"197:44:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"valueType":{"id":725,"keyType":{"id":723,"name":"address","nodeType":"ElementaryTypeName","src":"224:7:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"216:24:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueType":{"id":724,"name":"uint","nodeType":"ElementaryTypeName","src":"235:4:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}}},"visibility":"internal"},{"body":{"id":741,"nodeType":"Block","src":"272:79:3","statements":[{"expression":{"id":732,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":730,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":717,"src":"278:11:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"315f3030305f3030305f303030","id":731,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"292:13:3","typeDescriptions":{"typeIdentifier":"t_rational_1000000000_by_1","typeString":"int_const 1000000000"},"value":"1_000_000_000"},"src":"278:27:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":733,"nodeType":"ExpressionStatement","src":"278:27:3"},{"expression":{"id":739,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":734,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":721,"src":"311:9:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":737,"indexExpression":{"expression":{"id":735,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"321:3:3","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":736,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"321:10:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"311:21:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":738,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":717,"src":"335:11:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"311:35:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":740,"nodeType":"ExpressionStatement","src":"311:35:3"}]},"id":742,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":728,"nodeType":"ParameterList","parameters":[],"src":"269:2:3"},"returnParameters":{"id":729,"nodeType":"ParameterList","parameters":[],"src":"272:0:3"},"scope":858,"src":"257:94:3","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":773,"nodeType":"Block","src":"419:141:3","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":754,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":752,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":746,"src":"433:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":753,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"441:1:3","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"433:9:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5472616e736665727265642076616c7565206973207a65726f","id":755,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"444:27:3","typeDescriptions":{"typeIdentifier":"t_stringliteral_4ca3cd75a1831a94a24913bfd2c9b9d35acbb11ac3447f65bb0682cf14f63f5c","typeString":"literal_string \"Transferred value is zero\""},"value":"Transferred value is zero"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_4ca3cd75a1831a94a24913bfd2c9b9d35acbb11ac3447f65bb0682cf14f63f5c","typeString":"literal_string \"Transferred value is zero\""}],"id":751,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"425:7:3","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":756,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"425:47:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":757,"nodeType":"ExpressionStatement","src":"425:47:3"},{"expression":{"id":763,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":758,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":721,"src":"479:9:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":761,"indexExpression":{"expression":{"id":759,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"489:3:3","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":760,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"489:10:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"479:21:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":762,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":746,"src":"504:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"479:30:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":764,"nodeType":"ExpressionStatement","src":"479:30:3"},{"expression":{"id":769,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":765,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":721,"src":"515:9:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":767,"indexExpression":{"id":766,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":744,"src":"525:2:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"515:13:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":768,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":746,"src":"532:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"515:22:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":770,"nodeType":"ExpressionStatement","src":"515:22:3"},{"expression":{"hexValue":"74727565","id":771,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"551:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":750,"id":772,"nodeType":"Return","src":"544:11:3"}]},"functionSelector":"a9059cbb","id":774,"implemented":true,"kind":"function","modifiers":[],"name":"transfer","nameLocation":"364:8:3","nodeType":"FunctionDefinition","parameters":{"id":747,"nodeType":"ParameterList","parameters":[{"constant":false,"id":744,"mutability":"mutable","name":"to","nameLocation":"381:2:3","nodeType":"VariableDeclaration","scope":774,"src":"373:10:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":743,"name":"address","nodeType":"ElementaryTypeName","src":"373:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":746,"mutability":"mutable","name":"value","nameLocation":"390:5:3","nodeType":"VariableDeclaration","scope":774,"src":"385:10:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":745,"name":"uint","nodeType":"ElementaryTypeName","src":"385:4:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"372:24:3"},"returnParameters":{"id":750,"nodeType":"ParameterList","parameters":[{"constant":false,"id":749,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":774,"src":"413:4:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":748,"name":"bool","nodeType":"ElementaryTypeName","src":"413:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"412:6:3"},"scope":858,"src":"355:205:3","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":789,"nodeType":"Block","src":"655:44:3","statements":[{"expression":{"baseExpression":{"baseExpression":{"id":783,"name":"allowances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":727,"src":"668:10:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":785,"indexExpression":{"id":784,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":776,"src":"679:5:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"668:17:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":787,"indexExpression":{"id":786,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":778,"src":"686:7:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"668:26:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":782,"id":788,"nodeType":"Return","src":"661:33:3"}]},"functionSelector":"dd62ed3e","id":790,"implemented":true,"kind":"function","modifiers":[],"name":"allowance","nameLocation":"573:9:3","nodeType":"FunctionDefinition","parameters":{"id":779,"nodeType":"ParameterList","parameters":[{"constant":false,"id":776,"mutability":"mutable","name":"owner","nameLocation":"591:5:3","nodeType":"VariableDeclaration","scope":790,"src":"583:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":775,"name":"address","nodeType":"ElementaryTypeName","src":"583:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":778,"mutability":"mutable","name":"spender","nameLocation":"606:7:3","nodeType":"VariableDeclaration","scope":790,"src":"598:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":777,"name":"address","nodeType":"ElementaryTypeName","src":"598:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"582:32:3"},"returnParameters":{"id":782,"nodeType":"ParameterList","parameters":[{"constant":false,"id":781,"mutability":"mutable","name":"remaining","nameLocation":"644:9:3","nodeType":"VariableDeclaration","scope":790,"src":"636:17:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":780,"name":"uint256","nodeType":"ElementaryTypeName","src":"636:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"635:19:3"},"scope":858,"src":"564:135:3","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":810,"nodeType":"Block","src":"782:67:3","statements":[{"expression":{"id":806,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":799,"name":"allowances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":727,"src":"788:10:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":803,"indexExpression":{"expression":{"id":800,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"799:3:3","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":801,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"799:10:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"788:22:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":804,"indexExpression":{"id":802,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":792,"src":"811:7:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"788:31:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":805,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":794,"src":"822:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"788:39:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":807,"nodeType":"ExpressionStatement","src":"788:39:3"},{"expression":{"hexValue":"74727565","id":808,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"840:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":798,"id":809,"nodeType":"Return","src":"833:11:3"}]},"functionSelector":"095ea7b3","id":811,"implemented":true,"kind":"function","modifiers":[],"name":"approve","nameLocation":"712:7:3","nodeType":"FunctionDefinition","parameters":{"id":795,"nodeType":"ParameterList","parameters":[{"constant":false,"id":792,"mutability":"mutable","name":"spender","nameLocation":"728:7:3","nodeType":"VariableDeclaration","scope":811,"src":"720:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":791,"name":"address","nodeType":"ElementaryTypeName","src":"720:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":794,"mutability":"mutable","name":"value","nameLocation":"745:5:3","nodeType":"VariableDeclaration","scope":811,"src":"737:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":793,"name":"uint256","nodeType":"ElementaryTypeName","src":"737:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"719:32:3"},"returnParameters":{"id":798,"nodeType":"ParameterList","parameters":[{"constant":false,"id":797,"mutability":"mutable","name":"success","nameLocation":"773:7:3","nodeType":"VariableDeclaration","scope":811,"src":"768:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":796,"name":"bool","nodeType":"ElementaryTypeName","src":"768:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"767:14:3"},"scope":858,"src":"703:146:3","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":856,"nodeType":"Block","src":"938:202:3","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":829,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":824,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":813,"src":"962:4:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":825,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"968:3:3","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":826,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"968:10:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":823,"name":"allowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":790,"src":"952:9:3","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view returns (uint256)"}},"id":827,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"952:27:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":828,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":817,"src":"983:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"952:36:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e73756666696369656e7420616c6c6f77616e6365","id":830,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"990:24:3","typeDescriptions":{"typeIdentifier":"t_stringliteral_45e3d26e36c3151c7f92a1eee9add9658cbb8e14605ee2452ec007389b9744bc","typeString":"literal_string \"Insufficient allowance\""},"value":"Insufficient allowance"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_45e3d26e36c3151c7f92a1eee9add9658cbb8e14605ee2452ec007389b9744bc","typeString":"literal_string \"Insufficient allowance\""}],"id":822,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"944:7:3","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":831,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"944:71:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":832,"nodeType":"ExpressionStatement","src":"944:71:3"},{"expression":{"id":840,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":833,"name":"allowances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":727,"src":"1022:10:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":837,"indexExpression":{"id":834,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":813,"src":"1033:4:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1022:16:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":838,"indexExpression":{"expression":{"id":835,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1039:3:3","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":836,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1039:10:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1022:28:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":839,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":817,"src":"1054:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1022:37:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":841,"nodeType":"ExpressionStatement","src":"1022:37:3"},{"expression":{"id":846,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":842,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":721,"src":"1065:9:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":844,"indexExpression":{"id":843,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":813,"src":"1075:4:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1065:15:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":845,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":817,"src":"1084:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1065:24:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":847,"nodeType":"ExpressionStatement","src":"1065:24:3"},{"expression":{"id":852,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":848,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":721,"src":"1095:9:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":850,"indexExpression":{"id":849,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":815,"src":"1105:2:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1095:13:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":851,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":817,"src":"1112:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1095:22:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":853,"nodeType":"ExpressionStatement","src":"1095:22:3"},{"expression":{"hexValue":"74727565","id":854,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1131:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":821,"id":855,"nodeType":"Return","src":"1124:11:3"}]},"functionSelector":"23b872dd","id":857,"implemented":true,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"862:12:3","nodeType":"FunctionDefinition","parameters":{"id":818,"nodeType":"ParameterList","parameters":[{"constant":false,"id":813,"mutability":"mutable","name":"from","nameLocation":"883:4:3","nodeType":"VariableDeclaration","scope":857,"src":"875:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":812,"name":"address","nodeType":"ElementaryTypeName","src":"875:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":815,"mutability":"mutable","name":"to","nameLocation":"897:2:3","nodeType":"VariableDeclaration","scope":857,"src":"889:10:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":814,"name":"address","nodeType":"ElementaryTypeName","src":"889:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":817,"mutability":"mutable","name":"value","nameLocation":"909:5:3","nodeType":"VariableDeclaration","scope":857,"src":"901:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":816,"name":"uint256","nodeType":"ElementaryTypeName","src":"901:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"874:41:3"},"returnParameters":{"id":821,"nodeType":"ParameterList","parameters":[{"constant":false,"id":820,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":857,"src":"932:4:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":819,"name":"bool","nodeType":"ElementaryTypeName","src":"932:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"931:6:3"},"scope":858,"src":"853:287:3","stateMutability":"nonpayable","virtual":false,"visibility":"public"}],"scope":875,"src":"57:1085:3","usedErrors":[]},{"abstract":false,"baseContracts":[{"baseName":{"id":859,"name":"TokenWithoutNameNorSymbol","nodeType":"IdentifierPath","referencedDeclaration":858,"src":"1174:25:3"},"id":860,"nodeType":"InheritanceSpecifier","src":"1174:25:3"}],"contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":864,"linearizedBaseContracts":[864,858],"name":"TokenWithOnlyName","nameLocation":"1153:17:3","nodeType":"ContractDefinition","nodes":[{"constant":false,"functionSelector":"06fdde03","id":863,"mutability":"mutable","name":"name","nameLocation":"1218:4:3","nodeType":"VariableDeclaration","scope":864,"src":"1204:32:3","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":861,"name":"string","nodeType":"ElementaryTypeName","src":"1204:6:3","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"4d6f636b546f6b656e","id":862,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1225:11:3","typeDescriptions":{"typeIdentifier":"t_stringliteral_59d91acf1a517d81ad15edcf2fd578e448883bcd506756a542295cb8c1c1be7e","typeString":"literal_string \"MockToken\""},"value":"MockToken"},"visibility":"public"}],"scope":875,"src":"1144:95:3","usedErrors":[]},{"abstract":false,"baseContracts":[{"baseName":{"id":865,"name":"TokenWithoutNameNorSymbol","nodeType":"IdentifierPath","referencedDeclaration":858,"src":"1263:25:3"},"id":866,"nodeType":"InheritanceSpecifier","src":"1263:25:3"}],"contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":873,"linearizedBaseContracts":[873,858],"name":"MockToken","nameLocation":"1250:9:3","nodeType":"ContractDefinition","nodes":[{"constant":false,"functionSelector":"06fdde03","id":869,"mutability":"mutable","name":"name","nameLocation":"1307:4:3","nodeType":"VariableDeclaration","scope":873,"src":"1293:32:3","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":867,"name":"string","nodeType":"ElementaryTypeName","src":"1293:6:3","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"4d6f636b546f6b656e","id":868,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1314:11:3","typeDescriptions":{"typeIdentifier":"t_stringliteral_59d91acf1a517d81ad15edcf2fd578e448883bcd506756a542295cb8c1c1be7e","typeString":"literal_string \"MockToken\""},"value":"MockToken"},"visibility":"public"},{"constant":false,"functionSelector":"95d89b41","id":872,"mutability":"mutable","name":"symbol","nameLocation":"1343:6:3","nodeType":"VariableDeclaration","scope":873,"src":"1329:28:3","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":870,"name":"string","nodeType":"ElementaryTypeName","src":"1329:6:3","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"4d434b","id":871,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1352:5:3","typeDescriptions":{"typeIdentifier":"t_stringliteral_9c3aa7d11ecb9affb5001de98d930d23db7380c6f51732a92986229c98447bc4","typeString":"literal_string \"MCK\""},"value":"MCK"},"visibility":"public"}],"scope":875,"src":"1241:119:3","usedErrors":[]},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":874,"linearizedBaseContracts":[874],"name":"NotAToken","nameLocation":"1371:9:3","nodeType":"ContractDefinition","nodes":[],"scope":875,"src":"1362:21:3","usedErrors":[]}],"src":"32:1352:3"},"id":3}},"contracts":{"contracts/ChangeEtherBalance.sol":{"ChangeEtherBalance":{"abi":[{"inputs":[],"name":"returnHalf","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"transferTo","outputs":[],"stateMutability":"payable","type":"function"},{"stateMutability":"payable","type":"receive"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"608060405234801561001057600080fd5b50610225806100206000396000f3fe60806040526004361061002d5760003560e01c8063a03fa7e314610039578063b019946e1461005557610034565b3661003457005b600080fd5b610053600480360381019061004e9190610113565b61005f565b005b61005d6100a9565b005b8073ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f193505050501580156100a5573d6000803e3d6000fd5b5050565b3373ffffffffffffffffffffffffffffffffffffffff166108fc6002346100d0919061013c565b9081150290604051600060405180830381858888f193505050501580156100fb573d6000803e3d6000fd5b50565b60008135905061010d816101d8565b92915050565b60006020828403121561012557600080fd5b6000610133848285016100fe565b91505092915050565b60006101478261019f565b91506101528361019f565b925082610162576101616101a9565b5b828204905092915050565b60006101788261017f565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6101e18161016d565b81146101ec57600080fd5b5056fea26469706673582212208e553461507bae731d37afa0d5a2a7dae74de7a6eab682733425a78884ed60b364736f6c63430008040033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x225 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x2D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xA03FA7E3 EQ PUSH2 0x39 JUMPI DUP1 PUSH4 0xB019946E EQ PUSH2 0x55 JUMPI PUSH2 0x34 JUMP JUMPDEST CALLDATASIZE PUSH2 0x34 JUMPI STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x53 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x4E SWAP2 SWAP1 PUSH2 0x113 JUMP JUMPDEST PUSH2 0x5F JUMP JUMPDEST STOP JUMPDEST PUSH2 0x5D PUSH2 0xA9 JUMP JUMPDEST STOP JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8FC CALLVALUE 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 0xA5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8FC PUSH1 0x2 CALLVALUE PUSH2 0xD0 SWAP2 SWAP1 PUSH2 0x13C JUMP JUMPDEST 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 0xFB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x10D DUP2 PUSH2 0x1D8 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x125 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x133 DUP5 DUP3 DUP6 ADD PUSH2 0xFE JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x147 DUP3 PUSH2 0x19F JUMP JUMPDEST SWAP2 POP PUSH2 0x152 DUP4 PUSH2 0x19F JUMP JUMPDEST SWAP3 POP DUP3 PUSH2 0x162 JUMPI PUSH2 0x161 PUSH2 0x1A9 JUMP JUMPDEST JUMPDEST DUP3 DUP3 DIV SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x178 DUP3 PUSH2 0x17F 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 PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH2 0x1E1 DUP2 PUSH2 0x16D JUMP JUMPDEST DUP2 EQ PUSH2 0x1EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP15 SSTORE CALLVALUE PUSH2 0x507B 0xAE PUSH20 0x1D37AFA0D5A2A7DAE74DE7A6EAB682733425A788 DUP5 0xED PUSH1 0xB3 PUSH5 0x736F6C6343 STOP ADDMOD DIV STOP CALLER ","sourceMap":"57:255:0:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:1425:4","statements":[{"body":{"nodeType":"YulBlock","src":"59:87:4","statements":[{"nodeType":"YulAssignment","src":"69:29:4","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"91:6:4"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"78:12:4"},"nodeType":"YulFunctionCall","src":"78:20:4"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"69:5:4"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"134:5:4"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"107:26:4"},"nodeType":"YulFunctionCall","src":"107:33:4"},"nodeType":"YulExpressionStatement","src":"107:33:4"}]},"name":"abi_decode_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"37:6:4","type":""},{"name":"end","nodeType":"YulTypedName","src":"45:3:4","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"53:5:4","type":""}],"src":"7:139:4"},{"body":{"nodeType":"YulBlock","src":"218:196:4","statements":[{"body":{"nodeType":"YulBlock","src":"264:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"273:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"276:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"266:6:4"},"nodeType":"YulFunctionCall","src":"266:12:4"},"nodeType":"YulExpressionStatement","src":"266:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"239:7:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"248:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"235:3:4"},"nodeType":"YulFunctionCall","src":"235:23:4"},{"kind":"number","nodeType":"YulLiteral","src":"260:2:4","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"231:3:4"},"nodeType":"YulFunctionCall","src":"231:32:4"},"nodeType":"YulIf","src":"228:2:4"},{"nodeType":"YulBlock","src":"290:117:4","statements":[{"nodeType":"YulVariableDeclaration","src":"305:15:4","value":{"kind":"number","nodeType":"YulLiteral","src":"319:1:4","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"309:6:4","type":""}]},{"nodeType":"YulAssignment","src":"334:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"369:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"380:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"365:3:4"},"nodeType":"YulFunctionCall","src":"365:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"389:7:4"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"344:20:4"},"nodeType":"YulFunctionCall","src":"344:53:4"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"334:6:4"}]}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"188:9:4","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"199:7:4","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"211:6:4","type":""}],"src":"152:262:4"},{"body":{"nodeType":"YulBlock","src":"462:143:4","statements":[{"nodeType":"YulAssignment","src":"472:25:4","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"495:1:4"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"477:17:4"},"nodeType":"YulFunctionCall","src":"477:20:4"},"variableNames":[{"name":"x","nodeType":"YulIdentifier","src":"472:1:4"}]},{"nodeType":"YulAssignment","src":"506:25:4","value":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"529:1:4"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"511:17:4"},"nodeType":"YulFunctionCall","src":"511:20:4"},"variableNames":[{"name":"y","nodeType":"YulIdentifier","src":"506:1:4"}]},{"body":{"nodeType":"YulBlock","src":"553:22:4","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x12","nodeType":"YulIdentifier","src":"555:16:4"},"nodeType":"YulFunctionCall","src":"555:18:4"},"nodeType":"YulExpressionStatement","src":"555:18:4"}]},"condition":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"550:1:4"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"543:6:4"},"nodeType":"YulFunctionCall","src":"543:9:4"},"nodeType":"YulIf","src":"540:2:4"},{"nodeType":"YulAssignment","src":"585:14:4","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"594:1:4"},{"name":"y","nodeType":"YulIdentifier","src":"597:1:4"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"590:3:4"},"nodeType":"YulFunctionCall","src":"590:9:4"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"585:1:4"}]}]},"name":"checked_div_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"451:1:4","type":""},{"name":"y","nodeType":"YulTypedName","src":"454:1:4","type":""}],"returnVariables":[{"name":"r","nodeType":"YulTypedName","src":"460:1:4","type":""}],"src":"420:185:4"},{"body":{"nodeType":"YulBlock","src":"656:51:4","statements":[{"nodeType":"YulAssignment","src":"666:35:4","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"695:5:4"}],"functionName":{"name":"cleanup_t_uint160","nodeType":"YulIdentifier","src":"677:17:4"},"nodeType":"YulFunctionCall","src":"677:24:4"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"666:7:4"}]}]},"name":"cleanup_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"638:5:4","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"648:7:4","type":""}],"src":"611:96:4"},{"body":{"nodeType":"YulBlock","src":"758:81:4","statements":[{"nodeType":"YulAssignment","src":"768:65:4","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"783:5:4"},{"kind":"number","nodeType":"YulLiteral","src":"790:42:4","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"779:3:4"},"nodeType":"YulFunctionCall","src":"779:54:4"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"768:7:4"}]}]},"name":"cleanup_t_uint160","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"740:5:4","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"750:7:4","type":""}],"src":"713:126:4"},{"body":{"nodeType":"YulBlock","src":"890:32:4","statements":[{"nodeType":"YulAssignment","src":"900:16:4","value":{"name":"value","nodeType":"YulIdentifier","src":"911:5:4"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"900:7:4"}]}]},"name":"cleanup_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"872:5:4","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"882:7:4","type":""}],"src":"845:77:4"},{"body":{"nodeType":"YulBlock","src":"956:152:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"973:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"976:77:4","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"966:6:4"},"nodeType":"YulFunctionCall","src":"966:88:4"},"nodeType":"YulExpressionStatement","src":"966:88:4"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1070:1:4","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"1073:4:4","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1063:6:4"},"nodeType":"YulFunctionCall","src":"1063:15:4"},"nodeType":"YulExpressionStatement","src":"1063:15:4"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1094:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1097:4:4","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1087:6:4"},"nodeType":"YulFunctionCall","src":"1087:15:4"},"nodeType":"YulExpressionStatement","src":"1087:15:4"}]},"name":"panic_error_0x11","nodeType":"YulFunctionDefinition","src":"928:180:4"},{"body":{"nodeType":"YulBlock","src":"1142:152:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1159:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1162:77:4","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1152:6:4"},"nodeType":"YulFunctionCall","src":"1152:88:4"},"nodeType":"YulExpressionStatement","src":"1152:88:4"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1256:1:4","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"1259:4:4","type":"","value":"0x12"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1249:6:4"},"nodeType":"YulFunctionCall","src":"1249:15:4"},"nodeType":"YulExpressionStatement","src":"1249:15:4"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1280:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1283:4:4","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1273:6:4"},"nodeType":"YulFunctionCall","src":"1273:15:4"},"nodeType":"YulExpressionStatement","src":"1273:15:4"}]},"name":"panic_error_0x12","nodeType":"YulFunctionDefinition","src":"1114:180:4"},{"body":{"nodeType":"YulBlock","src":"1343:79:4","statements":[{"body":{"nodeType":"YulBlock","src":"1400:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1409:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1412:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1402:6:4"},"nodeType":"YulFunctionCall","src":"1402:12:4"},"nodeType":"YulExpressionStatement","src":"1402:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1366:5:4"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1391:5:4"}],"functionName":{"name":"cleanup_t_address","nodeType":"YulIdentifier","src":"1373:17:4"},"nodeType":"YulFunctionCall","src":"1373:24:4"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1363:2:4"},"nodeType":"YulFunctionCall","src":"1363:35:4"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1356:6:4"},"nodeType":"YulFunctionCall","src":"1356:43:4"},"nodeType":"YulIf","src":"1353:2:4"}]},"name":"validator_revert_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1336:5:4","type":""}],"src":"1300:122:4"}]},"contents":"{\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_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 checked_div_t_uint256(x, y) -> r {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n if iszero(y) { panic_error_0x12() }\n\n r := div(x, y)\n }\n\n function cleanup_t_address(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 panic_error_0x11() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n\n function panic_error_0x12() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x12)\n revert(0, 0x24)\n }\n\n function validator_revert_t_address(value) {\n if iszero(eq(value, cleanup_t_address(value))) { revert(0, 0) }\n }\n\n}\n","id":4,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"60806040526004361061002d5760003560e01c8063a03fa7e314610039578063b019946e1461005557610034565b3661003457005b600080fd5b610053600480360381019061004e9190610113565b61005f565b005b61005d6100a9565b005b8073ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f193505050501580156100a5573d6000803e3d6000fd5b5050565b3373ffffffffffffffffffffffffffffffffffffffff166108fc6002346100d0919061013c565b9081150290604051600060405180830381858888f193505050501580156100fb573d6000803e3d6000fd5b50565b60008135905061010d816101d8565b92915050565b60006020828403121561012557600080fd5b6000610133848285016100fe565b91505092915050565b60006101478261019f565b91506101528361019f565b925082610162576101616101a9565b5b828204905092915050565b60006101788261017f565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6101e18161016d565b81146101ec57600080fd5b5056fea26469706673582212208e553461507bae731d37afa0d5a2a7dae74de7a6eab682733425a78884ed60b364736f6c63430008040033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x2D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xA03FA7E3 EQ PUSH2 0x39 JUMPI DUP1 PUSH4 0xB019946E EQ PUSH2 0x55 JUMPI PUSH2 0x34 JUMP JUMPDEST CALLDATASIZE PUSH2 0x34 JUMPI STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x53 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x4E SWAP2 SWAP1 PUSH2 0x113 JUMP JUMPDEST PUSH2 0x5F JUMP JUMPDEST STOP JUMPDEST PUSH2 0x5D PUSH2 0xA9 JUMP JUMPDEST STOP JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8FC CALLVALUE 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 0xA5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8FC PUSH1 0x2 CALLVALUE PUSH2 0xD0 SWAP2 SWAP1 PUSH2 0x13C JUMP JUMPDEST 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 0xFB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x10D DUP2 PUSH2 0x1D8 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x125 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x133 DUP5 DUP3 DUP6 ADD PUSH2 0xFE JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x147 DUP3 PUSH2 0x19F JUMP JUMPDEST SWAP2 POP PUSH2 0x152 DUP4 PUSH2 0x19F JUMP JUMPDEST SWAP3 POP DUP3 PUSH2 0x162 JUMPI PUSH2 0x161 PUSH2 0x1A9 JUMP JUMPDEST JUMPDEST DUP3 DUP3 DIV SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x178 DUP3 PUSH2 0x17F 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 PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH2 0x1E1 DUP2 PUSH2 0x16D JUMP JUMPDEST DUP2 EQ PUSH2 0x1EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP15 SSTORE CALLVALUE PUSH2 0x507B 0xAE PUSH20 0x1D37AFA0D5A2A7DAE74DE7A6EAB682733425A788 DUP5 0xED PUSH1 0xB3 PUSH5 0x736F6C6343 STOP ADDMOD DIV STOP CALLER ","sourceMap":"57:255:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;184:93;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;89:91;;;:::i;:::-;;184:93;247:4;239:22;;:33;262:9;239:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;184:93;:::o;89:91::-;140:10;132:28;;:43;173:1;161:9;:13;;;;:::i;:::-;132:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;89:91::o;7:139:4:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:262::-;211:6;260:2;248:9;239:7;235:23;231:32;228:2;;;276:1;273;266:12;228:2;319:1;344:53;389:7;380:6;369:9;365:22;344:53;:::i;:::-;334:63;;290:117;218:196;;;;:::o;420:185::-;460:1;477:20;495:1;477:20;:::i;:::-;472:25;;511:20;529:1;511:20;:::i;:::-;506:25;;550:1;540:2;;555:18;;:::i;:::-;540:2;597:1;594;590:9;585:14;;462:143;;;;:::o;611:96::-;648:7;677:24;695:5;677:24;:::i;:::-;666:35;;656:51;;;:::o;713:126::-;750:7;790:42;783:5;779:54;768:65;;758:81;;;:::o;845:77::-;882:7;911:5;900:16;;890:32;;;:::o;1114:180::-;1162:77;1159:1;1152:88;1259:4;1256:1;1249:15;1283:4;1280:1;1273:15;1300:122;1373:24;1391:5;1373:24;:::i;:::-;1366:5;1363:35;1353:2;;1412:1;1409;1402:12;1353:2;1343:79;:::o"},"methodIdentifiers":{"returnHalf()":"b019946e","transferTo(address)":"a03fa7e3"}},"metadata":"{\"compiler\":{\"version\":\"0.8.4+commit.c7e474f2\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"returnHalf\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"transferTo\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/ChangeEtherBalance.sol\":\"ChangeEtherBalance\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/ChangeEtherBalance.sol\":{\"keccak256\":\"0x9c266d442b9dd1fdb8311deec6e6dc9b59612eee5279091d54a006779b1db3f0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://533b87dc323c18ae4775141b46443e8bce865632e9af58eee3b044cfb37f9ef7\",\"dweb:/ipfs/QmbUkSPQDMQ1jEt6n3wwNK9s7BrQhNuy2iYLM4df36AWma\"]}},\"version\":1}"}},"contracts/Events.sol":{"AnotherContract":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"u","type":"uint256"}],"name":"WithUintArg","type":"event"},{"inputs":[{"internalType":"uint256","name":"u","type":"uint256"}],"name":"emitUint","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"608060405234801561001057600080fd5b50610130806100206000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c80639194024414602d575b600080fd5b60436004803603810190603f91906090565b6045565b005b7f97535d4b4270d3f1a499c85ae918ba6798cbdcc83a26529331a25dcd2194cfce816040516072919060c3565b60405180910390a150565b600081359050608a8160e6565b92915050565b60006020828403121560a157600080fd5b600060ad84828501607d565b91505092915050565b60bd8160dc565b82525050565b600060208201905060d6600083018460b6565b92915050565b6000819050919050565b60ed8160dc565b811460f757600080fd5b5056fea264697066735822122083cb9b1ec00d6d1ec78d28771d3bf4778c5ba00b0532a2448d42cbab653355a064736f6c63430008040033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x130 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x28 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x91940244 EQ PUSH1 0x2D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x43 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH1 0x3F SWAP2 SWAP1 PUSH1 0x90 JUMP JUMPDEST PUSH1 0x45 JUMP JUMPDEST STOP JUMPDEST PUSH32 0x97535D4B4270D3F1A499C85AE918BA6798CBDCC83A26529331A25DCD2194CFCE DUP2 PUSH1 0x40 MLOAD PUSH1 0x72 SWAP2 SWAP1 PUSH1 0xC3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH1 0x8A DUP2 PUSH1 0xE6 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH1 0xA1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0xAD DUP5 DUP3 DUP6 ADD PUSH1 0x7D JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0xBD DUP2 PUSH1 0xDC JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH1 0xD6 PUSH1 0x0 DUP4 ADD DUP5 PUSH1 0xB6 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0xED DUP2 PUSH1 0xDC JUMP JUMPDEST DUP2 EQ PUSH1 0xF7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP4 0xCB SWAP12 0x1E 0xC0 0xD PUSH14 0x1EC78D28771D3BF4778C5BA00B05 ORIGIN LOG2 DIFFICULTY DUP14 TIMESTAMP 0xCB 0xAB PUSH6 0x3355A064736F PUSH13 0x63430008040033000000000000 ","sourceMap":"2530:124:1:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:980:4","statements":[{"body":{"nodeType":"YulBlock","src":"59:87:4","statements":[{"nodeType":"YulAssignment","src":"69:29:4","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"91:6:4"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"78:12:4"},"nodeType":"YulFunctionCall","src":"78:20:4"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"69:5:4"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"134:5:4"}],"functionName":{"name":"validator_revert_t_uint256","nodeType":"YulIdentifier","src":"107:26:4"},"nodeType":"YulFunctionCall","src":"107:33:4"},"nodeType":"YulExpressionStatement","src":"107:33:4"}]},"name":"abi_decode_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"37:6:4","type":""},{"name":"end","nodeType":"YulTypedName","src":"45:3:4","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"53:5:4","type":""}],"src":"7:139:4"},{"body":{"nodeType":"YulBlock","src":"218:196:4","statements":[{"body":{"nodeType":"YulBlock","src":"264:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"273:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"276:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"266:6:4"},"nodeType":"YulFunctionCall","src":"266:12:4"},"nodeType":"YulExpressionStatement","src":"266:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"239:7:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"248:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"235:3:4"},"nodeType":"YulFunctionCall","src":"235:23:4"},{"kind":"number","nodeType":"YulLiteral","src":"260:2:4","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"231:3:4"},"nodeType":"YulFunctionCall","src":"231:32:4"},"nodeType":"YulIf","src":"228:2:4"},{"nodeType":"YulBlock","src":"290:117:4","statements":[{"nodeType":"YulVariableDeclaration","src":"305:15:4","value":{"kind":"number","nodeType":"YulLiteral","src":"319:1:4","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"309:6:4","type":""}]},{"nodeType":"YulAssignment","src":"334:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"369:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"380:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"365:3:4"},"nodeType":"YulFunctionCall","src":"365:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"389:7:4"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"344:20:4"},"nodeType":"YulFunctionCall","src":"344:53:4"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"334:6:4"}]}]}]},"name":"abi_decode_tuple_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"188:9:4","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"199:7:4","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"211:6:4","type":""}],"src":"152:262:4"},{"body":{"nodeType":"YulBlock","src":"485:53:4","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"502:3:4"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"525:5:4"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"507:17:4"},"nodeType":"YulFunctionCall","src":"507:24:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"495:6:4"},"nodeType":"YulFunctionCall","src":"495:37:4"},"nodeType":"YulExpressionStatement","src":"495:37:4"}]},"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"473:5:4","type":""},{"name":"pos","nodeType":"YulTypedName","src":"480:3:4","type":""}],"src":"420:118:4"},{"body":{"nodeType":"YulBlock","src":"642:124:4","statements":[{"nodeType":"YulAssignment","src":"652:26:4","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"664:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"675:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"660:3:4"},"nodeType":"YulFunctionCall","src":"660:18:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"652:4:4"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"732:6:4"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"745:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"756:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"741:3:4"},"nodeType":"YulFunctionCall","src":"741:17:4"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"688:43:4"},"nodeType":"YulFunctionCall","src":"688:71:4"},"nodeType":"YulExpressionStatement","src":"688:71:4"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"614:9:4","type":""},{"name":"value0","nodeType":"YulTypedName","src":"626:6:4","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"637:4:4","type":""}],"src":"544:222:4"},{"body":{"nodeType":"YulBlock","src":"817:32:4","statements":[{"nodeType":"YulAssignment","src":"827:16:4","value":{"name":"value","nodeType":"YulIdentifier","src":"838:5:4"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"827:7:4"}]}]},"name":"cleanup_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"799:5:4","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"809:7:4","type":""}],"src":"772:77:4"},{"body":{"nodeType":"YulBlock","src":"898:79:4","statements":[{"body":{"nodeType":"YulBlock","src":"955:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"964:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"967:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"957:6:4"},"nodeType":"YulFunctionCall","src":"957:12:4"},"nodeType":"YulExpressionStatement","src":"957:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"921:5:4"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"946:5:4"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"928:17:4"},"nodeType":"YulFunctionCall","src":"928:24:4"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"918:2:4"},"nodeType":"YulFunctionCall","src":"918:35:4"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"911:6:4"},"nodeType":"YulFunctionCall","src":"911:43:4"},"nodeType":"YulIf","src":"908:2:4"}]},"name":"validator_revert_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"891:5:4","type":""}],"src":"855:122:4"}]},"contents":"{\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_uint256(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_uint256(add(headStart, offset), dataEnd)\n }\n\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_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 cleanup_t_uint256(value) -> cleaned {\n cleaned := value\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":4,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"6080604052348015600f57600080fd5b506004361060285760003560e01c80639194024414602d575b600080fd5b60436004803603810190603f91906090565b6045565b005b7f97535d4b4270d3f1a499c85ae918ba6798cbdcc83a26529331a25dcd2194cfce816040516072919060c3565b60405180910390a150565b600081359050608a8160e6565b92915050565b60006020828403121560a157600080fd5b600060ad84828501607d565b91505092915050565b60bd8160dc565b82525050565b600060208201905060d6600083018460b6565b92915050565b6000819050919050565b60ed8160dc565b811460f757600080fd5b5056fea264697066735822122083cb9b1ec00d6d1ec78d28771d3bf4778c5ba00b0532a2448d42cbab653355a064736f6c63430008040033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x28 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x91940244 EQ PUSH1 0x2D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x43 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH1 0x3F SWAP2 SWAP1 PUSH1 0x90 JUMP JUMPDEST PUSH1 0x45 JUMP JUMPDEST STOP JUMPDEST PUSH32 0x97535D4B4270D3F1A499C85AE918BA6798CBDCC83A26529331A25DCD2194CFCE DUP2 PUSH1 0x40 MLOAD PUSH1 0x72 SWAP2 SWAP1 PUSH1 0xC3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH1 0x8A DUP2 PUSH1 0xE6 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH1 0xA1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0xAD DUP5 DUP3 DUP6 ADD PUSH1 0x7D JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0xBD DUP2 PUSH1 0xDC JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH1 0xD6 PUSH1 0x0 DUP4 ADD DUP5 PUSH1 0xB6 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0xED DUP2 PUSH1 0xDC JUMP JUMPDEST DUP2 EQ PUSH1 0xF7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP4 0xCB SWAP12 0x1E 0xC0 0xD PUSH14 0x1EC78D28771D3BF4778C5BA00B05 ORIGIN LOG2 DIFFICULTY DUP14 TIMESTAMP 0xCB 0xAB PUSH6 0x3355A064736F PUSH13 0x63430008040033000000000000 ","sourceMap":"2530:124:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2589:63;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;2633:14;2645:1;2633:14;;;;;;:::i;:::-;;;;;;;;2589:63;:::o;7:139:4:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:262::-;211:6;260:2;248:9;239:7;235:23;231:32;228:2;;;276:1;273;266:12;228:2;319:1;344:53;389:7;380:6;369:9;365:22;344:53;:::i;:::-;334:63;;290:117;218:196;;;;:::o;420:118::-;507:24;525:5;507:24;:::i;:::-;502:3;495:37;485:53;;:::o;544:222::-;637:4;675:2;664:9;660:18;652:26;;688:71;756:1;745:9;741:17;732:6;688:71;:::i;:::-;642:124;;;;:::o;772:77::-;809:7;838:5;827:16;;817:32;;;:::o;855:122::-;928:24;946:5;928:24;:::i;:::-;921:5;918:35;908:2;;967:1;964;957:12;908:2;898:79;:::o"},"methodIdentifiers":{"emitUint(uint256)":"91940244"}},"metadata":"{\"compiler\":{\"version\":\"0.8.4+commit.c7e474f2\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"u\",\"type\":\"uint256\"}],\"name\":\"WithUintArg\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"u\",\"type\":\"uint256\"}],\"name\":\"emitUint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/Events.sol\":\"AnotherContract\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/Events.sol\":{\"keccak256\":\"0x1f12bbd1b991a4eb017f864e7ca09d99cee0730630313442e99fc32a29b28b91\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c8ba3dbc99ecfbb05a95a9a89e8ea74e86f7cbd5441a53fca9f3de94651313d5\",\"dweb:/ipfs/QmYr9HUxkuQxuEwxtLn3f9gB7i2epM95Znt6fRj9xL9T6Y\"]}},\"version\":1}"},"Events":{"abi":[{"inputs":[{"internalType":"contract AnotherContract","name":"c","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"a","type":"address"}],"name":"WithAddressArg","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"b","type":"bytes32"}],"name":"WithBytes32Arg","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32[2]","name":"a","type":"bytes32[2]"}],"name":"WithBytes32Array","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes","name":"b","type":"bytes"}],"name":"WithBytesArg","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"b","type":"bytes32"}],"name":"WithIndexedBytes32Arg","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes","name":"b","type":"bytes"}],"name":"WithIndexedBytesArg","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"string","name":"s","type":"string"}],"name":"WithIndexedStringArg","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"int256","name":"i","type":"int256"}],"name":"WithIntArg","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"s","type":"string"}],"name":"WithStringArg","type":"event"},{"anonymous":false,"inputs":[{"components":[{"internalType":"uint256","name":"u","type":"uint256"},{"internalType":"uint256","name":"v","type":"uint256"}],"indexed":false,"internalType":"struct Events.Struct","name":"s","type":"tuple"}],"name":"WithStructArg","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"s","type":"string"},{"indexed":false,"internalType":"string","name":"t","type":"string"}],"name":"WithTwoStringArgs","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"u","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"v","type":"uint256"}],"name":"WithTwoUintArgs","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"u","type":"uint256"}],"name":"WithUintArg","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256[2]","name":"a","type":"uint256[2]"}],"name":"WithUintArray","type":"event"},{"anonymous":false,"inputs":[],"name":"WithoutArgs","type":"event"},{"inputs":[],"name":"doNotEmit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"a","type":"address"}],"name":"emitAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"b","type":"bytes"}],"name":"emitBytes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"b","type":"bytes32"}],"name":"emitBytes32","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"b","type":"bytes32"},{"internalType":"bytes32","name":"c","type":"bytes32"}],"name":"emitBytes32Array","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"b","type":"bytes"}],"name":"emitIndexedBytes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"b","type":"bytes32"}],"name":"emitIndexedBytes32","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"s","type":"string"}],"name":"emitIndexedString","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"int256","name":"i","type":"int256"}],"name":"emitInt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"u","type":"uint256"}],"name":"emitNestedUintFromAnotherContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"u","type":"uint256"}],"name":"emitNestedUintFromSameContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"s","type":"string"}],"name":"emitString","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"u","type":"uint256"},{"internalType":"uint256","name":"v","type":"uint256"}],"name":"emitStruct","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"u","type":"uint256"},{"internalType":"uint256","name":"v","type":"uint256"}],"name":"emitTwoUints","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"u","type":"uint256"},{"internalType":"uint256","name":"v","type":"uint256"},{"internalType":"string","name":"s","type":"string"},{"internalType":"string","name":"t","type":"string"}],"name":"emitTwoUintsAndTwoStrings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"u","type":"uint256"}],"name":"emitUint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"u","type":"uint256"},{"internalType":"string","name":"s","type":"string"}],"name":"emitUintAndString","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"u","type":"uint256"},{"internalType":"uint256","name":"v","type":"uint256"}],"name":"emitUintArray","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"u","type":"uint256"},{"internalType":"uint256","name":"v","type":"uint256"}],"name":"emitUintTwice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"emitWithoutArgs","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:1068:4","statements":[{"body":{"nodeType":"YulBlock","src":"93:103:4","statements":[{"nodeType":"YulAssignment","src":"103:22:4","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"118:6:4"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"112:5:4"},"nodeType":"YulFunctionCall","src":"112:13:4"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"103:5:4"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"184:5:4"}],"functionName":{"name":"validator_revert_t_contract$_AnotherContract_$374","nodeType":"YulIdentifier","src":"134:49:4"},"nodeType":"YulFunctionCall","src":"134:56:4"},"nodeType":"YulExpressionStatement","src":"134:56:4"}]},"name":"abi_decode_t_contract$_AnotherContract_$374_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"71:6:4","type":""},{"name":"end","nodeType":"YulTypedName","src":"79:3:4","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"87:5:4","type":""}],"src":"7:189:4"},{"body":{"nodeType":"YulBlock","src":"302:230:4","statements":[{"body":{"nodeType":"YulBlock","src":"348:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"357:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"360:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"350:6:4"},"nodeType":"YulFunctionCall","src":"350:12:4"},"nodeType":"YulExpressionStatement","src":"350:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"323:7:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"332:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"319:3:4"},"nodeType":"YulFunctionCall","src":"319:23:4"},{"kind":"number","nodeType":"YulLiteral","src":"344:2:4","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"315:3:4"},"nodeType":"YulFunctionCall","src":"315:32:4"},"nodeType":"YulIf","src":"312:2:4"},{"nodeType":"YulBlock","src":"374:151:4","statements":[{"nodeType":"YulVariableDeclaration","src":"389:15:4","value":{"kind":"number","nodeType":"YulLiteral","src":"403:1:4","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"393:6:4","type":""}]},{"nodeType":"YulAssignment","src":"418:97:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"487:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"498:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"483:3:4"},"nodeType":"YulFunctionCall","src":"483:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"507:7:4"}],"functionName":{"name":"abi_decode_t_contract$_AnotherContract_$374_fromMemory","nodeType":"YulIdentifier","src":"428:54:4"},"nodeType":"YulFunctionCall","src":"428:87:4"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"418:6:4"}]}]}]},"name":"abi_decode_tuple_t_contract$_AnotherContract_$374_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"272:9:4","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"283:7:4","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"295:6:4","type":""}],"src":"202:330:4"},{"body":{"nodeType":"YulBlock","src":"583:51:4","statements":[{"nodeType":"YulAssignment","src":"593:35:4","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"622:5:4"}],"functionName":{"name":"cleanup_t_uint160","nodeType":"YulIdentifier","src":"604:17:4"},"nodeType":"YulFunctionCall","src":"604:24:4"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"593:7:4"}]}]},"name":"cleanup_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"565:5:4","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"575:7:4","type":""}],"src":"538:96:4"},{"body":{"nodeType":"YulBlock","src":"708:51:4","statements":[{"nodeType":"YulAssignment","src":"718:35:4","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"747:5:4"}],"functionName":{"name":"cleanup_t_address","nodeType":"YulIdentifier","src":"729:17:4"},"nodeType":"YulFunctionCall","src":"729:24:4"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"718:7:4"}]}]},"name":"cleanup_t_contract$_AnotherContract_$374","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"690:5:4","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"700:7:4","type":""}],"src":"640:119:4"},{"body":{"nodeType":"YulBlock","src":"810:81:4","statements":[{"nodeType":"YulAssignment","src":"820:65:4","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"835:5:4"},{"kind":"number","nodeType":"YulLiteral","src":"842:42:4","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"831:3:4"},"nodeType":"YulFunctionCall","src":"831:54:4"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"820:7:4"}]}]},"name":"cleanup_t_uint160","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"792:5:4","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"802:7:4","type":""}],"src":"765:126:4"},{"body":{"nodeType":"YulBlock","src":"963:102:4","statements":[{"body":{"nodeType":"YulBlock","src":"1043:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1052:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1055:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1045:6:4"},"nodeType":"YulFunctionCall","src":"1045:12:4"},"nodeType":"YulExpressionStatement","src":"1045:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"986:5:4"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1034:5:4"}],"functionName":{"name":"cleanup_t_contract$_AnotherContract_$374","nodeType":"YulIdentifier","src":"993:40:4"},"nodeType":"YulFunctionCall","src":"993:47:4"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"983:2:4"},"nodeType":"YulFunctionCall","src":"983:58:4"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"976:6:4"},"nodeType":"YulFunctionCall","src":"976:66:4"},"nodeType":"YulIf","src":"973:2:4"}]},"name":"validator_revert_t_contract$_AnotherContract_$374","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"956:5:4","type":""}],"src":"897:168:4"}]},"contents":"{\n\n function abi_decode_t_contract$_AnotherContract_$374_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_contract$_AnotherContract_$374(value)\n }\n\n function abi_decode_tuple_t_contract$_AnotherContract_$374_fromMemory(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_contract$_AnotherContract_$374_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function cleanup_t_contract$_AnotherContract_$374(value) -> cleaned {\n cleaned := cleanup_t_address(value)\n }\n\n function cleanup_t_uint160(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n }\n\n function validator_revert_t_contract$_AnotherContract_$374(value) {\n if iszero(eq(value, cleanup_t_contract$_AnotherContract_$374(value))) { revert(0, 0) }\n }\n\n}\n","id":4,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"60806040523480156200001157600080fd5b506040516200140d3803806200140d833981810160405281019062000037919062000095565b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505062000123565b6000815190506200008f8162000109565b92915050565b600060208284031215620000a857600080fd5b6000620000b8848285016200007e565b91505092915050565b6000620000ce82620000e9565b9050919050565b6000620000e282620000c1565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6200011481620000d5565b81146200012057600080fd5b50565b6112da80620001336000396000f3fe608060405234801561001057600080fd5b506004361061012c5760003560e01c80638a618191116100ad578063c76f063511610071578063c76f0635146102c3578063cc07e605146102df578063d3931e57146102fb578063db6cdf6814610317578063ec5c3ede146103215761012c565b80638a6181911461024957806390b37ea214610265578063919402441461026f5780639f31a2231461028b578063c0cd80e6146102a75761012c565b806333311ef3116100f457806333311ef3146101bd57806338393646146101d9578063443690a0146101f5578063532b9cce14610211578063813a8cf51461022d5761012c565b8063048858e5146101315780630c0c941a1461014d57806317aba537146101695780632536f127146101855780632785f8d6146101a1575b600080fd5b61014b600480360381019061014691906109f0565b61033d565b005b61016760048036038101906101629190610b7d565b61036d565b005b610183600480360381019061017e9190610b7d565b6103df565b005b61019f600480360381019061019a9190610abf565b61042e565b005b6101bb60048036038101906101b69190610b29565b610468565b005b6101d760048036038101906101d291906109f0565b6104da565b005b6101f360048036038101906101ee9190610b7d565b610514565b005b61020f600480360381019061020a9190610abf565b610551565b005b61022b60048036038101906102269190610bb9565b610596565b005b61024760048036038101906102429190610b00565b61060e565b005b610263600480360381019061025e9190610a96565b61061a565b005b61026d610654565b005b61028960048036038101906102849190610b00565b610682565b005b6102a560048036038101906102a09190610b7d565b6106bc565b005b6102c160048036038101906102bc9190610a19565b61070b565b005b6102dd60048036038101906102d89190610a55565b61075a565b005b6102f960048036038101906102f49190610a55565b610794565b005b61031560048036038101906103109190610b00565b6107d9565b005b61031f610867565b005b61033b600480360381019061033691906109c7565b610869565b005b807fb421ad092cfce88844bfbfaa9654e824ba0ee5b6b0a220f822406b62c05364c060405160405180910390a250565b7f97535d4b4270d3f1a499c85ae918ba6798cbdcc83a26529331a25dcd2194cfce8260405161039c9190610fd2565b60405180910390a17f97535d4b4270d3f1a499c85ae918ba6798cbdcc83a26529331a25dcd2194cfce816040516103d39190610fd2565b60405180910390a15050565b7f73e687a2685d698f7acf934b4929a29ae783a4bcb640d71c5d6994d74e2380ca6040518060400160405280848152602001838152506040516104229190610eeb565b60405180910390a15050565b7f9b7ddcbde8dac280e036f87acafec72f9eee31a640c08087e8439139c7e5b52a8160405161045d9190610f5e565b60405180910390a150565b7f9b7ddcbde8dac280e036f87acafec72f9eee31a640c08087e8439139c7e5b52a816040516104979190610f5e565b60405180910390a17f97535d4b4270d3f1a499c85ae918ba6798cbdcc83a26529331a25dcd2194cfce826040516104ce9190610fd2565b60405180910390a15050565b7f425517d2678bbca3c0d9d8d9fdbec34c81194e7935ed48a6a19f97db93bcef6a816040516105099190610f06565b60405180910390a150565b7f8b268bb46a33a55bece084a8b6858719c9f2985c860fa06c155a341df0b73c0e8282604051610545929190610fed565b60405180910390a15050565b8060405161055f9190610e9e565b60405180910390207fd9ca28363e2d8739e0e9c4fea1d2df98d1bd7d9d915d00e5fccbf78c0fddcdb060405160405180910390a250565b7f8b268bb46a33a55bece084a8b6858719c9f2985c860fa06c155a341df0b73c0e84846040516105c7929190610fed565b60405180910390a17f1f1a2c748505fcd8f16a719fa88d517b1b41111c4f5e07bb28311cdc4d1515388282604051610600929190610f80565b60405180910390a150505050565b61061781610682565b50565b7f39feab747bb4f579008aea963d7ebac85ad410bb83ee663a42af01464654e93f816040516106499190610f43565b60405180910390a150565b7f917b7bf7ab24d61500cb699921a3a1cc22b8833da6484fea20f262b2610604af60405160405180910390a1565b7f97535d4b4270d3f1a499c85ae918ba6798cbdcc83a26529331a25dcd2194cfce816040516106b19190610fd2565b60405180910390a150565b7fd59ab87bf64b9d737998f3dc70c649d16b135f085029c1666ca0634beb75a7736040518060400160405280848152602001838152506040516106ff9190610fb7565b60405180910390a15050565b7f15100859f3ffe92910dc3f11ed3db4e9cf32ff657c05066e44be4e69b2b488bc60405180604001604052808481526020018381525060405161074e9190610ed0565b60405180910390a15050565b7f433470edcdd53b50238be4d8e048e2baa269af5be2a4e29515c138883c745aa8816040516107899190610f21565b60405180910390a150565b806040516107a29190610e87565b60405180910390207f160e4655df40987951accf7c731d5c504f77d20c139bd73032821b91a426dd9860405160405180910390a250565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166391940244826040518263ffffffff1660e01b81526004016108329190610fd2565b600060405180830381600087803b15801561084c57600080fd5b505af1158015610860573d6000803e3d6000fd5b5050505050565b565b7f336bcd960d2e5a52cef6094ba33727f309dc2c675eebefc6d9b6b6d79abac877816040516108989190610eb5565b60405180910390a150565b60006108b66108b18461103b565b611016565b9050828152602081018484840111156108ce57600080fd5b6108d9848285611195565b509392505050565b60006108f46108ef8461106c565b611016565b90508281526020810184848401111561090c57600080fd5b610917848285611195565b509392505050565b60008135905061092e81611248565b92915050565b6000813590506109438161125f565b92915050565b600082601f83011261095a57600080fd5b813561096a8482602086016108a3565b91505092915050565b60008135905061098281611276565b92915050565b600082601f83011261099957600080fd5b81356109a98482602086016108e1565b91505092915050565b6000813590506109c18161128d565b92915050565b6000602082840312156109d957600080fd5b60006109e78482850161091f565b91505092915050565b600060208284031215610a0257600080fd5b6000610a1084828501610934565b91505092915050565b60008060408385031215610a2c57600080fd5b6000610a3a85828601610934565b9250506020610a4b85828601610934565b9150509250929050565b600060208284031215610a6757600080fd5b600082013567ffffffffffffffff811115610a8157600080fd5b610a8d84828501610949565b91505092915050565b600060208284031215610aa857600080fd5b6000610ab684828501610973565b91505092915050565b600060208284031215610ad157600080fd5b600082013567ffffffffffffffff811115610aeb57600080fd5b610af784828501610988565b91505092915050565b600060208284031215610b1257600080fd5b6000610b20848285016109b2565b91505092915050565b60008060408385031215610b3c57600080fd5b6000610b4a858286016109b2565b925050602083013567ffffffffffffffff811115610b6757600080fd5b610b7385828601610988565b9150509250929050565b60008060408385031215610b9057600080fd5b6000610b9e858286016109b2565b9250506020610baf858286016109b2565b9150509250929050565b60008060008060808587031215610bcf57600080fd5b6000610bdd878288016109b2565b9450506020610bee878288016109b2565b935050604085013567ffffffffffffffff811115610c0b57600080fd5b610c1787828801610988565b925050606085013567ffffffffffffffff811115610c3457600080fd5b610c4087828801610988565b91505092959194509250565b6000610c588383610d39565b60208301905092915050565b6000610c708383610e69565b60208301905092915050565b610c8581611145565b82525050565b610c94816110b1565b610c9e81846110f7565b9250610ca98261109d565b8060005b83811015610cda578151610cc18782610c4c565b9650610ccc836110dd565b925050600181019050610cad565b505050505050565b610ceb816110bc565b610cf58184611102565b9250610d00826110a7565b8060005b83811015610d31578151610d188782610c64565b9650610d23836110ea565b925050600181019050610d04565b505050505050565b610d4281611157565b82525050565b610d5181611157565b82525050565b6000610d62826110c7565b610d6c818561110d565b9350610d7c8185602086016111a4565b610d8581611237565b840191505092915050565b6000610d9b826110c7565b610da5818561111e565b9350610db58185602086016111a4565b80840191505092915050565b610dca81611161565b82525050565b6000610ddb826110d2565b610de58185611129565b9350610df58185602086016111a4565b610dfe81611237565b840191505092915050565b6000610e14826110d2565b610e1e818561113a565b9350610e2e8185602086016111a4565b80840191505092915050565b604082016000820151610e506000850182610e69565b506020820151610e636020850182610e69565b50505050565b610e728161118b565b82525050565b610e818161118b565b82525050565b6000610e938284610d90565b915081905092915050565b6000610eaa8284610e09565b915081905092915050565b6000602082019050610eca6000830184610c7c565b92915050565b6000604082019050610ee56000830184610c8b565b92915050565b6000604082019050610f006000830184610ce2565b92915050565b6000602082019050610f1b6000830184610d48565b92915050565b60006020820190508181036000830152610f3b8184610d57565b905092915050565b6000602082019050610f586000830184610dc1565b92915050565b60006020820190508181036000830152610f788184610dd0565b905092915050565b60006040820190508181036000830152610f9a8185610dd0565b90508181036020830152610fae8184610dd0565b90509392505050565b6000604082019050610fcc6000830184610e3a565b92915050565b6000602082019050610fe76000830184610e78565b92915050565b60006040820190506110026000830185610e78565b61100f6020830184610e78565b9392505050565b6000611020611031565b905061102c82826111d7565b919050565b6000604051905090565b600067ffffffffffffffff82111561105657611055611208565b5b61105f82611237565b9050602081019050919050565b600067ffffffffffffffff82111561108757611086611208565b5b61109082611237565b9050602081019050919050565b6000819050919050565b6000819050919050565b600060029050919050565b600060029050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b600081905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b60006111508261116b565b9050919050565b6000819050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b838110156111c25780820151818401526020810190506111a7565b838111156111d1576000848401525b50505050565b6111e082611237565b810181811067ffffffffffffffff821117156111ff576111fe611208565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b61125181611145565b811461125c57600080fd5b50565b61126881611157565b811461127357600080fd5b50565b61127f81611161565b811461128a57600080fd5b50565b6112968161118b565b81146112a157600080fd5b5056fea264697066735822122073a91a740c0de3883c5213c5981d98d2396a8b60b3cf2fb364d7e4cc826a841e64736f6c63430008040033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x140D CODESIZE SUB DUP1 PUSH3 0x140D DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE DUP2 ADD SWAP1 PUSH3 0x37 SWAP2 SWAP1 PUSH3 0x95 JUMP JUMPDEST DUP1 PUSH1 0x0 DUP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP PUSH3 0x123 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH3 0x8F DUP2 PUSH3 0x109 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0xA8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH3 0xB8 DUP5 DUP3 DUP6 ADD PUSH3 0x7E JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0xCE DUP3 PUSH3 0xE9 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0xE2 DUP3 PUSH3 0xC1 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x114 DUP2 PUSH3 0xD5 JUMP JUMPDEST DUP2 EQ PUSH3 0x120 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x12DA DUP1 PUSH3 0x133 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x12C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8A618191 GT PUSH2 0xAD JUMPI DUP1 PUSH4 0xC76F0635 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xC76F0635 EQ PUSH2 0x2C3 JUMPI DUP1 PUSH4 0xCC07E605 EQ PUSH2 0x2DF JUMPI DUP1 PUSH4 0xD3931E57 EQ PUSH2 0x2FB JUMPI DUP1 PUSH4 0xDB6CDF68 EQ PUSH2 0x317 JUMPI DUP1 PUSH4 0xEC5C3EDE EQ PUSH2 0x321 JUMPI PUSH2 0x12C JUMP JUMPDEST DUP1 PUSH4 0x8A618191 EQ PUSH2 0x249 JUMPI DUP1 PUSH4 0x90B37EA2 EQ PUSH2 0x265 JUMPI DUP1 PUSH4 0x91940244 EQ PUSH2 0x26F JUMPI DUP1 PUSH4 0x9F31A223 EQ PUSH2 0x28B JUMPI DUP1 PUSH4 0xC0CD80E6 EQ PUSH2 0x2A7 JUMPI PUSH2 0x12C JUMP JUMPDEST DUP1 PUSH4 0x33311EF3 GT PUSH2 0xF4 JUMPI DUP1 PUSH4 0x33311EF3 EQ PUSH2 0x1BD JUMPI DUP1 PUSH4 0x38393646 EQ PUSH2 0x1D9 JUMPI DUP1 PUSH4 0x443690A0 EQ PUSH2 0x1F5 JUMPI DUP1 PUSH4 0x532B9CCE EQ PUSH2 0x211 JUMPI DUP1 PUSH4 0x813A8CF5 EQ PUSH2 0x22D JUMPI PUSH2 0x12C JUMP JUMPDEST DUP1 PUSH4 0x48858E5 EQ PUSH2 0x131 JUMPI DUP1 PUSH4 0xC0C941A EQ PUSH2 0x14D JUMPI DUP1 PUSH4 0x17ABA537 EQ PUSH2 0x169 JUMPI DUP1 PUSH4 0x2536F127 EQ PUSH2 0x185 JUMPI DUP1 PUSH4 0x2785F8D6 EQ PUSH2 0x1A1 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x14B PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x146 SWAP2 SWAP1 PUSH2 0x9F0 JUMP JUMPDEST PUSH2 0x33D JUMP JUMPDEST STOP JUMPDEST PUSH2 0x167 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x162 SWAP2 SWAP1 PUSH2 0xB7D JUMP JUMPDEST PUSH2 0x36D JUMP JUMPDEST STOP JUMPDEST PUSH2 0x183 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x17E SWAP2 SWAP1 PUSH2 0xB7D JUMP JUMPDEST PUSH2 0x3DF JUMP JUMPDEST STOP JUMPDEST PUSH2 0x19F PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x19A SWAP2 SWAP1 PUSH2 0xABF JUMP JUMPDEST PUSH2 0x42E JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1BB PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1B6 SWAP2 SWAP1 PUSH2 0xB29 JUMP JUMPDEST PUSH2 0x468 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1D7 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1D2 SWAP2 SWAP1 PUSH2 0x9F0 JUMP JUMPDEST PUSH2 0x4DA JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1F3 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1EE SWAP2 SWAP1 PUSH2 0xB7D JUMP JUMPDEST PUSH2 0x514 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x20F PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x20A SWAP2 SWAP1 PUSH2 0xABF JUMP JUMPDEST PUSH2 0x551 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x22B PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x226 SWAP2 SWAP1 PUSH2 0xBB9 JUMP JUMPDEST PUSH2 0x596 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x247 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x242 SWAP2 SWAP1 PUSH2 0xB00 JUMP JUMPDEST PUSH2 0x60E JUMP JUMPDEST STOP JUMPDEST PUSH2 0x263 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x25E SWAP2 SWAP1 PUSH2 0xA96 JUMP JUMPDEST PUSH2 0x61A JUMP JUMPDEST STOP JUMPDEST PUSH2 0x26D PUSH2 0x654 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x289 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x284 SWAP2 SWAP1 PUSH2 0xB00 JUMP JUMPDEST PUSH2 0x682 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2A5 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2A0 SWAP2 SWAP1 PUSH2 0xB7D JUMP JUMPDEST PUSH2 0x6BC JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2C1 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2BC SWAP2 SWAP1 PUSH2 0xA19 JUMP JUMPDEST PUSH2 0x70B JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2DD PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2D8 SWAP2 SWAP1 PUSH2 0xA55 JUMP JUMPDEST PUSH2 0x75A JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2F9 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2F4 SWAP2 SWAP1 PUSH2 0xA55 JUMP JUMPDEST PUSH2 0x794 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x315 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x310 SWAP2 SWAP1 PUSH2 0xB00 JUMP JUMPDEST PUSH2 0x7D9 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x31F PUSH2 0x867 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x33B PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x336 SWAP2 SWAP1 PUSH2 0x9C7 JUMP JUMPDEST PUSH2 0x869 JUMP JUMPDEST STOP JUMPDEST DUP1 PUSH32 0xB421AD092CFCE88844BFBFAA9654E824BA0EE5B6B0A220F822406B62C05364C0 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP JUMP JUMPDEST PUSH32 0x97535D4B4270D3F1A499C85AE918BA6798CBDCC83A26529331A25DCD2194CFCE DUP3 PUSH1 0x40 MLOAD PUSH2 0x39C SWAP2 SWAP1 PUSH2 0xFD2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH32 0x97535D4B4270D3F1A499C85AE918BA6798CBDCC83A26529331A25DCD2194CFCE DUP2 PUSH1 0x40 MLOAD PUSH2 0x3D3 SWAP2 SWAP1 PUSH2 0xFD2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH32 0x73E687A2685D698F7ACF934B4929A29AE783A4BCB640D71C5D6994D74E2380CA PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE POP PUSH1 0x40 MLOAD PUSH2 0x422 SWAP2 SWAP1 PUSH2 0xEEB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH32 0x9B7DDCBDE8DAC280E036F87ACAFEC72F9EEE31A640C08087E8439139C7E5B52A DUP2 PUSH1 0x40 MLOAD PUSH2 0x45D SWAP2 SWAP1 PUSH2 0xF5E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH32 0x9B7DDCBDE8DAC280E036F87ACAFEC72F9EEE31A640C08087E8439139C7E5B52A DUP2 PUSH1 0x40 MLOAD PUSH2 0x497 SWAP2 SWAP1 PUSH2 0xF5E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH32 0x97535D4B4270D3F1A499C85AE918BA6798CBDCC83A26529331A25DCD2194CFCE DUP3 PUSH1 0x40 MLOAD PUSH2 0x4CE SWAP2 SWAP1 PUSH2 0xFD2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH32 0x425517D2678BBCA3C0D9D8D9FDBEC34C81194E7935ED48A6A19F97DB93BCEF6A DUP2 PUSH1 0x40 MLOAD PUSH2 0x509 SWAP2 SWAP1 PUSH2 0xF06 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH32 0x8B268BB46A33A55BECE084A8B6858719C9F2985C860FA06C155A341DF0B73C0E DUP3 DUP3 PUSH1 0x40 MLOAD PUSH2 0x545 SWAP3 SWAP2 SWAP1 PUSH2 0xFED JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH2 0x55F SWAP2 SWAP1 PUSH2 0xE9E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 PUSH32 0xD9CA28363E2D8739E0E9C4FEA1D2DF98D1BD7D9D915D00E5FCCBF78C0FDDCDB0 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP JUMP JUMPDEST PUSH32 0x8B268BB46A33A55BECE084A8B6858719C9F2985C860FA06C155A341DF0B73C0E DUP5 DUP5 PUSH1 0x40 MLOAD PUSH2 0x5C7 SWAP3 SWAP2 SWAP1 PUSH2 0xFED JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH32 0x1F1A2C748505FCD8F16A719FA88D517B1B41111C4F5E07BB28311CDC4D151538 DUP3 DUP3 PUSH1 0x40 MLOAD PUSH2 0x600 SWAP3 SWAP2 SWAP1 PUSH2 0xF80 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP JUMP JUMPDEST PUSH2 0x617 DUP2 PUSH2 0x682 JUMP JUMPDEST POP JUMP JUMPDEST PUSH32 0x39FEAB747BB4F579008AEA963D7EBAC85AD410BB83EE663A42AF01464654E93F DUP2 PUSH1 0x40 MLOAD PUSH2 0x649 SWAP2 SWAP1 PUSH2 0xF43 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH32 0x917B7BF7AB24D61500CB699921A3A1CC22B8833DA6484FEA20F262B2610604AF PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMP JUMPDEST PUSH32 0x97535D4B4270D3F1A499C85AE918BA6798CBDCC83A26529331A25DCD2194CFCE DUP2 PUSH1 0x40 MLOAD PUSH2 0x6B1 SWAP2 SWAP1 PUSH2 0xFD2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH32 0xD59AB87BF64B9D737998F3DC70C649D16B135F085029C1666CA0634BEB75A773 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE POP PUSH1 0x40 MLOAD PUSH2 0x6FF SWAP2 SWAP1 PUSH2 0xFB7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH32 0x15100859F3FFE92910DC3F11ED3DB4E9CF32FF657C05066E44BE4E69B2B488BC PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE POP PUSH1 0x40 MLOAD PUSH2 0x74E SWAP2 SWAP1 PUSH2 0xED0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH32 0x433470EDCDD53B50238BE4D8E048E2BAA269AF5BE2A4E29515C138883C745AA8 DUP2 PUSH1 0x40 MLOAD PUSH2 0x789 SWAP2 SWAP1 PUSH2 0xF21 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH2 0x7A2 SWAP2 SWAP1 PUSH2 0xE87 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 PUSH32 0x160E4655DF40987951ACCF7C731D5C504F77D20C139BD73032821B91A426DD98 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x91940244 DUP3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x832 SWAP2 SWAP1 PUSH2 0xFD2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x84C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x860 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST JUMP JUMPDEST PUSH32 0x336BCD960D2E5A52CEF6094BA33727F309DC2C675EEBEFC6D9B6B6D79ABAC877 DUP2 PUSH1 0x40 MLOAD PUSH2 0x898 SWAP2 SWAP1 PUSH2 0xEB5 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8B6 PUSH2 0x8B1 DUP5 PUSH2 0x103B JUMP JUMPDEST PUSH2 0x1016 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 DUP5 DUP5 ADD GT ISZERO PUSH2 0x8CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8D9 DUP5 DUP3 DUP6 PUSH2 0x1195 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8F4 PUSH2 0x8EF DUP5 PUSH2 0x106C JUMP JUMPDEST PUSH2 0x1016 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 DUP5 DUP5 ADD GT ISZERO PUSH2 0x90C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x917 DUP5 DUP3 DUP6 PUSH2 0x1195 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x92E DUP2 PUSH2 0x1248 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x943 DUP2 PUSH2 0x125F JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x95A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x96A DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x8A3 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x982 DUP2 PUSH2 0x1276 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x999 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x9A9 DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x8E1 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x9C1 DUP2 PUSH2 0x128D JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x9D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x9E7 DUP5 DUP3 DUP6 ADD PUSH2 0x91F JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xA02 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xA10 DUP5 DUP3 DUP6 ADD PUSH2 0x934 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xA2C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xA3A DUP6 DUP3 DUP7 ADD PUSH2 0x934 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0xA4B DUP6 DUP3 DUP7 ADD PUSH2 0x934 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xA67 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xA81 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA8D DUP5 DUP3 DUP6 ADD PUSH2 0x949 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xAA8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xAB6 DUP5 DUP3 DUP6 ADD PUSH2 0x973 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xAD1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xAEB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xAF7 DUP5 DUP3 DUP6 ADD PUSH2 0x988 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xB12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xB20 DUP5 DUP3 DUP6 ADD PUSH2 0x9B2 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xB3C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xB4A DUP6 DUP3 DUP7 ADD PUSH2 0x9B2 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xB67 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB73 DUP6 DUP3 DUP7 ADD PUSH2 0x988 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xB90 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xB9E DUP6 DUP3 DUP7 ADD PUSH2 0x9B2 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0xBAF DUP6 DUP3 DUP7 ADD PUSH2 0x9B2 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0xBCF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xBDD DUP8 DUP3 DUP9 ADD PUSH2 0x9B2 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 PUSH2 0xBEE DUP8 DUP3 DUP9 ADD PUSH2 0x9B2 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xC0B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xC17 DUP8 DUP3 DUP9 ADD PUSH2 0x988 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xC34 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xC40 DUP8 DUP3 DUP9 ADD PUSH2 0x988 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC58 DUP4 DUP4 PUSH2 0xD39 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC70 DUP4 DUP4 PUSH2 0xE69 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xC85 DUP2 PUSH2 0x1145 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0xC94 DUP2 PUSH2 0x10B1 JUMP JUMPDEST PUSH2 0xC9E DUP2 DUP5 PUSH2 0x10F7 JUMP JUMPDEST SWAP3 POP PUSH2 0xCA9 DUP3 PUSH2 0x109D JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xCDA JUMPI DUP2 MLOAD PUSH2 0xCC1 DUP8 DUP3 PUSH2 0xC4C JUMP JUMPDEST SWAP7 POP PUSH2 0xCCC DUP4 PUSH2 0x10DD JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0xCAD JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0xCEB DUP2 PUSH2 0x10BC JUMP JUMPDEST PUSH2 0xCF5 DUP2 DUP5 PUSH2 0x1102 JUMP JUMPDEST SWAP3 POP PUSH2 0xD00 DUP3 PUSH2 0x10A7 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xD31 JUMPI DUP2 MLOAD PUSH2 0xD18 DUP8 DUP3 PUSH2 0xC64 JUMP JUMPDEST SWAP7 POP PUSH2 0xD23 DUP4 PUSH2 0x10EA JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0xD04 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0xD42 DUP2 PUSH2 0x1157 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0xD51 DUP2 PUSH2 0x1157 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD62 DUP3 PUSH2 0x10C7 JUMP JUMPDEST PUSH2 0xD6C DUP2 DUP6 PUSH2 0x110D JUMP JUMPDEST SWAP4 POP PUSH2 0xD7C DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x11A4 JUMP JUMPDEST PUSH2 0xD85 DUP2 PUSH2 0x1237 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD9B DUP3 PUSH2 0x10C7 JUMP JUMPDEST PUSH2 0xDA5 DUP2 DUP6 PUSH2 0x111E JUMP JUMPDEST SWAP4 POP PUSH2 0xDB5 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x11A4 JUMP JUMPDEST DUP1 DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xDCA DUP2 PUSH2 0x1161 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xDDB DUP3 PUSH2 0x10D2 JUMP JUMPDEST PUSH2 0xDE5 DUP2 DUP6 PUSH2 0x1129 JUMP JUMPDEST SWAP4 POP PUSH2 0xDF5 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x11A4 JUMP JUMPDEST PUSH2 0xDFE DUP2 PUSH2 0x1237 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE14 DUP3 PUSH2 0x10D2 JUMP JUMPDEST PUSH2 0xE1E DUP2 DUP6 PUSH2 0x113A JUMP JUMPDEST SWAP4 POP PUSH2 0xE2E DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x11A4 JUMP JUMPDEST DUP1 DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP3 ADD PUSH1 0x0 DUP3 ADD MLOAD PUSH2 0xE50 PUSH1 0x0 DUP6 ADD DUP3 PUSH2 0xE69 JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0xE63 PUSH1 0x20 DUP6 ADD DUP3 PUSH2 0xE69 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0xE72 DUP2 PUSH2 0x118B JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0xE81 DUP2 PUSH2 0x118B JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE93 DUP3 DUP5 PUSH2 0xD90 JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xEAA DUP3 DUP5 PUSH2 0xE09 JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xECA PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xC7C JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0xEE5 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xC8B JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0xF00 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xCE2 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xF1B PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xD48 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 0xF3B DUP2 DUP5 PUSH2 0xD57 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xF58 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xDC1 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 0xF78 DUP2 DUP5 PUSH2 0xDD0 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0xF9A DUP2 DUP6 PUSH2 0xDD0 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0xFAE DUP2 DUP5 PUSH2 0xDD0 JUMP JUMPDEST SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0xFCC PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xE3A JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xFE7 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xE78 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x1002 PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0xE78 JUMP JUMPDEST PUSH2 0x100F PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0xE78 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1020 PUSH2 0x1031 JUMP JUMPDEST SWAP1 POP PUSH2 0x102C DUP3 DUP3 PUSH2 0x11D7 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 0x1056 JUMPI PUSH2 0x1055 PUSH2 0x1208 JUMP JUMPDEST JUMPDEST PUSH2 0x105F DUP3 PUSH2 0x1237 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x1087 JUMPI PUSH2 0x1086 PUSH2 0x1208 JUMP JUMPDEST JUMPDEST PUSH2 0x1090 DUP3 PUSH2 0x1237 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1150 DUP3 PUSH2 0x116B JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 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 0x11C2 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x11A7 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x11D1 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x11E0 DUP3 PUSH2 0x1237 JUMP JUMPDEST DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x11FF JUMPI PUSH2 0x11FE PUSH2 0x1208 JUMP JUMPDEST JUMPDEST DUP1 PUSH1 0x40 MSTORE POP POP POP JUMP 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 PUSH2 0x1251 DUP2 PUSH2 0x1145 JUMP JUMPDEST DUP2 EQ PUSH2 0x125C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x1268 DUP2 PUSH2 0x1157 JUMP JUMPDEST DUP2 EQ PUSH2 0x1273 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x127F DUP2 PUSH2 0x1161 JUMP JUMPDEST DUP2 EQ PUSH2 0x128A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x1296 DUP2 PUSH2 0x118B JUMP JUMPDEST DUP2 EQ PUSH2 0x12A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH20 0xA91A740C0DE3883C5213C5981D98D2396A8B60B3 0xCF 0x2F 0xB3 PUSH5 0xD7E4CC826A DUP5 0x1E PUSH5 0x736F6C6343 STOP ADDMOD DIV STOP CALLER ","sourceMap":"57:2471:1:-:0;;;713:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;769:1;751:15;;:19;;;;;;;;;;;;;;;;;;713:62;57:2471;;7:189:4;87:5;118:6;112:13;103:22;;134:56;184:5;134:56;:::i;:::-;93:103;;;;:::o;202:330::-;295:6;344:2;332:9;323:7;319:23;315:32;312:2;;;360:1;357;350:12;312:2;403:1;428:87;507:7;498:6;487:9;483:22;428:87;:::i;:::-;418:97;;374:151;302:230;;;;:::o;538:96::-;575:7;604:24;622:5;604:24;:::i;:::-;593:35;;583:51;;;:::o;640:119::-;700:7;729:24;747:5;729:24;:::i;:::-;718:35;;708:51;;;:::o;765:126::-;802:7;842:42;835:5;831:54;820:65;;810:81;;;:::o;897:168::-;993:47;1034:5;993:47;:::i;:::-;986:5;983:58;973:2;;1055:1;1052;1045:12;973:2;963:102;:::o;57:2471:1:-;;;;;;;"},"deployedBytecode":{"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:19211:4","statements":[{"body":{"nodeType":"YulBlock","src":"90:260:4","statements":[{"nodeType":"YulAssignment","src":"100:74:4","value":{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"166:6:4"}],"functionName":{"name":"array_allocation_size_t_bytes_memory_ptr","nodeType":"YulIdentifier","src":"125:40:4"},"nodeType":"YulFunctionCall","src":"125:48:4"}],"functionName":{"name":"allocate_memory","nodeType":"YulIdentifier","src":"109:15:4"},"nodeType":"YulFunctionCall","src":"109:65:4"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"100:5:4"}]},{"expression":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"190:5:4"},{"name":"length","nodeType":"YulIdentifier","src":"197:6:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"183:6:4"},"nodeType":"YulFunctionCall","src":"183:21:4"},"nodeType":"YulExpressionStatement","src":"183:21:4"},{"nodeType":"YulVariableDeclaration","src":"213:27:4","value":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"228:5:4"},{"kind":"number","nodeType":"YulLiteral","src":"235:4:4","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"224:3:4"},"nodeType":"YulFunctionCall","src":"224:16:4"},"variables":[{"name":"dst","nodeType":"YulTypedName","src":"217:3:4","type":""}]},{"body":{"nodeType":"YulBlock","src":"278:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"287:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"290:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"280:6:4"},"nodeType":"YulFunctionCall","src":"280:12:4"},"nodeType":"YulExpressionStatement","src":"280:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"259:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"264:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"255:3:4"},"nodeType":"YulFunctionCall","src":"255:16:4"},{"name":"end","nodeType":"YulIdentifier","src":"273:3:4"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"252:2:4"},"nodeType":"YulFunctionCall","src":"252:25:4"},"nodeType":"YulIf","src":"249:2:4"},{"expression":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"327:3:4"},{"name":"dst","nodeType":"YulIdentifier","src":"332:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"337:6:4"}],"functionName":{"name":"copy_calldata_to_memory","nodeType":"YulIdentifier","src":"303:23:4"},"nodeType":"YulFunctionCall","src":"303:41:4"},"nodeType":"YulExpressionStatement","src":"303:41:4"}]},"name":"abi_decode_available_length_t_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"63:3:4","type":""},{"name":"length","nodeType":"YulTypedName","src":"68:6:4","type":""},{"name":"end","nodeType":"YulTypedName","src":"76:3:4","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"84:5:4","type":""}],"src":"7:343:4"},{"body":{"nodeType":"YulBlock","src":"440:261:4","statements":[{"nodeType":"YulAssignment","src":"450:75:4","value":{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"517:6:4"}],"functionName":{"name":"array_allocation_size_t_string_memory_ptr","nodeType":"YulIdentifier","src":"475:41:4"},"nodeType":"YulFunctionCall","src":"475:49:4"}],"functionName":{"name":"allocate_memory","nodeType":"YulIdentifier","src":"459:15:4"},"nodeType":"YulFunctionCall","src":"459:66:4"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"450:5:4"}]},{"expression":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"541:5:4"},{"name":"length","nodeType":"YulIdentifier","src":"548:6:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"534:6:4"},"nodeType":"YulFunctionCall","src":"534:21:4"},"nodeType":"YulExpressionStatement","src":"534:21:4"},{"nodeType":"YulVariableDeclaration","src":"564:27:4","value":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"579:5:4"},{"kind":"number","nodeType":"YulLiteral","src":"586:4:4","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"575:3:4"},"nodeType":"YulFunctionCall","src":"575:16:4"},"variables":[{"name":"dst","nodeType":"YulTypedName","src":"568:3:4","type":""}]},{"body":{"nodeType":"YulBlock","src":"629:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"638:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"641:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"631:6:4"},"nodeType":"YulFunctionCall","src":"631:12:4"},"nodeType":"YulExpressionStatement","src":"631:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"610:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"615:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"606:3:4"},"nodeType":"YulFunctionCall","src":"606:16:4"},{"name":"end","nodeType":"YulIdentifier","src":"624:3:4"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"603:2:4"},"nodeType":"YulFunctionCall","src":"603:25:4"},"nodeType":"YulIf","src":"600:2:4"},{"expression":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"678:3:4"},{"name":"dst","nodeType":"YulIdentifier","src":"683:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"688:6:4"}],"functionName":{"name":"copy_calldata_to_memory","nodeType":"YulIdentifier","src":"654:23:4"},"nodeType":"YulFunctionCall","src":"654:41:4"},"nodeType":"YulExpressionStatement","src":"654:41:4"}]},"name":"abi_decode_available_length_t_string_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"413:3:4","type":""},{"name":"length","nodeType":"YulTypedName","src":"418:6:4","type":""},{"name":"end","nodeType":"YulTypedName","src":"426:3:4","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"434:5:4","type":""}],"src":"356:345:4"},{"body":{"nodeType":"YulBlock","src":"759:87:4","statements":[{"nodeType":"YulAssignment","src":"769:29:4","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"791:6:4"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"778:12:4"},"nodeType":"YulFunctionCall","src":"778:20:4"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"769:5:4"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"834:5:4"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"807:26:4"},"nodeType":"YulFunctionCall","src":"807:33:4"},"nodeType":"YulExpressionStatement","src":"807:33:4"}]},"name":"abi_decode_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"737:6:4","type":""},{"name":"end","nodeType":"YulTypedName","src":"745:3:4","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"753:5:4","type":""}],"src":"707:139:4"},{"body":{"nodeType":"YulBlock","src":"904:87:4","statements":[{"nodeType":"YulAssignment","src":"914:29:4","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"936:6:4"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"923:12:4"},"nodeType":"YulFunctionCall","src":"923:20:4"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"914:5:4"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"979:5:4"}],"functionName":{"name":"validator_revert_t_bytes32","nodeType":"YulIdentifier","src":"952:26:4"},"nodeType":"YulFunctionCall","src":"952:33:4"},"nodeType":"YulExpressionStatement","src":"952:33:4"}]},"name":"abi_decode_t_bytes32","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"882:6:4","type":""},{"name":"end","nodeType":"YulTypedName","src":"890:3:4","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"898:5:4","type":""}],"src":"852:139:4"},{"body":{"nodeType":"YulBlock","src":"1071:210:4","statements":[{"body":{"nodeType":"YulBlock","src":"1120:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1129:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1132:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1122:6:4"},"nodeType":"YulFunctionCall","src":"1122:12:4"},"nodeType":"YulExpressionStatement","src":"1122:12:4"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1099:6:4"},{"kind":"number","nodeType":"YulLiteral","src":"1107:4:4","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1095:3:4"},"nodeType":"YulFunctionCall","src":"1095:17:4"},{"name":"end","nodeType":"YulIdentifier","src":"1114:3:4"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1091:3:4"},"nodeType":"YulFunctionCall","src":"1091:27:4"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1084:6:4"},"nodeType":"YulFunctionCall","src":"1084:35:4"},"nodeType":"YulIf","src":"1081:2:4"},{"nodeType":"YulVariableDeclaration","src":"1145:34:4","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1172:6:4"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1159:12:4"},"nodeType":"YulFunctionCall","src":"1159:20:4"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"1149:6:4","type":""}]},{"nodeType":"YulAssignment","src":"1188:87:4","value":{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1248:6:4"},{"kind":"number","nodeType":"YulLiteral","src":"1256:4:4","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1244:3:4"},"nodeType":"YulFunctionCall","src":"1244:17:4"},{"name":"length","nodeType":"YulIdentifier","src":"1263:6:4"},{"name":"end","nodeType":"YulIdentifier","src":"1271:3:4"}],"functionName":{"name":"abi_decode_available_length_t_bytes_memory_ptr","nodeType":"YulIdentifier","src":"1197:46:4"},"nodeType":"YulFunctionCall","src":"1197:78:4"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"1188:5:4"}]}]},"name":"abi_decode_t_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"1049:6:4","type":""},{"name":"end","nodeType":"YulTypedName","src":"1057:3:4","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"1065:5:4","type":""}],"src":"1010:271:4"},{"body":{"nodeType":"YulBlock","src":"1338:86:4","statements":[{"nodeType":"YulAssignment","src":"1348:29:4","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1370:6:4"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1357:12:4"},"nodeType":"YulFunctionCall","src":"1357:20:4"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"1348:5:4"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1412:5:4"}],"functionName":{"name":"validator_revert_t_int256","nodeType":"YulIdentifier","src":"1386:25:4"},"nodeType":"YulFunctionCall","src":"1386:32:4"},"nodeType":"YulExpressionStatement","src":"1386:32:4"}]},"name":"abi_decode_t_int256","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"1316:6:4","type":""},{"name":"end","nodeType":"YulTypedName","src":"1324:3:4","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"1332:5:4","type":""}],"src":"1287:137:4"},{"body":{"nodeType":"YulBlock","src":"1506:211:4","statements":[{"body":{"nodeType":"YulBlock","src":"1555:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1564:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1567:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1557:6:4"},"nodeType":"YulFunctionCall","src":"1557:12:4"},"nodeType":"YulExpressionStatement","src":"1557:12:4"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1534:6:4"},{"kind":"number","nodeType":"YulLiteral","src":"1542:4:4","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1530:3:4"},"nodeType":"YulFunctionCall","src":"1530:17:4"},{"name":"end","nodeType":"YulIdentifier","src":"1549:3:4"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1526:3:4"},"nodeType":"YulFunctionCall","src":"1526:27:4"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1519:6:4"},"nodeType":"YulFunctionCall","src":"1519:35:4"},"nodeType":"YulIf","src":"1516:2:4"},{"nodeType":"YulVariableDeclaration","src":"1580:34:4","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1607:6:4"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1594:12:4"},"nodeType":"YulFunctionCall","src":"1594:20:4"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"1584:6:4","type":""}]},{"nodeType":"YulAssignment","src":"1623:88:4","value":{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1684:6:4"},{"kind":"number","nodeType":"YulLiteral","src":"1692:4:4","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1680:3:4"},"nodeType":"YulFunctionCall","src":"1680:17:4"},{"name":"length","nodeType":"YulIdentifier","src":"1699:6:4"},{"name":"end","nodeType":"YulIdentifier","src":"1707:3:4"}],"functionName":{"name":"abi_decode_available_length_t_string_memory_ptr","nodeType":"YulIdentifier","src":"1632:47:4"},"nodeType":"YulFunctionCall","src":"1632:79:4"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"1623:5:4"}]}]},"name":"abi_decode_t_string_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"1484:6:4","type":""},{"name":"end","nodeType":"YulTypedName","src":"1492:3:4","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"1500:5:4","type":""}],"src":"1444:273:4"},{"body":{"nodeType":"YulBlock","src":"1775:87:4","statements":[{"nodeType":"YulAssignment","src":"1785:29:4","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1807:6:4"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1794:12:4"},"nodeType":"YulFunctionCall","src":"1794:20:4"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"1785:5:4"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1850:5:4"}],"functionName":{"name":"validator_revert_t_uint256","nodeType":"YulIdentifier","src":"1823:26:4"},"nodeType":"YulFunctionCall","src":"1823:33:4"},"nodeType":"YulExpressionStatement","src":"1823:33:4"}]},"name":"abi_decode_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"1753:6:4","type":""},{"name":"end","nodeType":"YulTypedName","src":"1761:3:4","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"1769:5:4","type":""}],"src":"1723:139:4"},{"body":{"nodeType":"YulBlock","src":"1934:196:4","statements":[{"body":{"nodeType":"YulBlock","src":"1980:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1989:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1992:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1982:6:4"},"nodeType":"YulFunctionCall","src":"1982:12:4"},"nodeType":"YulExpressionStatement","src":"1982:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1955:7:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"1964:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1951:3:4"},"nodeType":"YulFunctionCall","src":"1951:23:4"},{"kind":"number","nodeType":"YulLiteral","src":"1976:2:4","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1947:3:4"},"nodeType":"YulFunctionCall","src":"1947:32:4"},"nodeType":"YulIf","src":"1944:2:4"},{"nodeType":"YulBlock","src":"2006:117:4","statements":[{"nodeType":"YulVariableDeclaration","src":"2021:15:4","value":{"kind":"number","nodeType":"YulLiteral","src":"2035:1:4","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"2025:6:4","type":""}]},{"nodeType":"YulAssignment","src":"2050:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2085:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"2096:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2081:3:4"},"nodeType":"YulFunctionCall","src":"2081:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2105:7:4"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"2060:20:4"},"nodeType":"YulFunctionCall","src":"2060:53:4"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2050:6:4"}]}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1904:9:4","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1915:7:4","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1927:6:4","type":""}],"src":"1868:262:4"},{"body":{"nodeType":"YulBlock","src":"2202:196:4","statements":[{"body":{"nodeType":"YulBlock","src":"2248:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2257:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2260:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2250:6:4"},"nodeType":"YulFunctionCall","src":"2250:12:4"},"nodeType":"YulExpressionStatement","src":"2250:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2223:7:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"2232:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2219:3:4"},"nodeType":"YulFunctionCall","src":"2219:23:4"},{"kind":"number","nodeType":"YulLiteral","src":"2244:2:4","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2215:3:4"},"nodeType":"YulFunctionCall","src":"2215:32:4"},"nodeType":"YulIf","src":"2212:2:4"},{"nodeType":"YulBlock","src":"2274:117:4","statements":[{"nodeType":"YulVariableDeclaration","src":"2289:15:4","value":{"kind":"number","nodeType":"YulLiteral","src":"2303:1:4","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"2293:6:4","type":""}]},{"nodeType":"YulAssignment","src":"2318:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2353:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"2364:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2349:3:4"},"nodeType":"YulFunctionCall","src":"2349:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2373:7:4"}],"functionName":{"name":"abi_decode_t_bytes32","nodeType":"YulIdentifier","src":"2328:20:4"},"nodeType":"YulFunctionCall","src":"2328:53:4"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2318:6:4"}]}]}]},"name":"abi_decode_tuple_t_bytes32","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2172:9:4","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2183:7:4","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2195:6:4","type":""}],"src":"2136:262:4"},{"body":{"nodeType":"YulBlock","src":"2487:324:4","statements":[{"body":{"nodeType":"YulBlock","src":"2533:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2542:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2545:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2535:6:4"},"nodeType":"YulFunctionCall","src":"2535:12:4"},"nodeType":"YulExpressionStatement","src":"2535:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2508:7:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"2517:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2504:3:4"},"nodeType":"YulFunctionCall","src":"2504:23:4"},{"kind":"number","nodeType":"YulLiteral","src":"2529:2:4","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2500:3:4"},"nodeType":"YulFunctionCall","src":"2500:32:4"},"nodeType":"YulIf","src":"2497:2:4"},{"nodeType":"YulBlock","src":"2559:117:4","statements":[{"nodeType":"YulVariableDeclaration","src":"2574:15:4","value":{"kind":"number","nodeType":"YulLiteral","src":"2588:1:4","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"2578:6:4","type":""}]},{"nodeType":"YulAssignment","src":"2603:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2638:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"2649:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2634:3:4"},"nodeType":"YulFunctionCall","src":"2634:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2658:7:4"}],"functionName":{"name":"abi_decode_t_bytes32","nodeType":"YulIdentifier","src":"2613:20:4"},"nodeType":"YulFunctionCall","src":"2613:53:4"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2603:6:4"}]}]},{"nodeType":"YulBlock","src":"2686:118:4","statements":[{"nodeType":"YulVariableDeclaration","src":"2701:16:4","value":{"kind":"number","nodeType":"YulLiteral","src":"2715:2:4","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"2705:6:4","type":""}]},{"nodeType":"YulAssignment","src":"2731:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2766:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"2777:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2762:3:4"},"nodeType":"YulFunctionCall","src":"2762:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2786:7:4"}],"functionName":{"name":"abi_decode_t_bytes32","nodeType":"YulIdentifier","src":"2741:20:4"},"nodeType":"YulFunctionCall","src":"2741:53:4"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"2731:6:4"}]}]}]},"name":"abi_decode_tuple_t_bytes32t_bytes32","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2449:9:4","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2460:7:4","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2472:6:4","type":""},{"name":"value1","nodeType":"YulTypedName","src":"2480:6:4","type":""}],"src":"2404:407:4"},{"body":{"nodeType":"YulBlock","src":"2892:298:4","statements":[{"body":{"nodeType":"YulBlock","src":"2938:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2947:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2950:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2940:6:4"},"nodeType":"YulFunctionCall","src":"2940:12:4"},"nodeType":"YulExpressionStatement","src":"2940:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2913:7:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"2922:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2909:3:4"},"nodeType":"YulFunctionCall","src":"2909:23:4"},{"kind":"number","nodeType":"YulLiteral","src":"2934:2:4","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2905:3:4"},"nodeType":"YulFunctionCall","src":"2905:32:4"},"nodeType":"YulIf","src":"2902:2:4"},{"nodeType":"YulBlock","src":"2964:219:4","statements":[{"nodeType":"YulVariableDeclaration","src":"2979:45:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3010:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"3021:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3006:3:4"},"nodeType":"YulFunctionCall","src":"3006:17:4"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2993:12:4"},"nodeType":"YulFunctionCall","src":"2993:31:4"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"2983:6:4","type":""}]},{"body":{"nodeType":"YulBlock","src":"3071:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3080:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3083:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3073:6:4"},"nodeType":"YulFunctionCall","src":"3073:12:4"},"nodeType":"YulExpressionStatement","src":"3073:12:4"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"3043:6:4"},{"kind":"number","nodeType":"YulLiteral","src":"3051:18:4","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3040:2:4"},"nodeType":"YulFunctionCall","src":"3040:30:4"},"nodeType":"YulIf","src":"3037:2:4"},{"nodeType":"YulAssignment","src":"3101:72:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3145:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"3156:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3141:3:4"},"nodeType":"YulFunctionCall","src":"3141:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"3165:7:4"}],"functionName":{"name":"abi_decode_t_bytes_memory_ptr","nodeType":"YulIdentifier","src":"3111:29:4"},"nodeType":"YulFunctionCall","src":"3111:62:4"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3101:6:4"}]}]}]},"name":"abi_decode_tuple_t_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2862:9:4","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2873:7:4","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2885:6:4","type":""}],"src":"2817:373:4"},{"body":{"nodeType":"YulBlock","src":"3261:195:4","statements":[{"body":{"nodeType":"YulBlock","src":"3307:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3316:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3319:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3309:6:4"},"nodeType":"YulFunctionCall","src":"3309:12:4"},"nodeType":"YulExpressionStatement","src":"3309:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3282:7:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"3291:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3278:3:4"},"nodeType":"YulFunctionCall","src":"3278:23:4"},{"kind":"number","nodeType":"YulLiteral","src":"3303:2:4","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3274:3:4"},"nodeType":"YulFunctionCall","src":"3274:32:4"},"nodeType":"YulIf","src":"3271:2:4"},{"nodeType":"YulBlock","src":"3333:116:4","statements":[{"nodeType":"YulVariableDeclaration","src":"3348:15:4","value":{"kind":"number","nodeType":"YulLiteral","src":"3362:1:4","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"3352:6:4","type":""}]},{"nodeType":"YulAssignment","src":"3377:62:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3411:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"3422:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3407:3:4"},"nodeType":"YulFunctionCall","src":"3407:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"3431:7:4"}],"functionName":{"name":"abi_decode_t_int256","nodeType":"YulIdentifier","src":"3387:19:4"},"nodeType":"YulFunctionCall","src":"3387:52:4"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3377:6:4"}]}]}]},"name":"abi_decode_tuple_t_int256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3231:9:4","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3242:7:4","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3254:6:4","type":""}],"src":"3196:260:4"},{"body":{"nodeType":"YulBlock","src":"3538:299:4","statements":[{"body":{"nodeType":"YulBlock","src":"3584:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3593:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3596:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3586:6:4"},"nodeType":"YulFunctionCall","src":"3586:12:4"},"nodeType":"YulExpressionStatement","src":"3586:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3559:7:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"3568:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3555:3:4"},"nodeType":"YulFunctionCall","src":"3555:23:4"},{"kind":"number","nodeType":"YulLiteral","src":"3580:2:4","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3551:3:4"},"nodeType":"YulFunctionCall","src":"3551:32:4"},"nodeType":"YulIf","src":"3548:2:4"},{"nodeType":"YulBlock","src":"3610:220:4","statements":[{"nodeType":"YulVariableDeclaration","src":"3625:45:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3656:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"3667:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3652:3:4"},"nodeType":"YulFunctionCall","src":"3652:17:4"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3639:12:4"},"nodeType":"YulFunctionCall","src":"3639:31:4"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"3629:6:4","type":""}]},{"body":{"nodeType":"YulBlock","src":"3717:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3726:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3729:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3719:6:4"},"nodeType":"YulFunctionCall","src":"3719:12:4"},"nodeType":"YulExpressionStatement","src":"3719:12:4"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"3689:6:4"},{"kind":"number","nodeType":"YulLiteral","src":"3697:18:4","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3686:2:4"},"nodeType":"YulFunctionCall","src":"3686:30:4"},"nodeType":"YulIf","src":"3683:2:4"},{"nodeType":"YulAssignment","src":"3747:73:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3792:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"3803:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3788:3:4"},"nodeType":"YulFunctionCall","src":"3788:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"3812:7:4"}],"functionName":{"name":"abi_decode_t_string_memory_ptr","nodeType":"YulIdentifier","src":"3757:30:4"},"nodeType":"YulFunctionCall","src":"3757:63:4"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3747:6:4"}]}]}]},"name":"abi_decode_tuple_t_string_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3508:9:4","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3519:7:4","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3531:6:4","type":""}],"src":"3462:375:4"},{"body":{"nodeType":"YulBlock","src":"3909:196:4","statements":[{"body":{"nodeType":"YulBlock","src":"3955:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3964:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3967:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3957:6:4"},"nodeType":"YulFunctionCall","src":"3957:12:4"},"nodeType":"YulExpressionStatement","src":"3957:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3930:7:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"3939:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3926:3:4"},"nodeType":"YulFunctionCall","src":"3926:23:4"},{"kind":"number","nodeType":"YulLiteral","src":"3951:2:4","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3922:3:4"},"nodeType":"YulFunctionCall","src":"3922:32:4"},"nodeType":"YulIf","src":"3919:2:4"},{"nodeType":"YulBlock","src":"3981:117:4","statements":[{"nodeType":"YulVariableDeclaration","src":"3996:15:4","value":{"kind":"number","nodeType":"YulLiteral","src":"4010:1:4","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"4000:6:4","type":""}]},{"nodeType":"YulAssignment","src":"4025:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4060:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"4071:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4056:3:4"},"nodeType":"YulFunctionCall","src":"4056:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4080:7:4"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"4035:20:4"},"nodeType":"YulFunctionCall","src":"4035:53:4"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"4025:6:4"}]}]}]},"name":"abi_decode_tuple_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3879:9:4","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3890:7:4","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3902:6:4","type":""}],"src":"3843:262:4"},{"body":{"nodeType":"YulBlock","src":"4204:427:4","statements":[{"body":{"nodeType":"YulBlock","src":"4250:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4259:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4262:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4252:6:4"},"nodeType":"YulFunctionCall","src":"4252:12:4"},"nodeType":"YulExpressionStatement","src":"4252:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"4225:7:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"4234:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4221:3:4"},"nodeType":"YulFunctionCall","src":"4221:23:4"},{"kind":"number","nodeType":"YulLiteral","src":"4246:2:4","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4217:3:4"},"nodeType":"YulFunctionCall","src":"4217:32:4"},"nodeType":"YulIf","src":"4214:2:4"},{"nodeType":"YulBlock","src":"4276:117:4","statements":[{"nodeType":"YulVariableDeclaration","src":"4291:15:4","value":{"kind":"number","nodeType":"YulLiteral","src":"4305:1:4","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"4295:6:4","type":""}]},{"nodeType":"YulAssignment","src":"4320:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4355:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"4366:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4351:3:4"},"nodeType":"YulFunctionCall","src":"4351:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4375:7:4"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"4330:20:4"},"nodeType":"YulFunctionCall","src":"4330:53:4"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"4320:6:4"}]}]},{"nodeType":"YulBlock","src":"4403:221:4","statements":[{"nodeType":"YulVariableDeclaration","src":"4418:46:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4449:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"4460:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4445:3:4"},"nodeType":"YulFunctionCall","src":"4445:18:4"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4432:12:4"},"nodeType":"YulFunctionCall","src":"4432:32:4"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"4422:6:4","type":""}]},{"body":{"nodeType":"YulBlock","src":"4511:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4520:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4523:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4513:6:4"},"nodeType":"YulFunctionCall","src":"4513:12:4"},"nodeType":"YulExpressionStatement","src":"4513:12:4"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"4483:6:4"},{"kind":"number","nodeType":"YulLiteral","src":"4491:18:4","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4480:2:4"},"nodeType":"YulFunctionCall","src":"4480:30:4"},"nodeType":"YulIf","src":"4477:2:4"},{"nodeType":"YulAssignment","src":"4541:73:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4586:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"4597:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4582:3:4"},"nodeType":"YulFunctionCall","src":"4582:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4606:7:4"}],"functionName":{"name":"abi_decode_t_string_memory_ptr","nodeType":"YulIdentifier","src":"4551:30:4"},"nodeType":"YulFunctionCall","src":"4551:63:4"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"4541:6:4"}]}]}]},"name":"abi_decode_tuple_t_uint256t_string_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4166:9:4","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"4177:7:4","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"4189:6:4","type":""},{"name":"value1","nodeType":"YulTypedName","src":"4197:6:4","type":""}],"src":"4111:520:4"},{"body":{"nodeType":"YulBlock","src":"4720:324:4","statements":[{"body":{"nodeType":"YulBlock","src":"4766:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4775:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4778:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4768:6:4"},"nodeType":"YulFunctionCall","src":"4768:12:4"},"nodeType":"YulExpressionStatement","src":"4768:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"4741:7:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"4750:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4737:3:4"},"nodeType":"YulFunctionCall","src":"4737:23:4"},{"kind":"number","nodeType":"YulLiteral","src":"4762:2:4","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4733:3:4"},"nodeType":"YulFunctionCall","src":"4733:32:4"},"nodeType":"YulIf","src":"4730:2:4"},{"nodeType":"YulBlock","src":"4792:117:4","statements":[{"nodeType":"YulVariableDeclaration","src":"4807:15:4","value":{"kind":"number","nodeType":"YulLiteral","src":"4821:1:4","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"4811:6:4","type":""}]},{"nodeType":"YulAssignment","src":"4836:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4871:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"4882:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4867:3:4"},"nodeType":"YulFunctionCall","src":"4867:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4891:7:4"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"4846:20:4"},"nodeType":"YulFunctionCall","src":"4846:53:4"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"4836:6:4"}]}]},{"nodeType":"YulBlock","src":"4919:118:4","statements":[{"nodeType":"YulVariableDeclaration","src":"4934:16:4","value":{"kind":"number","nodeType":"YulLiteral","src":"4948:2:4","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"4938:6:4","type":""}]},{"nodeType":"YulAssignment","src":"4964:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4999:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"5010:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4995:3:4"},"nodeType":"YulFunctionCall","src":"4995:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"5019:7:4"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"4974:20:4"},"nodeType":"YulFunctionCall","src":"4974:53:4"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"4964:6:4"}]}]}]},"name":"abi_decode_tuple_t_uint256t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4682:9:4","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"4693:7:4","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"4705:6:4","type":""},{"name":"value1","nodeType":"YulTypedName","src":"4713:6:4","type":""}],"src":"4637:407:4"},{"body":{"nodeType":"YulBlock","src":"5187:787:4","statements":[{"body":{"nodeType":"YulBlock","src":"5234:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5243:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5246:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5236:6:4"},"nodeType":"YulFunctionCall","src":"5236:12:4"},"nodeType":"YulExpressionStatement","src":"5236:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"5208:7:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"5217:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5204:3:4"},"nodeType":"YulFunctionCall","src":"5204:23:4"},{"kind":"number","nodeType":"YulLiteral","src":"5229:3:4","type":"","value":"128"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"5200:3:4"},"nodeType":"YulFunctionCall","src":"5200:33:4"},"nodeType":"YulIf","src":"5197:2:4"},{"nodeType":"YulBlock","src":"5260:117:4","statements":[{"nodeType":"YulVariableDeclaration","src":"5275:15:4","value":{"kind":"number","nodeType":"YulLiteral","src":"5289:1:4","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"5279:6:4","type":""}]},{"nodeType":"YulAssignment","src":"5304:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5339:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"5350:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5335:3:4"},"nodeType":"YulFunctionCall","src":"5335:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"5359:7:4"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"5314:20:4"},"nodeType":"YulFunctionCall","src":"5314:53:4"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"5304:6:4"}]}]},{"nodeType":"YulBlock","src":"5387:118:4","statements":[{"nodeType":"YulVariableDeclaration","src":"5402:16:4","value":{"kind":"number","nodeType":"YulLiteral","src":"5416:2:4","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"5406:6:4","type":""}]},{"nodeType":"YulAssignment","src":"5432:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5467:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"5478:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5463:3:4"},"nodeType":"YulFunctionCall","src":"5463:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"5487:7:4"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"5442:20:4"},"nodeType":"YulFunctionCall","src":"5442:53:4"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"5432:6:4"}]}]},{"nodeType":"YulBlock","src":"5515:221:4","statements":[{"nodeType":"YulVariableDeclaration","src":"5530:46:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5561:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"5572:2:4","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5557:3:4"},"nodeType":"YulFunctionCall","src":"5557:18:4"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"5544:12:4"},"nodeType":"YulFunctionCall","src":"5544:32:4"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"5534:6:4","type":""}]},{"body":{"nodeType":"YulBlock","src":"5623:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5632:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5635:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5625:6:4"},"nodeType":"YulFunctionCall","src":"5625:12:4"},"nodeType":"YulExpressionStatement","src":"5625:12:4"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"5595:6:4"},{"kind":"number","nodeType":"YulLiteral","src":"5603:18:4","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5592:2:4"},"nodeType":"YulFunctionCall","src":"5592:30:4"},"nodeType":"YulIf","src":"5589:2:4"},{"nodeType":"YulAssignment","src":"5653:73:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5698:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"5709:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5694:3:4"},"nodeType":"YulFunctionCall","src":"5694:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"5718:7:4"}],"functionName":{"name":"abi_decode_t_string_memory_ptr","nodeType":"YulIdentifier","src":"5663:30:4"},"nodeType":"YulFunctionCall","src":"5663:63:4"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"5653:6:4"}]}]},{"nodeType":"YulBlock","src":"5746:221:4","statements":[{"nodeType":"YulVariableDeclaration","src":"5761:46:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5792:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"5803:2:4","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5788:3:4"},"nodeType":"YulFunctionCall","src":"5788:18:4"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"5775:12:4"},"nodeType":"YulFunctionCall","src":"5775:32:4"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"5765:6:4","type":""}]},{"body":{"nodeType":"YulBlock","src":"5854:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5863:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5866:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5856:6:4"},"nodeType":"YulFunctionCall","src":"5856:12:4"},"nodeType":"YulExpressionStatement","src":"5856:12:4"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"5826:6:4"},{"kind":"number","nodeType":"YulLiteral","src":"5834:18:4","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5823:2:4"},"nodeType":"YulFunctionCall","src":"5823:30:4"},"nodeType":"YulIf","src":"5820:2:4"},{"nodeType":"YulAssignment","src":"5884:73:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5929:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"5940:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5925:3:4"},"nodeType":"YulFunctionCall","src":"5925:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"5949:7:4"}],"functionName":{"name":"abi_decode_t_string_memory_ptr","nodeType":"YulIdentifier","src":"5894:30:4"},"nodeType":"YulFunctionCall","src":"5894:63:4"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"5884:6:4"}]}]}]},"name":"abi_decode_tuple_t_uint256t_uint256t_string_memory_ptrt_string_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5133:9:4","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"5144:7:4","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"5156:6:4","type":""},{"name":"value1","nodeType":"YulTypedName","src":"5164:6:4","type":""},{"name":"value2","nodeType":"YulTypedName","src":"5172:6:4","type":""},{"name":"value3","nodeType":"YulTypedName","src":"5180:6:4","type":""}],"src":"5050:924:4"},{"body":{"nodeType":"YulBlock","src":"6060:99:4","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6104:6:4"},{"name":"pos","nodeType":"YulIdentifier","src":"6112:3:4"}],"functionName":{"name":"abi_encode_t_bytes32_to_t_bytes32","nodeType":"YulIdentifier","src":"6070:33:4"},"nodeType":"YulFunctionCall","src":"6070:46:4"},"nodeType":"YulExpressionStatement","src":"6070:46:4"},{"nodeType":"YulAssignment","src":"6125:28:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6143:3:4"},{"kind":"number","nodeType":"YulLiteral","src":"6148:4:4","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6139:3:4"},"nodeType":"YulFunctionCall","src":"6139:14:4"},"variableNames":[{"name":"updatedPos","nodeType":"YulIdentifier","src":"6125:10:4"}]}]},"name":"abi_encodeUpdatedPos_t_bytes32_to_t_bytes32","nodeType":"YulFunctionDefinition","parameters":[{"name":"value0","nodeType":"YulTypedName","src":"6033:6:4","type":""},{"name":"pos","nodeType":"YulTypedName","src":"6041:3:4","type":""}],"returnVariables":[{"name":"updatedPos","nodeType":"YulTypedName","src":"6049:10:4","type":""}],"src":"5980:179:4"},{"body":{"nodeType":"YulBlock","src":"6245:99:4","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6289:6:4"},{"name":"pos","nodeType":"YulIdentifier","src":"6297:3:4"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256","nodeType":"YulIdentifier","src":"6255:33:4"},"nodeType":"YulFunctionCall","src":"6255:46:4"},"nodeType":"YulExpressionStatement","src":"6255:46:4"},{"nodeType":"YulAssignment","src":"6310:28:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6328:3:4"},{"kind":"number","nodeType":"YulLiteral","src":"6333:4:4","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6324:3:4"},"nodeType":"YulFunctionCall","src":"6324:14:4"},"variableNames":[{"name":"updatedPos","nodeType":"YulIdentifier","src":"6310:10:4"}]}]},"name":"abi_encodeUpdatedPos_t_uint256_to_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value0","nodeType":"YulTypedName","src":"6218:6:4","type":""},{"name":"pos","nodeType":"YulTypedName","src":"6226:3:4","type":""}],"returnVariables":[{"name":"updatedPos","nodeType":"YulTypedName","src":"6234:10:4","type":""}],"src":"6165:179:4"},{"body":{"nodeType":"YulBlock","src":"6415:53:4","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6432:3:4"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6455:5:4"}],"functionName":{"name":"cleanup_t_address","nodeType":"YulIdentifier","src":"6437:17:4"},"nodeType":"YulFunctionCall","src":"6437:24:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6425:6:4"},"nodeType":"YulFunctionCall","src":"6425:37:4"},"nodeType":"YulExpressionStatement","src":"6425:37:4"}]},"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"6403:5:4","type":""},{"name":"pos","nodeType":"YulTypedName","src":"6410:3:4","type":""}],"src":"6350:118:4"},{"body":{"nodeType":"YulBlock","src":"6618:582:4","statements":[{"nodeType":"YulVariableDeclaration","src":"6628:66:4","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6688:5:4"}],"functionName":{"name":"array_length_t_array$_t_bytes32_$2_memory_ptr","nodeType":"YulIdentifier","src":"6642:45:4"},"nodeType":"YulFunctionCall","src":"6642:52:4"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"6632:6:4","type":""}]},{"nodeType":"YulAssignment","src":"6703:91:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6782:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"6787:6:4"}],"functionName":{"name":"array_storeLengthForEncoding_t_array$_t_bytes32_$2_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"6710:71:4"},"nodeType":"YulFunctionCall","src":"6710:84:4"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"6703:3:4"}]},{"nodeType":"YulVariableDeclaration","src":"6803:69:4","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6866:5:4"}],"functionName":{"name":"array_dataslot_t_array$_t_bytes32_$2_memory_ptr","nodeType":"YulIdentifier","src":"6818:47:4"},"nodeType":"YulFunctionCall","src":"6818:54:4"},"variables":[{"name":"baseRef","nodeType":"YulTypedName","src":"6807:7:4","type":""}]},{"nodeType":"YulVariableDeclaration","src":"6881:21:4","value":{"name":"baseRef","nodeType":"YulIdentifier","src":"6895:7:4"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"6885:6:4","type":""}]},{"body":{"nodeType":"YulBlock","src":"6971:222:4","statements":[{"nodeType":"YulVariableDeclaration","src":"6985:34:4","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"7012:6:4"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"7006:5:4"},"nodeType":"YulFunctionCall","src":"7006:13:4"},"variables":[{"name":"elementValue0","nodeType":"YulTypedName","src":"6989:13:4","type":""}]},{"nodeType":"YulAssignment","src":"7032:70:4","value":{"arguments":[{"name":"elementValue0","nodeType":"YulIdentifier","src":"7083:13:4"},{"name":"pos","nodeType":"YulIdentifier","src":"7098:3:4"}],"functionName":{"name":"abi_encodeUpdatedPos_t_bytes32_to_t_bytes32","nodeType":"YulIdentifier","src":"7039:43:4"},"nodeType":"YulFunctionCall","src":"7039:63:4"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"7032:3:4"}]},{"nodeType":"YulAssignment","src":"7115:68:4","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"7176:6:4"}],"functionName":{"name":"array_nextElement_t_array$_t_bytes32_$2_memory_ptr","nodeType":"YulIdentifier","src":"7125:50:4"},"nodeType":"YulFunctionCall","src":"7125:58:4"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"7115:6:4"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"6933:1:4"},{"name":"length","nodeType":"YulIdentifier","src":"6936:6:4"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"6930:2:4"},"nodeType":"YulFunctionCall","src":"6930:13:4"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"6944:18:4","statements":[{"nodeType":"YulAssignment","src":"6946:14:4","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"6955:1:4"},{"kind":"number","nodeType":"YulLiteral","src":"6958:1:4","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6951:3:4"},"nodeType":"YulFunctionCall","src":"6951:9:4"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"6946:1:4"}]}]},"pre":{"nodeType":"YulBlock","src":"6915:14:4","statements":[{"nodeType":"YulVariableDeclaration","src":"6917:10:4","value":{"kind":"number","nodeType":"YulLiteral","src":"6926:1:4","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"6921:1:4","type":""}]}]},"src":"6911:282:4"}]},"name":"abi_encode_t_array$_t_bytes32_$2_memory_ptr_to_t_array$_t_bytes32_$2_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"6605:5:4","type":""},{"name":"pos","nodeType":"YulTypedName","src":"6612:3:4","type":""}],"src":"6506:694:4"},{"body":{"nodeType":"YulBlock","src":"7350:582:4","statements":[{"nodeType":"YulVariableDeclaration","src":"7360:66:4","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"7420:5:4"}],"functionName":{"name":"array_length_t_array$_t_uint256_$2_memory_ptr","nodeType":"YulIdentifier","src":"7374:45:4"},"nodeType":"YulFunctionCall","src":"7374:52:4"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"7364:6:4","type":""}]},{"nodeType":"YulAssignment","src":"7435:91:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"7514:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"7519:6:4"}],"functionName":{"name":"array_storeLengthForEncoding_t_array$_t_uint256_$2_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"7442:71:4"},"nodeType":"YulFunctionCall","src":"7442:84:4"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"7435:3:4"}]},{"nodeType":"YulVariableDeclaration","src":"7535:69:4","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"7598:5:4"}],"functionName":{"name":"array_dataslot_t_array$_t_uint256_$2_memory_ptr","nodeType":"YulIdentifier","src":"7550:47:4"},"nodeType":"YulFunctionCall","src":"7550:54:4"},"variables":[{"name":"baseRef","nodeType":"YulTypedName","src":"7539:7:4","type":""}]},{"nodeType":"YulVariableDeclaration","src":"7613:21:4","value":{"name":"baseRef","nodeType":"YulIdentifier","src":"7627:7:4"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"7617:6:4","type":""}]},{"body":{"nodeType":"YulBlock","src":"7703:222:4","statements":[{"nodeType":"YulVariableDeclaration","src":"7717:34:4","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"7744:6:4"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"7738:5:4"},"nodeType":"YulFunctionCall","src":"7738:13:4"},"variables":[{"name":"elementValue0","nodeType":"YulTypedName","src":"7721:13:4","type":""}]},{"nodeType":"YulAssignment","src":"7764:70:4","value":{"arguments":[{"name":"elementValue0","nodeType":"YulIdentifier","src":"7815:13:4"},{"name":"pos","nodeType":"YulIdentifier","src":"7830:3:4"}],"functionName":{"name":"abi_encodeUpdatedPos_t_uint256_to_t_uint256","nodeType":"YulIdentifier","src":"7771:43:4"},"nodeType":"YulFunctionCall","src":"7771:63:4"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"7764:3:4"}]},{"nodeType":"YulAssignment","src":"7847:68:4","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"7908:6:4"}],"functionName":{"name":"array_nextElement_t_array$_t_uint256_$2_memory_ptr","nodeType":"YulIdentifier","src":"7857:50:4"},"nodeType":"YulFunctionCall","src":"7857:58:4"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"7847:6:4"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"7665:1:4"},{"name":"length","nodeType":"YulIdentifier","src":"7668:6:4"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"7662:2:4"},"nodeType":"YulFunctionCall","src":"7662:13:4"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"7676:18:4","statements":[{"nodeType":"YulAssignment","src":"7678:14:4","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"7687:1:4"},{"kind":"number","nodeType":"YulLiteral","src":"7690:1:4","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7683:3:4"},"nodeType":"YulFunctionCall","src":"7683:9:4"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"7678:1:4"}]}]},"pre":{"nodeType":"YulBlock","src":"7647:14:4","statements":[{"nodeType":"YulVariableDeclaration","src":"7649:10:4","value":{"kind":"number","nodeType":"YulLiteral","src":"7658:1:4","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"7653:1:4","type":""}]}]},"src":"7643:282:4"}]},"name":"abi_encode_t_array$_t_uint256_$2_memory_ptr_to_t_array$_t_uint256_$2_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"7337:5:4","type":""},{"name":"pos","nodeType":"YulTypedName","src":"7344:3:4","type":""}],"src":"7238:694:4"},{"body":{"nodeType":"YulBlock","src":"7993:53:4","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"8010:3:4"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8033:5:4"}],"functionName":{"name":"cleanup_t_bytes32","nodeType":"YulIdentifier","src":"8015:17:4"},"nodeType":"YulFunctionCall","src":"8015:24:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8003:6:4"},"nodeType":"YulFunctionCall","src":"8003:37:4"},"nodeType":"YulExpressionStatement","src":"8003:37:4"}]},"name":"abi_encode_t_bytes32_to_t_bytes32","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"7981:5:4","type":""},{"name":"pos","nodeType":"YulTypedName","src":"7988:3:4","type":""}],"src":"7938:108:4"},{"body":{"nodeType":"YulBlock","src":"8117:53:4","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"8134:3:4"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8157:5:4"}],"functionName":{"name":"cleanup_t_bytes32","nodeType":"YulIdentifier","src":"8139:17:4"},"nodeType":"YulFunctionCall","src":"8139:24:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8127:6:4"},"nodeType":"YulFunctionCall","src":"8127:37:4"},"nodeType":"YulExpressionStatement","src":"8127:37:4"}]},"name":"abi_encode_t_bytes32_to_t_bytes32_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"8105:5:4","type":""},{"name":"pos","nodeType":"YulTypedName","src":"8112:3:4","type":""}],"src":"8052:118:4"},{"body":{"nodeType":"YulBlock","src":"8266:270:4","statements":[{"nodeType":"YulVariableDeclaration","src":"8276:52:4","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8322:5:4"}],"functionName":{"name":"array_length_t_bytes_memory_ptr","nodeType":"YulIdentifier","src":"8290:31:4"},"nodeType":"YulFunctionCall","src":"8290:38:4"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"8280:6:4","type":""}]},{"nodeType":"YulAssignment","src":"8337:77:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"8402:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"8407:6:4"}],"functionName":{"name":"array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"8344:57:4"},"nodeType":"YulFunctionCall","src":"8344:70:4"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"8337:3:4"}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8449:5:4"},{"kind":"number","nodeType":"YulLiteral","src":"8456:4:4","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8445:3:4"},"nodeType":"YulFunctionCall","src":"8445:16:4"},{"name":"pos","nodeType":"YulIdentifier","src":"8463:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"8468:6:4"}],"functionName":{"name":"copy_memory_to_memory","nodeType":"YulIdentifier","src":"8423:21:4"},"nodeType":"YulFunctionCall","src":"8423:52:4"},"nodeType":"YulExpressionStatement","src":"8423:52:4"},{"nodeType":"YulAssignment","src":"8484:46:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"8495:3:4"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"8522:6:4"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"8500:21:4"},"nodeType":"YulFunctionCall","src":"8500:29:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8491:3:4"},"nodeType":"YulFunctionCall","src":"8491:39:4"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"8484:3:4"}]}]},"name":"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"8247:5:4","type":""},{"name":"pos","nodeType":"YulTypedName","src":"8254:3:4","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"8262:3:4","type":""}],"src":"8176:360:4"},{"body":{"nodeType":"YulBlock","src":"8650:265:4","statements":[{"nodeType":"YulVariableDeclaration","src":"8660:52:4","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8706:5:4"}],"functionName":{"name":"array_length_t_bytes_memory_ptr","nodeType":"YulIdentifier","src":"8674:31:4"},"nodeType":"YulFunctionCall","src":"8674:38:4"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"8664:6:4","type":""}]},{"nodeType":"YulAssignment","src":"8721:95:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"8804:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"8809:6:4"}],"functionName":{"name":"array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulIdentifier","src":"8728:75:4"},"nodeType":"YulFunctionCall","src":"8728:88:4"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"8721:3:4"}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8851:5:4"},{"kind":"number","nodeType":"YulLiteral","src":"8858:4:4","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8847:3:4"},"nodeType":"YulFunctionCall","src":"8847:16:4"},{"name":"pos","nodeType":"YulIdentifier","src":"8865:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"8870:6:4"}],"functionName":{"name":"copy_memory_to_memory","nodeType":"YulIdentifier","src":"8825:21:4"},"nodeType":"YulFunctionCall","src":"8825:52:4"},"nodeType":"YulExpressionStatement","src":"8825:52:4"},{"nodeType":"YulAssignment","src":"8886:23:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"8897:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"8902:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8893:3:4"},"nodeType":"YulFunctionCall","src":"8893:16:4"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"8886:3:4"}]}]},"name":"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"8631:5:4","type":""},{"name":"pos","nodeType":"YulTypedName","src":"8638:3:4","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"8646:3:4","type":""}],"src":"8542:373:4"},{"body":{"nodeType":"YulBlock","src":"8984:52:4","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"9001:3:4"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9023:5:4"}],"functionName":{"name":"cleanup_t_int256","nodeType":"YulIdentifier","src":"9006:16:4"},"nodeType":"YulFunctionCall","src":"9006:23:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8994:6:4"},"nodeType":"YulFunctionCall","src":"8994:36:4"},"nodeType":"YulExpressionStatement","src":"8994:36:4"}]},"name":"abi_encode_t_int256_to_t_int256_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"8972:5:4","type":""},{"name":"pos","nodeType":"YulTypedName","src":"8979:3:4","type":""}],"src":"8921:115:4"},{"body":{"nodeType":"YulBlock","src":"9134:272:4","statements":[{"nodeType":"YulVariableDeclaration","src":"9144:53:4","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9191:5:4"}],"functionName":{"name":"array_length_t_string_memory_ptr","nodeType":"YulIdentifier","src":"9158:32:4"},"nodeType":"YulFunctionCall","src":"9158:39:4"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"9148:6:4","type":""}]},{"nodeType":"YulAssignment","src":"9206:78:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"9272:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"9277:6:4"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"9213:58:4"},"nodeType":"YulFunctionCall","src":"9213:71:4"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"9206:3:4"}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9319:5:4"},{"kind":"number","nodeType":"YulLiteral","src":"9326:4:4","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9315:3:4"},"nodeType":"YulFunctionCall","src":"9315:16:4"},{"name":"pos","nodeType":"YulIdentifier","src":"9333:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"9338:6:4"}],"functionName":{"name":"copy_memory_to_memory","nodeType":"YulIdentifier","src":"9293:21:4"},"nodeType":"YulFunctionCall","src":"9293:52:4"},"nodeType":"YulExpressionStatement","src":"9293:52:4"},{"nodeType":"YulAssignment","src":"9354:46:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"9365:3:4"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"9392:6:4"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"9370:21:4"},"nodeType":"YulFunctionCall","src":"9370:29:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9361:3:4"},"nodeType":"YulFunctionCall","src":"9361:39:4"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"9354:3:4"}]}]},"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"9115:5:4","type":""},{"name":"pos","nodeType":"YulTypedName","src":"9122:3:4","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"9130:3:4","type":""}],"src":"9042:364:4"},{"body":{"nodeType":"YulBlock","src":"9522:267:4","statements":[{"nodeType":"YulVariableDeclaration","src":"9532:53:4","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9579:5:4"}],"functionName":{"name":"array_length_t_string_memory_ptr","nodeType":"YulIdentifier","src":"9546:32:4"},"nodeType":"YulFunctionCall","src":"9546:39:4"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"9536:6:4","type":""}]},{"nodeType":"YulAssignment","src":"9594:96:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"9678:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"9683:6:4"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulIdentifier","src":"9601:76:4"},"nodeType":"YulFunctionCall","src":"9601:89:4"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"9594:3:4"}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9725:5:4"},{"kind":"number","nodeType":"YulLiteral","src":"9732:4:4","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9721:3:4"},"nodeType":"YulFunctionCall","src":"9721:16:4"},{"name":"pos","nodeType":"YulIdentifier","src":"9739:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"9744:6:4"}],"functionName":{"name":"copy_memory_to_memory","nodeType":"YulIdentifier","src":"9699:21:4"},"nodeType":"YulFunctionCall","src":"9699:52:4"},"nodeType":"YulExpressionStatement","src":"9699:52:4"},{"nodeType":"YulAssignment","src":"9760:23:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"9771:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"9776:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9767:3:4"},"nodeType":"YulFunctionCall","src":"9767:16:4"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"9760:3:4"}]}]},"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"9503:5:4","type":""},{"name":"pos","nodeType":"YulTypedName","src":"9510:3:4","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"9518:3:4","type":""}],"src":"9412:377:4"},{"body":{"nodeType":"YulBlock","src":"9957:385:4","statements":[{"nodeType":"YulVariableDeclaration","src":"9967:26:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"9983:3:4"},{"kind":"number","nodeType":"YulLiteral","src":"9988:4:4","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9979:3:4"},"nodeType":"YulFunctionCall","src":"9979:14:4"},"variables":[{"name":"tail","nodeType":"YulTypedName","src":"9971:4:4","type":""}]},{"nodeType":"YulBlock","src":"10003:161:4","statements":[{"nodeType":"YulVariableDeclaration","src":"10035:43:4","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"10065:5:4"},{"kind":"number","nodeType":"YulLiteral","src":"10072:4:4","type":"","value":"0x00"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10061:3:4"},"nodeType":"YulFunctionCall","src":"10061:16:4"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"10055:5:4"},"nodeType":"YulFunctionCall","src":"10055:23:4"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"10039:12:4","type":""}]},{"expression":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"10125:12:4"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"10143:3:4"},{"kind":"number","nodeType":"YulLiteral","src":"10148:4:4","type":"","value":"0x00"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10139:3:4"},"nodeType":"YulFunctionCall","src":"10139:14:4"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256","nodeType":"YulIdentifier","src":"10091:33:4"},"nodeType":"YulFunctionCall","src":"10091:63:4"},"nodeType":"YulExpressionStatement","src":"10091:63:4"}]},{"nodeType":"YulBlock","src":"10174:161:4","statements":[{"nodeType":"YulVariableDeclaration","src":"10206:43:4","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"10236:5:4"},{"kind":"number","nodeType":"YulLiteral","src":"10243:4:4","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10232:3:4"},"nodeType":"YulFunctionCall","src":"10232:16:4"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"10226:5:4"},"nodeType":"YulFunctionCall","src":"10226:23:4"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"10210:12:4","type":""}]},{"expression":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"10296:12:4"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"10314:3:4"},{"kind":"number","nodeType":"YulLiteral","src":"10319:4:4","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10310:3:4"},"nodeType":"YulFunctionCall","src":"10310:14:4"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256","nodeType":"YulIdentifier","src":"10262:33:4"},"nodeType":"YulFunctionCall","src":"10262:63:4"},"nodeType":"YulExpressionStatement","src":"10262:63:4"}]}]},"name":"abi_encode_t_struct$_Struct_$47_memory_ptr_to_t_struct$_Struct_$47_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"9944:5:4","type":""},{"name":"pos","nodeType":"YulTypedName","src":"9951:3:4","type":""}],"src":"9847:495:4"},{"body":{"nodeType":"YulBlock","src":"10403:53:4","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"10420:3:4"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"10443:5:4"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"10425:17:4"},"nodeType":"YulFunctionCall","src":"10425:24:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10413:6:4"},"nodeType":"YulFunctionCall","src":"10413:37:4"},"nodeType":"YulExpressionStatement","src":"10413:37:4"}]},"name":"abi_encode_t_uint256_to_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"10391:5:4","type":""},{"name":"pos","nodeType":"YulTypedName","src":"10398:3:4","type":""}],"src":"10348:108:4"},{"body":{"nodeType":"YulBlock","src":"10527:53:4","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"10544:3:4"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"10567:5:4"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"10549:17:4"},"nodeType":"YulFunctionCall","src":"10549:24:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10537:6:4"},"nodeType":"YulFunctionCall","src":"10537:37:4"},"nodeType":"YulExpressionStatement","src":"10537:37:4"}]},"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"10515:5:4","type":""},{"name":"pos","nodeType":"YulTypedName","src":"10522:3:4","type":""}],"src":"10462:118:4"},{"body":{"nodeType":"YulBlock","src":"10720:137:4","statements":[{"nodeType":"YulAssignment","src":"10731:100:4","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"10818:6:4"},{"name":"pos","nodeType":"YulIdentifier","src":"10827:3:4"}],"functionName":{"name":"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulIdentifier","src":"10738:79:4"},"nodeType":"YulFunctionCall","src":"10738:93:4"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"10731:3:4"}]},{"nodeType":"YulAssignment","src":"10841:10:4","value":{"name":"pos","nodeType":"YulIdentifier","src":"10848:3:4"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"10841:3:4"}]}]},"name":"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"10699:3:4","type":""},{"name":"value0","nodeType":"YulTypedName","src":"10705:6:4","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"10716:3:4","type":""}],"src":"10586:271:4"},{"body":{"nodeType":"YulBlock","src":"10999:139:4","statements":[{"nodeType":"YulAssignment","src":"11010:102:4","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"11099:6:4"},{"name":"pos","nodeType":"YulIdentifier","src":"11108:3:4"}],"functionName":{"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulIdentifier","src":"11017:81:4"},"nodeType":"YulFunctionCall","src":"11017:95:4"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"11010:3:4"}]},{"nodeType":"YulAssignment","src":"11122:10:4","value":{"name":"pos","nodeType":"YulIdentifier","src":"11129:3:4"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"11122:3:4"}]}]},"name":"abi_encode_tuple_packed_t_string_memory_ptr__to_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"10978:3:4","type":""},{"name":"value0","nodeType":"YulTypedName","src":"10984:6:4","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"10995:3:4","type":""}],"src":"10863:275:4"},{"body":{"nodeType":"YulBlock","src":"11242:124:4","statements":[{"nodeType":"YulAssignment","src":"11252:26:4","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11264:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"11275:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11260:3:4"},"nodeType":"YulFunctionCall","src":"11260:18:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"11252:4:4"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"11332:6:4"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11345:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"11356:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11341:3:4"},"nodeType":"YulFunctionCall","src":"11341:17:4"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"11288:43:4"},"nodeType":"YulFunctionCall","src":"11288:71:4"},"nodeType":"YulExpressionStatement","src":"11288:71:4"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"11214:9:4","type":""},{"name":"value0","nodeType":"YulTypedName","src":"11226:6:4","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"11237:4:4","type":""}],"src":"11144:222:4"},{"body":{"nodeType":"YulBlock","src":"11516:170:4","statements":[{"nodeType":"YulAssignment","src":"11526:26:4","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11538:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"11549:2:4","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11534:3:4"},"nodeType":"YulFunctionCall","src":"11534:18:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"11526:4:4"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"11652:6:4"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11665:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"11676:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11661:3:4"},"nodeType":"YulFunctionCall","src":"11661:17:4"}],"functionName":{"name":"abi_encode_t_array$_t_bytes32_$2_memory_ptr_to_t_array$_t_bytes32_$2_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"11562:89:4"},"nodeType":"YulFunctionCall","src":"11562:117:4"},"nodeType":"YulExpressionStatement","src":"11562:117:4"}]},"name":"abi_encode_tuple_t_array$_t_bytes32_$2_memory_ptr__to_t_array$_t_bytes32_$2_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"11488:9:4","type":""},{"name":"value0","nodeType":"YulTypedName","src":"11500:6:4","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"11511:4:4","type":""}],"src":"11372:314:4"},{"body":{"nodeType":"YulBlock","src":"11836:170:4","statements":[{"nodeType":"YulAssignment","src":"11846:26:4","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11858:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"11869:2:4","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11854:3:4"},"nodeType":"YulFunctionCall","src":"11854:18:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"11846:4:4"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"11972:6:4"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11985:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"11996:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11981:3:4"},"nodeType":"YulFunctionCall","src":"11981:17:4"}],"functionName":{"name":"abi_encode_t_array$_t_uint256_$2_memory_ptr_to_t_array$_t_uint256_$2_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"11882:89:4"},"nodeType":"YulFunctionCall","src":"11882:117:4"},"nodeType":"YulExpressionStatement","src":"11882:117:4"}]},"name":"abi_encode_tuple_t_array$_t_uint256_$2_memory_ptr__to_t_array$_t_uint256_$2_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"11808:9:4","type":""},{"name":"value0","nodeType":"YulTypedName","src":"11820:6:4","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"11831:4:4","type":""}],"src":"11692:314:4"},{"body":{"nodeType":"YulBlock","src":"12110:124:4","statements":[{"nodeType":"YulAssignment","src":"12120:26:4","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12132:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"12143:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12128:3:4"},"nodeType":"YulFunctionCall","src":"12128:18:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"12120:4:4"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"12200:6:4"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12213:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"12224:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12209:3:4"},"nodeType":"YulFunctionCall","src":"12209:17:4"}],"functionName":{"name":"abi_encode_t_bytes32_to_t_bytes32_fromStack","nodeType":"YulIdentifier","src":"12156:43:4"},"nodeType":"YulFunctionCall","src":"12156:71:4"},"nodeType":"YulExpressionStatement","src":"12156:71:4"}]},"name":"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"12082:9:4","type":""},{"name":"value0","nodeType":"YulTypedName","src":"12094:6:4","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"12105:4:4","type":""}],"src":"12012:222:4"},{"body":{"nodeType":"YulBlock","src":"12356:193:4","statements":[{"nodeType":"YulAssignment","src":"12366:26:4","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12378:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"12389:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12374:3:4"},"nodeType":"YulFunctionCall","src":"12374:18:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"12366:4:4"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12413:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"12424:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12409:3:4"},"nodeType":"YulFunctionCall","src":"12409:17:4"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"12432:4:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"12438:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"12428:3:4"},"nodeType":"YulFunctionCall","src":"12428:20:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12402:6:4"},"nodeType":"YulFunctionCall","src":"12402:47:4"},"nodeType":"YulExpressionStatement","src":"12402:47:4"},{"nodeType":"YulAssignment","src":"12458:84:4","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"12528:6:4"},{"name":"tail","nodeType":"YulIdentifier","src":"12537:4:4"}],"functionName":{"name":"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"12466:61:4"},"nodeType":"YulFunctionCall","src":"12466:76:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"12458:4:4"}]}]},"name":"abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"12328:9:4","type":""},{"name":"value0","nodeType":"YulTypedName","src":"12340:6:4","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"12351:4:4","type":""}],"src":"12240:309:4"},{"body":{"nodeType":"YulBlock","src":"12651:122:4","statements":[{"nodeType":"YulAssignment","src":"12661:26:4","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12673:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"12684:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12669:3:4"},"nodeType":"YulFunctionCall","src":"12669:18:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"12661:4:4"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"12739:6:4"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12752:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"12763:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12748:3:4"},"nodeType":"YulFunctionCall","src":"12748:17:4"}],"functionName":{"name":"abi_encode_t_int256_to_t_int256_fromStack","nodeType":"YulIdentifier","src":"12697:41:4"},"nodeType":"YulFunctionCall","src":"12697:69:4"},"nodeType":"YulExpressionStatement","src":"12697:69:4"}]},"name":"abi_encode_tuple_t_int256__to_t_int256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"12623:9:4","type":""},{"name":"value0","nodeType":"YulTypedName","src":"12635:6:4","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"12646:4:4","type":""}],"src":"12555:218:4"},{"body":{"nodeType":"YulBlock","src":"12897:195:4","statements":[{"nodeType":"YulAssignment","src":"12907:26:4","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12919:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"12930:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12915:3:4"},"nodeType":"YulFunctionCall","src":"12915:18:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"12907:4:4"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12954:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"12965:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12950:3:4"},"nodeType":"YulFunctionCall","src":"12950:17:4"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"12973:4:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"12979:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"12969:3:4"},"nodeType":"YulFunctionCall","src":"12969:20:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12943:6:4"},"nodeType":"YulFunctionCall","src":"12943:47:4"},"nodeType":"YulExpressionStatement","src":"12943:47:4"},{"nodeType":"YulAssignment","src":"12999:86:4","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"13071:6:4"},{"name":"tail","nodeType":"YulIdentifier","src":"13080:4:4"}],"functionName":{"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"13007:63:4"},"nodeType":"YulFunctionCall","src":"13007:78:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"12999:4:4"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"12869:9:4","type":""},{"name":"value0","nodeType":"YulTypedName","src":"12881:6:4","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"12892:4:4","type":""}],"src":"12779:313:4"},{"body":{"nodeType":"YulBlock","src":"13264:348:4","statements":[{"nodeType":"YulAssignment","src":"13274:26:4","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13286:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"13297:2:4","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13282:3:4"},"nodeType":"YulFunctionCall","src":"13282:18:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"13274:4:4"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13321:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"13332:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13317:3:4"},"nodeType":"YulFunctionCall","src":"13317:17:4"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"13340:4:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"13346:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"13336:3:4"},"nodeType":"YulFunctionCall","src":"13336:20:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13310:6:4"},"nodeType":"YulFunctionCall","src":"13310:47:4"},"nodeType":"YulExpressionStatement","src":"13310:47:4"},{"nodeType":"YulAssignment","src":"13366:86:4","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"13438:6:4"},{"name":"tail","nodeType":"YulIdentifier","src":"13447:4:4"}],"functionName":{"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"13374:63:4"},"nodeType":"YulFunctionCall","src":"13374:78:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"13366:4:4"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13473:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"13484:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13469:3:4"},"nodeType":"YulFunctionCall","src":"13469:18:4"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"13493:4:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"13499:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"13489:3:4"},"nodeType":"YulFunctionCall","src":"13489:20:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13462:6:4"},"nodeType":"YulFunctionCall","src":"13462:48:4"},"nodeType":"YulExpressionStatement","src":"13462:48:4"},{"nodeType":"YulAssignment","src":"13519:86:4","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"13591:6:4"},{"name":"tail","nodeType":"YulIdentifier","src":"13600:4:4"}],"functionName":{"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"13527:63:4"},"nodeType":"YulFunctionCall","src":"13527:78:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"13519:4:4"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"13228:9:4","type":""},{"name":"value1","nodeType":"YulTypedName","src":"13240:6:4","type":""},{"name":"value0","nodeType":"YulTypedName","src":"13248:6:4","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"13259:4:4","type":""}],"src":"13098:514:4"},{"body":{"nodeType":"YulBlock","src":"13760:168:4","statements":[{"nodeType":"YulAssignment","src":"13770:26:4","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13782:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"13793:2:4","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13778:3:4"},"nodeType":"YulFunctionCall","src":"13778:18:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"13770:4:4"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"13894:6:4"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13907:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"13918:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13903:3:4"},"nodeType":"YulFunctionCall","src":"13903:17:4"}],"functionName":{"name":"abi_encode_t_struct$_Struct_$47_memory_ptr_to_t_struct$_Struct_$47_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"13806:87:4"},"nodeType":"YulFunctionCall","src":"13806:115:4"},"nodeType":"YulExpressionStatement","src":"13806:115:4"}]},"name":"abi_encode_tuple_t_struct$_Struct_$47_memory_ptr__to_t_struct$_Struct_$47_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"13732:9:4","type":""},{"name":"value0","nodeType":"YulTypedName","src":"13744:6:4","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"13755:4:4","type":""}],"src":"13618:310:4"},{"body":{"nodeType":"YulBlock","src":"14032:124:4","statements":[{"nodeType":"YulAssignment","src":"14042:26:4","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14054:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"14065:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14050:3:4"},"nodeType":"YulFunctionCall","src":"14050:18:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"14042:4:4"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"14122:6:4"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14135:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"14146:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14131:3:4"},"nodeType":"YulFunctionCall","src":"14131:17:4"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"14078:43:4"},"nodeType":"YulFunctionCall","src":"14078:71:4"},"nodeType":"YulExpressionStatement","src":"14078:71:4"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"14004:9:4","type":""},{"name":"value0","nodeType":"YulTypedName","src":"14016:6:4","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"14027:4:4","type":""}],"src":"13934:222:4"},{"body":{"nodeType":"YulBlock","src":"14288:206:4","statements":[{"nodeType":"YulAssignment","src":"14298:26:4","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14310:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"14321:2:4","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14306:3:4"},"nodeType":"YulFunctionCall","src":"14306:18:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"14298:4:4"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"14378:6:4"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14391:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"14402:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14387:3:4"},"nodeType":"YulFunctionCall","src":"14387:17:4"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"14334:43:4"},"nodeType":"YulFunctionCall","src":"14334:71:4"},"nodeType":"YulExpressionStatement","src":"14334:71:4"},{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"14459:6:4"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14472:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"14483:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14468:3:4"},"nodeType":"YulFunctionCall","src":"14468:18:4"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"14415:43:4"},"nodeType":"YulFunctionCall","src":"14415:72:4"},"nodeType":"YulExpressionStatement","src":"14415:72:4"}]},"name":"abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"14252:9:4","type":""},{"name":"value1","nodeType":"YulTypedName","src":"14264:6:4","type":""},{"name":"value0","nodeType":"YulTypedName","src":"14272:6:4","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"14283:4:4","type":""}],"src":"14162:332:4"},{"body":{"nodeType":"YulBlock","src":"14541:88:4","statements":[{"nodeType":"YulAssignment","src":"14551:30:4","value":{"arguments":[],"functionName":{"name":"allocate_unbounded","nodeType":"YulIdentifier","src":"14561:18:4"},"nodeType":"YulFunctionCall","src":"14561:20:4"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"14551:6:4"}]},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"14610:6:4"},{"name":"size","nodeType":"YulIdentifier","src":"14618:4:4"}],"functionName":{"name":"finalize_allocation","nodeType":"YulIdentifier","src":"14590:19:4"},"nodeType":"YulFunctionCall","src":"14590:33:4"},"nodeType":"YulExpressionStatement","src":"14590:33:4"}]},"name":"allocate_memory","nodeType":"YulFunctionDefinition","parameters":[{"name":"size","nodeType":"YulTypedName","src":"14525:4:4","type":""}],"returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"14534:6:4","type":""}],"src":"14500:129:4"},{"body":{"nodeType":"YulBlock","src":"14675:35:4","statements":[{"nodeType":"YulAssignment","src":"14685:19:4","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"14701:2:4","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"14695:5:4"},"nodeType":"YulFunctionCall","src":"14695:9:4"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"14685:6:4"}]}]},"name":"allocate_unbounded","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"14668:6:4","type":""}],"src":"14635:75:4"},{"body":{"nodeType":"YulBlock","src":"14782:241:4","statements":[{"body":{"nodeType":"YulBlock","src":"14887:22:4","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"14889:16:4"},"nodeType":"YulFunctionCall","src":"14889:18:4"},"nodeType":"YulExpressionStatement","src":"14889:18:4"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"14859:6:4"},{"kind":"number","nodeType":"YulLiteral","src":"14867:18:4","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"14856:2:4"},"nodeType":"YulFunctionCall","src":"14856:30:4"},"nodeType":"YulIf","src":"14853:2:4"},{"nodeType":"YulAssignment","src":"14919:37:4","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"14949:6:4"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"14927:21:4"},"nodeType":"YulFunctionCall","src":"14927:29:4"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"14919:4:4"}]},{"nodeType":"YulAssignment","src":"14993:23:4","value":{"arguments":[{"name":"size","nodeType":"YulIdentifier","src":"15005:4:4"},{"kind":"number","nodeType":"YulLiteral","src":"15011:4:4","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15001:3:4"},"nodeType":"YulFunctionCall","src":"15001:15:4"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"14993:4:4"}]}]},"name":"array_allocation_size_t_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"length","nodeType":"YulTypedName","src":"14766:6:4","type":""}],"returnVariables":[{"name":"size","nodeType":"YulTypedName","src":"14777:4:4","type":""}],"src":"14716:307:4"},{"body":{"nodeType":"YulBlock","src":"15096:241:4","statements":[{"body":{"nodeType":"YulBlock","src":"15201:22:4","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"15203:16:4"},"nodeType":"YulFunctionCall","src":"15203:18:4"},"nodeType":"YulExpressionStatement","src":"15203:18:4"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"15173:6:4"},{"kind":"number","nodeType":"YulLiteral","src":"15181:18:4","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"15170:2:4"},"nodeType":"YulFunctionCall","src":"15170:30:4"},"nodeType":"YulIf","src":"15167:2:4"},{"nodeType":"YulAssignment","src":"15233:37:4","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"15263:6:4"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"15241:21:4"},"nodeType":"YulFunctionCall","src":"15241:29:4"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"15233:4:4"}]},{"nodeType":"YulAssignment","src":"15307:23:4","value":{"arguments":[{"name":"size","nodeType":"YulIdentifier","src":"15319:4:4"},{"kind":"number","nodeType":"YulLiteral","src":"15325:4:4","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15315:3:4"},"nodeType":"YulFunctionCall","src":"15315:15:4"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"15307:4:4"}]}]},"name":"array_allocation_size_t_string_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"length","nodeType":"YulTypedName","src":"15080:6:4","type":""}],"returnVariables":[{"name":"size","nodeType":"YulTypedName","src":"15091:4:4","type":""}],"src":"15029:308:4"},{"body":{"nodeType":"YulBlock","src":"15413:28:4","statements":[{"nodeType":"YulAssignment","src":"15423:11:4","value":{"name":"ptr","nodeType":"YulIdentifier","src":"15431:3:4"},"variableNames":[{"name":"data","nodeType":"YulIdentifier","src":"15423:4:4"}]}]},"name":"array_dataslot_t_array$_t_bytes32_$2_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nodeType":"YulTypedName","src":"15400:3:4","type":""}],"returnVariables":[{"name":"data","nodeType":"YulTypedName","src":"15408:4:4","type":""}],"src":"15343:98:4"},{"body":{"nodeType":"YulBlock","src":"15517:28:4","statements":[{"nodeType":"YulAssignment","src":"15527:11:4","value":{"name":"ptr","nodeType":"YulIdentifier","src":"15535:3:4"},"variableNames":[{"name":"data","nodeType":"YulIdentifier","src":"15527:4:4"}]}]},"name":"array_dataslot_t_array$_t_uint256_$2_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nodeType":"YulTypedName","src":"15504:3:4","type":""}],"returnVariables":[{"name":"data","nodeType":"YulTypedName","src":"15512:4:4","type":""}],"src":"15447:98:4"},{"body":{"nodeType":"YulBlock","src":"15623:32:4","statements":[{"nodeType":"YulAssignment","src":"15634:14:4","value":{"kind":"number","nodeType":"YulLiteral","src":"15644:4:4","type":"","value":"0x02"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"15634:6:4"}]}]},"name":"array_length_t_array$_t_bytes32_$2_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"15606:5:4","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"15616:6:4","type":""}],"src":"15551:104:4"},{"body":{"nodeType":"YulBlock","src":"15733:32:4","statements":[{"nodeType":"YulAssignment","src":"15744:14:4","value":{"kind":"number","nodeType":"YulLiteral","src":"15754:4:4","type":"","value":"0x02"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"15744:6:4"}]}]},"name":"array_length_t_array$_t_uint256_$2_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"15716:5:4","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"15726:6:4","type":""}],"src":"15661:104:4"},{"body":{"nodeType":"YulBlock","src":"15829:40:4","statements":[{"nodeType":"YulAssignment","src":"15840:22:4","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"15856:5:4"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"15850:5:4"},"nodeType":"YulFunctionCall","src":"15850:12:4"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"15840:6:4"}]}]},"name":"array_length_t_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"15812:5:4","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"15822:6:4","type":""}],"src":"15771:98:4"},{"body":{"nodeType":"YulBlock","src":"15934:40:4","statements":[{"nodeType":"YulAssignment","src":"15945:22:4","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"15961:5:4"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"15955:5:4"},"nodeType":"YulFunctionCall","src":"15955:12:4"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"15945:6:4"}]}]},"name":"array_length_t_string_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"15917:5:4","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"15927:6:4","type":""}],"src":"15875:99:4"},{"body":{"nodeType":"YulBlock","src":"16053:38:4","statements":[{"nodeType":"YulAssignment","src":"16063:22:4","value":{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"16075:3:4"},{"kind":"number","nodeType":"YulLiteral","src":"16080:4:4","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16071:3:4"},"nodeType":"YulFunctionCall","src":"16071:14:4"},"variableNames":[{"name":"next","nodeType":"YulIdentifier","src":"16063:4:4"}]}]},"name":"array_nextElement_t_array$_t_bytes32_$2_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nodeType":"YulTypedName","src":"16040:3:4","type":""}],"returnVariables":[{"name":"next","nodeType":"YulTypedName","src":"16048:4:4","type":""}],"src":"15980:111:4"},{"body":{"nodeType":"YulBlock","src":"16170:38:4","statements":[{"nodeType":"YulAssignment","src":"16180:22:4","value":{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"16192:3:4"},{"kind":"number","nodeType":"YulLiteral","src":"16197:4:4","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16188:3:4"},"nodeType":"YulFunctionCall","src":"16188:14:4"},"variableNames":[{"name":"next","nodeType":"YulIdentifier","src":"16180:4:4"}]}]},"name":"array_nextElement_t_array$_t_uint256_$2_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nodeType":"YulTypedName","src":"16157:3:4","type":""}],"returnVariables":[{"name":"next","nodeType":"YulTypedName","src":"16165:4:4","type":""}],"src":"16097:111:4"},{"body":{"nodeType":"YulBlock","src":"16323:34:4","statements":[{"nodeType":"YulAssignment","src":"16333:18:4","value":{"name":"pos","nodeType":"YulIdentifier","src":"16348:3:4"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"16333:11:4"}]}]},"name":"array_storeLengthForEncoding_t_array$_t_bytes32_$2_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"16295:3:4","type":""},{"name":"length","nodeType":"YulTypedName","src":"16300:6:4","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"16311:11:4","type":""}],"src":"16214:143:4"},{"body":{"nodeType":"YulBlock","src":"16472:34:4","statements":[{"nodeType":"YulAssignment","src":"16482:18:4","value":{"name":"pos","nodeType":"YulIdentifier","src":"16497:3:4"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"16482:11:4"}]}]},"name":"array_storeLengthForEncoding_t_array$_t_uint256_$2_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"16444:3:4","type":""},{"name":"length","nodeType":"YulTypedName","src":"16449:6:4","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"16460:11:4","type":""}],"src":"16363:143:4"},{"body":{"nodeType":"YulBlock","src":"16607:73:4","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"16624:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"16629:6:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"16617:6:4"},"nodeType":"YulFunctionCall","src":"16617:19:4"},"nodeType":"YulExpressionStatement","src":"16617:19:4"},{"nodeType":"YulAssignment","src":"16645:29:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"16664:3:4"},{"kind":"number","nodeType":"YulLiteral","src":"16669:4:4","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16660:3:4"},"nodeType":"YulFunctionCall","src":"16660:14:4"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"16645:11:4"}]}]},"name":"array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"16579:3:4","type":""},{"name":"length","nodeType":"YulTypedName","src":"16584:6:4","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"16595:11:4","type":""}],"src":"16512:168:4"},{"body":{"nodeType":"YulBlock","src":"16799:34:4","statements":[{"nodeType":"YulAssignment","src":"16809:18:4","value":{"name":"pos","nodeType":"YulIdentifier","src":"16824:3:4"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"16809:11:4"}]}]},"name":"array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"16771:3:4","type":""},{"name":"length","nodeType":"YulTypedName","src":"16776:6:4","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"16787:11:4","type":""}],"src":"16686:147:4"},{"body":{"nodeType":"YulBlock","src":"16935:73:4","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"16952:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"16957:6:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"16945:6:4"},"nodeType":"YulFunctionCall","src":"16945:19:4"},"nodeType":"YulExpressionStatement","src":"16945:19:4"},{"nodeType":"YulAssignment","src":"16973:29:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"16992:3:4"},{"kind":"number","nodeType":"YulLiteral","src":"16997:4:4","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16988:3:4"},"nodeType":"YulFunctionCall","src":"16988:14:4"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"16973:11:4"}]}]},"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"16907:3:4","type":""},{"name":"length","nodeType":"YulTypedName","src":"16912:6:4","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"16923:11:4","type":""}],"src":"16839:169:4"},{"body":{"nodeType":"YulBlock","src":"17128:34:4","statements":[{"nodeType":"YulAssignment","src":"17138:18:4","value":{"name":"pos","nodeType":"YulIdentifier","src":"17153:3:4"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"17138:11:4"}]}]},"name":"array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"17100:3:4","type":""},{"name":"length","nodeType":"YulTypedName","src":"17105:6:4","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"17116:11:4","type":""}],"src":"17014:148:4"},{"body":{"nodeType":"YulBlock","src":"17213:51:4","statements":[{"nodeType":"YulAssignment","src":"17223:35:4","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"17252:5:4"}],"functionName":{"name":"cleanup_t_uint160","nodeType":"YulIdentifier","src":"17234:17:4"},"nodeType":"YulFunctionCall","src":"17234:24:4"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"17223:7:4"}]}]},"name":"cleanup_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"17195:5:4","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"17205:7:4","type":""}],"src":"17168:96:4"},{"body":{"nodeType":"YulBlock","src":"17315:32:4","statements":[{"nodeType":"YulAssignment","src":"17325:16:4","value":{"name":"value","nodeType":"YulIdentifier","src":"17336:5:4"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"17325:7:4"}]}]},"name":"cleanup_t_bytes32","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"17297:5:4","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"17307:7:4","type":""}],"src":"17270:77:4"},{"body":{"nodeType":"YulBlock","src":"17397:32:4","statements":[{"nodeType":"YulAssignment","src":"17407:16:4","value":{"name":"value","nodeType":"YulIdentifier","src":"17418:5:4"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"17407:7:4"}]}]},"name":"cleanup_t_int256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"17379:5:4","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"17389:7:4","type":""}],"src":"17353:76:4"},{"body":{"nodeType":"YulBlock","src":"17480:81:4","statements":[{"nodeType":"YulAssignment","src":"17490:65:4","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"17505:5:4"},{"kind":"number","nodeType":"YulLiteral","src":"17512:42:4","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"17501:3:4"},"nodeType":"YulFunctionCall","src":"17501:54:4"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"17490:7:4"}]}]},"name":"cleanup_t_uint160","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"17462:5:4","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"17472:7:4","type":""}],"src":"17435:126:4"},{"body":{"nodeType":"YulBlock","src":"17612:32:4","statements":[{"nodeType":"YulAssignment","src":"17622:16:4","value":{"name":"value","nodeType":"YulIdentifier","src":"17633:5:4"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"17622:7:4"}]}]},"name":"cleanup_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"17594:5:4","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"17604:7:4","type":""}],"src":"17567:77:4"},{"body":{"nodeType":"YulBlock","src":"17701:103:4","statements":[{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"17724:3:4"},{"name":"src","nodeType":"YulIdentifier","src":"17729:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"17734:6:4"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"17711:12:4"},"nodeType":"YulFunctionCall","src":"17711:30:4"},"nodeType":"YulExpressionStatement","src":"17711:30:4"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"17782:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"17787:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17778:3:4"},"nodeType":"YulFunctionCall","src":"17778:16:4"},{"kind":"number","nodeType":"YulLiteral","src":"17796:1:4","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17771:6:4"},"nodeType":"YulFunctionCall","src":"17771:27:4"},"nodeType":"YulExpressionStatement","src":"17771:27:4"}]},"name":"copy_calldata_to_memory","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"17683:3:4","type":""},{"name":"dst","nodeType":"YulTypedName","src":"17688:3:4","type":""},{"name":"length","nodeType":"YulTypedName","src":"17693:6:4","type":""}],"src":"17650:154:4"},{"body":{"nodeType":"YulBlock","src":"17859:258:4","statements":[{"nodeType":"YulVariableDeclaration","src":"17869:10:4","value":{"kind":"number","nodeType":"YulLiteral","src":"17878:1:4","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"17873:1:4","type":""}]},{"body":{"nodeType":"YulBlock","src":"17938:63:4","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"17963:3:4"},{"name":"i","nodeType":"YulIdentifier","src":"17968:1:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17959:3:4"},"nodeType":"YulFunctionCall","src":"17959:11:4"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"17982:3:4"},{"name":"i","nodeType":"YulIdentifier","src":"17987:1:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17978:3:4"},"nodeType":"YulFunctionCall","src":"17978:11:4"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"17972:5:4"},"nodeType":"YulFunctionCall","src":"17972:18:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17952:6:4"},"nodeType":"YulFunctionCall","src":"17952:39:4"},"nodeType":"YulExpressionStatement","src":"17952:39:4"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"17899:1:4"},{"name":"length","nodeType":"YulIdentifier","src":"17902:6:4"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"17896:2:4"},"nodeType":"YulFunctionCall","src":"17896:13:4"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"17910:19:4","statements":[{"nodeType":"YulAssignment","src":"17912:15:4","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"17921:1:4"},{"kind":"number","nodeType":"YulLiteral","src":"17924:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17917:3:4"},"nodeType":"YulFunctionCall","src":"17917:10:4"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"17912:1:4"}]}]},"pre":{"nodeType":"YulBlock","src":"17892:3:4","statements":[]},"src":"17888:113:4"},{"body":{"nodeType":"YulBlock","src":"18035:76:4","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"18085:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"18090:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18081:3:4"},"nodeType":"YulFunctionCall","src":"18081:16:4"},{"kind":"number","nodeType":"YulLiteral","src":"18099:1:4","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"18074:6:4"},"nodeType":"YulFunctionCall","src":"18074:27:4"},"nodeType":"YulExpressionStatement","src":"18074:27:4"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"18016:1:4"},{"name":"length","nodeType":"YulIdentifier","src":"18019:6:4"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"18013:2:4"},"nodeType":"YulFunctionCall","src":"18013:13:4"},"nodeType":"YulIf","src":"18010:2:4"}]},"name":"copy_memory_to_memory","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"17841:3:4","type":""},{"name":"dst","nodeType":"YulTypedName","src":"17846:3:4","type":""},{"name":"length","nodeType":"YulTypedName","src":"17851:6:4","type":""}],"src":"17810:307:4"},{"body":{"nodeType":"YulBlock","src":"18166:238:4","statements":[{"nodeType":"YulVariableDeclaration","src":"18176:58:4","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"18198:6:4"},{"arguments":[{"name":"size","nodeType":"YulIdentifier","src":"18228:4:4"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"18206:21:4"},"nodeType":"YulFunctionCall","src":"18206:27:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18194:3:4"},"nodeType":"YulFunctionCall","src":"18194:40:4"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"18180:10:4","type":""}]},{"body":{"nodeType":"YulBlock","src":"18345:22:4","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"18347:16:4"},"nodeType":"YulFunctionCall","src":"18347:18:4"},"nodeType":"YulExpressionStatement","src":"18347:18:4"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"18288:10:4"},{"kind":"number","nodeType":"YulLiteral","src":"18300:18:4","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"18285:2:4"},"nodeType":"YulFunctionCall","src":"18285:34:4"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"18324:10:4"},{"name":"memPtr","nodeType":"YulIdentifier","src":"18336:6:4"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"18321:2:4"},"nodeType":"YulFunctionCall","src":"18321:22:4"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"18282:2:4"},"nodeType":"YulFunctionCall","src":"18282:62:4"},"nodeType":"YulIf","src":"18279:2:4"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"18383:2:4","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"18387:10:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"18376:6:4"},"nodeType":"YulFunctionCall","src":"18376:22:4"},"nodeType":"YulExpressionStatement","src":"18376:22:4"}]},"name":"finalize_allocation","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"18152:6:4","type":""},{"name":"size","nodeType":"YulTypedName","src":"18160:4:4","type":""}],"src":"18123:281:4"},{"body":{"nodeType":"YulBlock","src":"18438:152:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"18455:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"18458:77:4","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"18448:6:4"},"nodeType":"YulFunctionCall","src":"18448:88:4"},"nodeType":"YulExpressionStatement","src":"18448:88:4"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"18552:1:4","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"18555:4:4","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"18545:6:4"},"nodeType":"YulFunctionCall","src":"18545:15:4"},"nodeType":"YulExpressionStatement","src":"18545:15:4"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"18576:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"18579:4:4","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"18569:6:4"},"nodeType":"YulFunctionCall","src":"18569:15:4"},"nodeType":"YulExpressionStatement","src":"18569:15:4"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"18410:180:4"},{"body":{"nodeType":"YulBlock","src":"18644:54:4","statements":[{"nodeType":"YulAssignment","src":"18654:38:4","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"18672:5:4"},{"kind":"number","nodeType":"YulLiteral","src":"18679:2:4","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18668:3:4"},"nodeType":"YulFunctionCall","src":"18668:14:4"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"18688:2:4","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"18684:3:4"},"nodeType":"YulFunctionCall","src":"18684:7:4"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"18664:3:4"},"nodeType":"YulFunctionCall","src":"18664:28:4"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"18654:6:4"}]}]},"name":"round_up_to_mul_of_32","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"18627:5:4","type":""}],"returnVariables":[{"name":"result","nodeType":"YulTypedName","src":"18637:6:4","type":""}],"src":"18596:102:4"},{"body":{"nodeType":"YulBlock","src":"18747:79:4","statements":[{"body":{"nodeType":"YulBlock","src":"18804:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"18813:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"18816:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"18806:6:4"},"nodeType":"YulFunctionCall","src":"18806:12:4"},"nodeType":"YulExpressionStatement","src":"18806:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"18770:5:4"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"18795:5:4"}],"functionName":{"name":"cleanup_t_address","nodeType":"YulIdentifier","src":"18777:17:4"},"nodeType":"YulFunctionCall","src":"18777:24:4"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"18767:2:4"},"nodeType":"YulFunctionCall","src":"18767:35:4"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"18760:6:4"},"nodeType":"YulFunctionCall","src":"18760:43:4"},"nodeType":"YulIf","src":"18757:2:4"}]},"name":"validator_revert_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"18740:5:4","type":""}],"src":"18704:122:4"},{"body":{"nodeType":"YulBlock","src":"18875:79:4","statements":[{"body":{"nodeType":"YulBlock","src":"18932:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"18941:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"18944:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"18934:6:4"},"nodeType":"YulFunctionCall","src":"18934:12:4"},"nodeType":"YulExpressionStatement","src":"18934:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"18898:5:4"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"18923:5:4"}],"functionName":{"name":"cleanup_t_bytes32","nodeType":"YulIdentifier","src":"18905:17:4"},"nodeType":"YulFunctionCall","src":"18905:24:4"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"18895:2:4"},"nodeType":"YulFunctionCall","src":"18895:35:4"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"18888:6:4"},"nodeType":"YulFunctionCall","src":"18888:43:4"},"nodeType":"YulIf","src":"18885:2:4"}]},"name":"validator_revert_t_bytes32","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"18868:5:4","type":""}],"src":"18832:122:4"},{"body":{"nodeType":"YulBlock","src":"19002:78:4","statements":[{"body":{"nodeType":"YulBlock","src":"19058:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"19067:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"19070:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"19060:6:4"},"nodeType":"YulFunctionCall","src":"19060:12:4"},"nodeType":"YulExpressionStatement","src":"19060:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"19025:5:4"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"19049:5:4"}],"functionName":{"name":"cleanup_t_int256","nodeType":"YulIdentifier","src":"19032:16:4"},"nodeType":"YulFunctionCall","src":"19032:23:4"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"19022:2:4"},"nodeType":"YulFunctionCall","src":"19022:34:4"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"19015:6:4"},"nodeType":"YulFunctionCall","src":"19015:42:4"},"nodeType":"YulIf","src":"19012:2:4"}]},"name":"validator_revert_t_int256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"18995:5:4","type":""}],"src":"18960:120:4"},{"body":{"nodeType":"YulBlock","src":"19129:79:4","statements":[{"body":{"nodeType":"YulBlock","src":"19186:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"19195:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"19198:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"19188:6:4"},"nodeType":"YulFunctionCall","src":"19188:12:4"},"nodeType":"YulExpressionStatement","src":"19188:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"19152:5:4"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"19177:5:4"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"19159:17:4"},"nodeType":"YulFunctionCall","src":"19159:24:4"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"19149:2:4"},"nodeType":"YulFunctionCall","src":"19149:35:4"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"19142:6:4"},"nodeType":"YulFunctionCall","src":"19142:43:4"},"nodeType":"YulIf","src":"19139:2:4"}]},"name":"validator_revert_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"19122:5:4","type":""}],"src":"19086:122:4"}]},"contents":"{\n\n function abi_decode_available_length_t_bytes_memory_ptr(src, length, end) -> array {\n array := allocate_memory(array_allocation_size_t_bytes_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_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_bytes32(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_bytes32(value)\n }\n\n // bytes\n function abi_decode_t_bytes_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_bytes_memory_ptr(add(offset, 0x20), length, end)\n }\n\n function abi_decode_t_int256(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_int256(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_bytes32(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_bytes32(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_bytes32t_bytes32(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_bytes32(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_bytes32(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_bytes_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_bytes_memory_ptr(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_int256(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_int256(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_decode_tuple_t_uint256(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_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_uint256t_string_memory_ptr(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_uint256(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := calldataload(add(headStart, 32))\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n\n value1 := abi_decode_t_string_memory_ptr(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_uint256t_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_uint256(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_uint256t_uint256t_string_memory_ptrt_string_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3 {\n if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint256(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 let offset := calldataload(add(headStart, 64))\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n\n value2 := abi_decode_t_string_memory_ptr(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := calldataload(add(headStart, 96))\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n\n value3 := abi_decode_t_string_memory_ptr(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encodeUpdatedPos_t_bytes32_to_t_bytes32(value0, pos) -> updatedPos {\n abi_encode_t_bytes32_to_t_bytes32(value0, pos)\n updatedPos := add(pos, 0x20)\n }\n\n function abi_encodeUpdatedPos_t_uint256_to_t_uint256(value0, pos) -> updatedPos {\n abi_encode_t_uint256_to_t_uint256(value0, pos)\n updatedPos := add(pos, 0x20)\n }\n\n function abi_encode_t_address_to_t_address_fromStack(value, pos) {\n mstore(pos, cleanup_t_address(value))\n }\n\n // bytes32[2] -> bytes32[2]\n function abi_encode_t_array$_t_bytes32_$2_memory_ptr_to_t_array$_t_bytes32_$2_memory_ptr_fromStack(value, pos) {\n let length := array_length_t_array$_t_bytes32_$2_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_array$_t_bytes32_$2_memory_ptr_fromStack(pos, length)\n let baseRef := array_dataslot_t_array$_t_bytes32_$2_memory_ptr(value)\n let srcPtr := baseRef\n for { let i := 0 } lt(i, length) { i := add(i, 1) }\n {\n let elementValue0 := mload(srcPtr)\n pos := abi_encodeUpdatedPos_t_bytes32_to_t_bytes32(elementValue0, pos)\n srcPtr := array_nextElement_t_array$_t_bytes32_$2_memory_ptr(srcPtr)\n }\n\n }\n\n // uint256[2] -> uint256[2]\n function abi_encode_t_array$_t_uint256_$2_memory_ptr_to_t_array$_t_uint256_$2_memory_ptr_fromStack(value, pos) {\n let length := array_length_t_array$_t_uint256_$2_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_array$_t_uint256_$2_memory_ptr_fromStack(pos, length)\n let baseRef := array_dataslot_t_array$_t_uint256_$2_memory_ptr(value)\n let srcPtr := baseRef\n for { let i := 0 } lt(i, length) { i := add(i, 1) }\n {\n let elementValue0 := mload(srcPtr)\n pos := abi_encodeUpdatedPos_t_uint256_to_t_uint256(elementValue0, pos)\n srcPtr := array_nextElement_t_array$_t_uint256_$2_memory_ptr(srcPtr)\n }\n\n }\n\n function abi_encode_t_bytes32_to_t_bytes32(value, pos) {\n mstore(pos, cleanup_t_bytes32(value))\n }\n\n function abi_encode_t_bytes32_to_t_bytes32_fromStack(value, pos) {\n mstore(pos, cleanup_t_bytes32(value))\n }\n\n function abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack(value, pos) -> end {\n let length := array_length_t_bytes_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_bytes_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_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack(value, pos) -> end {\n let length := array_length_t_bytes_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack(pos, length)\n copy_memory_to_memory(add(value, 0x20), pos, length)\n end := add(pos, length)\n }\n\n function abi_encode_t_int256_to_t_int256_fromStack(value, pos) {\n mstore(pos, cleanup_t_int256(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_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack(value, pos) -> end {\n let length := array_length_t_string_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack(pos, length)\n copy_memory_to_memory(add(value, 0x20), pos, length)\n end := add(pos, length)\n }\n\n // struct Events.Struct -> struct Events.Struct\n function abi_encode_t_struct$_Struct_$47_memory_ptr_to_t_struct$_Struct_$47_memory_ptr_fromStack(value, pos) {\n let tail := add(pos, 0x40)\n\n {\n // u\n\n let memberValue0 := mload(add(value, 0x00))\n abi_encode_t_uint256_to_t_uint256(memberValue0, add(pos, 0x00))\n }\n\n {\n // v\n\n let memberValue0 := mload(add(value, 0x20))\n abi_encode_t_uint256_to_t_uint256(memberValue0, add(pos, 0x20))\n }\n\n }\n\n function abi_encode_t_uint256_to_t_uint256(value, pos) {\n mstore(pos, cleanup_t_uint256(value))\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_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos , value0) -> end {\n\n pos := abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack(value0, pos)\n\n end := pos\n }\n\n function abi_encode_tuple_packed_t_string_memory_ptr__to_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos , value0) -> end {\n\n pos := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack(value0, pos)\n\n end := pos\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_array$_t_bytes32_$2_memory_ptr__to_t_array$_t_bytes32_$2_memory_ptr__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_array$_t_bytes32_$2_memory_ptr_to_t_array$_t_bytes32_$2_memory_ptr_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_encode_tuple_t_array$_t_uint256_$2_memory_ptr__to_t_array$_t_uint256_$2_memory_ptr__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_array$_t_uint256_$2_memory_ptr_to_t_array$_t_uint256_$2_memory_ptr_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_bytes32_to_t_bytes32_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_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_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack(value0, tail)\n\n }\n\n function abi_encode_tuple_t_int256__to_t_int256__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_int256_to_t_int256_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_string_memory_ptr_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr__fromStack_reversed(headStart , value1, value0) -> tail {\n tail := add(headStart, 64)\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 mstore(add(headStart, 32), sub(tail, headStart))\n tail := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack(value1, tail)\n\n }\n\n function abi_encode_tuple_t_struct$_Struct_$47_memory_ptr__to_t_struct$_Struct_$47_memory_ptr__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_struct$_Struct_$47_memory_ptr_to_t_struct$_Struct_$47_memory_ptr_fromStack(value0, add(headStart, 0))\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_bytes_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_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_dataslot_t_array$_t_bytes32_$2_memory_ptr(ptr) -> data {\n data := ptr\n\n }\n\n function array_dataslot_t_array$_t_uint256_$2_memory_ptr(ptr) -> data {\n data := ptr\n\n }\n\n function array_length_t_array$_t_bytes32_$2_memory_ptr(value) -> length {\n\n length := 0x02\n\n }\n\n function array_length_t_array$_t_uint256_$2_memory_ptr(value) -> length {\n\n length := 0x02\n\n }\n\n function array_length_t_bytes_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function array_length_t_string_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function array_nextElement_t_array$_t_bytes32_$2_memory_ptr(ptr) -> next {\n next := add(ptr, 0x20)\n }\n\n function array_nextElement_t_array$_t_uint256_$2_memory_ptr(ptr) -> next {\n next := add(ptr, 0x20)\n }\n\n function array_storeLengthForEncoding_t_array$_t_bytes32_$2_memory_ptr_fromStack(pos, length) -> updated_pos {\n updated_pos := pos\n }\n\n function array_storeLengthForEncoding_t_array$_t_uint256_$2_memory_ptr_fromStack(pos, length) -> updated_pos {\n updated_pos := pos\n }\n\n function array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack(pos, length) -> updated_pos {\n updated_pos := pos\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 array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack(pos, length) -> updated_pos {\n updated_pos := pos\n }\n\n function cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function cleanup_t_bytes32(value) -> cleaned {\n cleaned := value\n }\n\n function cleanup_t_int256(value) -> cleaned {\n cleaned := 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 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_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 validator_revert_t_address(value) {\n if iszero(eq(value, cleanup_t_address(value))) { revert(0, 0) }\n }\n\n function validator_revert_t_bytes32(value) {\n if iszero(eq(value, cleanup_t_bytes32(value))) { revert(0, 0) }\n }\n\n function validator_revert_t_int256(value) {\n if iszero(eq(value, cleanup_t_int256(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":4,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b506004361061012c5760003560e01c80638a618191116100ad578063c76f063511610071578063c76f0635146102c3578063cc07e605146102df578063d3931e57146102fb578063db6cdf6814610317578063ec5c3ede146103215761012c565b80638a6181911461024957806390b37ea214610265578063919402441461026f5780639f31a2231461028b578063c0cd80e6146102a75761012c565b806333311ef3116100f457806333311ef3146101bd57806338393646146101d9578063443690a0146101f5578063532b9cce14610211578063813a8cf51461022d5761012c565b8063048858e5146101315780630c0c941a1461014d57806317aba537146101695780632536f127146101855780632785f8d6146101a1575b600080fd5b61014b600480360381019061014691906109f0565b61033d565b005b61016760048036038101906101629190610b7d565b61036d565b005b610183600480360381019061017e9190610b7d565b6103df565b005b61019f600480360381019061019a9190610abf565b61042e565b005b6101bb60048036038101906101b69190610b29565b610468565b005b6101d760048036038101906101d291906109f0565b6104da565b005b6101f360048036038101906101ee9190610b7d565b610514565b005b61020f600480360381019061020a9190610abf565b610551565b005b61022b60048036038101906102269190610bb9565b610596565b005b61024760048036038101906102429190610b00565b61060e565b005b610263600480360381019061025e9190610a96565b61061a565b005b61026d610654565b005b61028960048036038101906102849190610b00565b610682565b005b6102a560048036038101906102a09190610b7d565b6106bc565b005b6102c160048036038101906102bc9190610a19565b61070b565b005b6102dd60048036038101906102d89190610a55565b61075a565b005b6102f960048036038101906102f49190610a55565b610794565b005b61031560048036038101906103109190610b00565b6107d9565b005b61031f610867565b005b61033b600480360381019061033691906109c7565b610869565b005b807fb421ad092cfce88844bfbfaa9654e824ba0ee5b6b0a220f822406b62c05364c060405160405180910390a250565b7f97535d4b4270d3f1a499c85ae918ba6798cbdcc83a26529331a25dcd2194cfce8260405161039c9190610fd2565b60405180910390a17f97535d4b4270d3f1a499c85ae918ba6798cbdcc83a26529331a25dcd2194cfce816040516103d39190610fd2565b60405180910390a15050565b7f73e687a2685d698f7acf934b4929a29ae783a4bcb640d71c5d6994d74e2380ca6040518060400160405280848152602001838152506040516104229190610eeb565b60405180910390a15050565b7f9b7ddcbde8dac280e036f87acafec72f9eee31a640c08087e8439139c7e5b52a8160405161045d9190610f5e565b60405180910390a150565b7f9b7ddcbde8dac280e036f87acafec72f9eee31a640c08087e8439139c7e5b52a816040516104979190610f5e565b60405180910390a17f97535d4b4270d3f1a499c85ae918ba6798cbdcc83a26529331a25dcd2194cfce826040516104ce9190610fd2565b60405180910390a15050565b7f425517d2678bbca3c0d9d8d9fdbec34c81194e7935ed48a6a19f97db93bcef6a816040516105099190610f06565b60405180910390a150565b7f8b268bb46a33a55bece084a8b6858719c9f2985c860fa06c155a341df0b73c0e8282604051610545929190610fed565b60405180910390a15050565b8060405161055f9190610e9e565b60405180910390207fd9ca28363e2d8739e0e9c4fea1d2df98d1bd7d9d915d00e5fccbf78c0fddcdb060405160405180910390a250565b7f8b268bb46a33a55bece084a8b6858719c9f2985c860fa06c155a341df0b73c0e84846040516105c7929190610fed565b60405180910390a17f1f1a2c748505fcd8f16a719fa88d517b1b41111c4f5e07bb28311cdc4d1515388282604051610600929190610f80565b60405180910390a150505050565b61061781610682565b50565b7f39feab747bb4f579008aea963d7ebac85ad410bb83ee663a42af01464654e93f816040516106499190610f43565b60405180910390a150565b7f917b7bf7ab24d61500cb699921a3a1cc22b8833da6484fea20f262b2610604af60405160405180910390a1565b7f97535d4b4270d3f1a499c85ae918ba6798cbdcc83a26529331a25dcd2194cfce816040516106b19190610fd2565b60405180910390a150565b7fd59ab87bf64b9d737998f3dc70c649d16b135f085029c1666ca0634beb75a7736040518060400160405280848152602001838152506040516106ff9190610fb7565b60405180910390a15050565b7f15100859f3ffe92910dc3f11ed3db4e9cf32ff657c05066e44be4e69b2b488bc60405180604001604052808481526020018381525060405161074e9190610ed0565b60405180910390a15050565b7f433470edcdd53b50238be4d8e048e2baa269af5be2a4e29515c138883c745aa8816040516107899190610f21565b60405180910390a150565b806040516107a29190610e87565b60405180910390207f160e4655df40987951accf7c731d5c504f77d20c139bd73032821b91a426dd9860405160405180910390a250565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166391940244826040518263ffffffff1660e01b81526004016108329190610fd2565b600060405180830381600087803b15801561084c57600080fd5b505af1158015610860573d6000803e3d6000fd5b5050505050565b565b7f336bcd960d2e5a52cef6094ba33727f309dc2c675eebefc6d9b6b6d79abac877816040516108989190610eb5565b60405180910390a150565b60006108b66108b18461103b565b611016565b9050828152602081018484840111156108ce57600080fd5b6108d9848285611195565b509392505050565b60006108f46108ef8461106c565b611016565b90508281526020810184848401111561090c57600080fd5b610917848285611195565b509392505050565b60008135905061092e81611248565b92915050565b6000813590506109438161125f565b92915050565b600082601f83011261095a57600080fd5b813561096a8482602086016108a3565b91505092915050565b60008135905061098281611276565b92915050565b600082601f83011261099957600080fd5b81356109a98482602086016108e1565b91505092915050565b6000813590506109c18161128d565b92915050565b6000602082840312156109d957600080fd5b60006109e78482850161091f565b91505092915050565b600060208284031215610a0257600080fd5b6000610a1084828501610934565b91505092915050565b60008060408385031215610a2c57600080fd5b6000610a3a85828601610934565b9250506020610a4b85828601610934565b9150509250929050565b600060208284031215610a6757600080fd5b600082013567ffffffffffffffff811115610a8157600080fd5b610a8d84828501610949565b91505092915050565b600060208284031215610aa857600080fd5b6000610ab684828501610973565b91505092915050565b600060208284031215610ad157600080fd5b600082013567ffffffffffffffff811115610aeb57600080fd5b610af784828501610988565b91505092915050565b600060208284031215610b1257600080fd5b6000610b20848285016109b2565b91505092915050565b60008060408385031215610b3c57600080fd5b6000610b4a858286016109b2565b925050602083013567ffffffffffffffff811115610b6757600080fd5b610b7385828601610988565b9150509250929050565b60008060408385031215610b9057600080fd5b6000610b9e858286016109b2565b9250506020610baf858286016109b2565b9150509250929050565b60008060008060808587031215610bcf57600080fd5b6000610bdd878288016109b2565b9450506020610bee878288016109b2565b935050604085013567ffffffffffffffff811115610c0b57600080fd5b610c1787828801610988565b925050606085013567ffffffffffffffff811115610c3457600080fd5b610c4087828801610988565b91505092959194509250565b6000610c588383610d39565b60208301905092915050565b6000610c708383610e69565b60208301905092915050565b610c8581611145565b82525050565b610c94816110b1565b610c9e81846110f7565b9250610ca98261109d565b8060005b83811015610cda578151610cc18782610c4c565b9650610ccc836110dd565b925050600181019050610cad565b505050505050565b610ceb816110bc565b610cf58184611102565b9250610d00826110a7565b8060005b83811015610d31578151610d188782610c64565b9650610d23836110ea565b925050600181019050610d04565b505050505050565b610d4281611157565b82525050565b610d5181611157565b82525050565b6000610d62826110c7565b610d6c818561110d565b9350610d7c8185602086016111a4565b610d8581611237565b840191505092915050565b6000610d9b826110c7565b610da5818561111e565b9350610db58185602086016111a4565b80840191505092915050565b610dca81611161565b82525050565b6000610ddb826110d2565b610de58185611129565b9350610df58185602086016111a4565b610dfe81611237565b840191505092915050565b6000610e14826110d2565b610e1e818561113a565b9350610e2e8185602086016111a4565b80840191505092915050565b604082016000820151610e506000850182610e69565b506020820151610e636020850182610e69565b50505050565b610e728161118b565b82525050565b610e818161118b565b82525050565b6000610e938284610d90565b915081905092915050565b6000610eaa8284610e09565b915081905092915050565b6000602082019050610eca6000830184610c7c565b92915050565b6000604082019050610ee56000830184610c8b565b92915050565b6000604082019050610f006000830184610ce2565b92915050565b6000602082019050610f1b6000830184610d48565b92915050565b60006020820190508181036000830152610f3b8184610d57565b905092915050565b6000602082019050610f586000830184610dc1565b92915050565b60006020820190508181036000830152610f788184610dd0565b905092915050565b60006040820190508181036000830152610f9a8185610dd0565b90508181036020830152610fae8184610dd0565b90509392505050565b6000604082019050610fcc6000830184610e3a565b92915050565b6000602082019050610fe76000830184610e78565b92915050565b60006040820190506110026000830185610e78565b61100f6020830184610e78565b9392505050565b6000611020611031565b905061102c82826111d7565b919050565b6000604051905090565b600067ffffffffffffffff82111561105657611055611208565b5b61105f82611237565b9050602081019050919050565b600067ffffffffffffffff82111561108757611086611208565b5b61109082611237565b9050602081019050919050565b6000819050919050565b6000819050919050565b600060029050919050565b600060029050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b600081905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b60006111508261116b565b9050919050565b6000819050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b838110156111c25780820151818401526020810190506111a7565b838111156111d1576000848401525b50505050565b6111e082611237565b810181811067ffffffffffffffff821117156111ff576111fe611208565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b61125181611145565b811461125c57600080fd5b50565b61126881611157565b811461127357600080fd5b50565b61127f81611161565b811461128a57600080fd5b50565b6112968161118b565b81146112a157600080fd5b5056fea264697066735822122073a91a740c0de3883c5213c5981d98d2396a8b60b3cf2fb364d7e4cc826a841e64736f6c63430008040033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x12C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8A618191 GT PUSH2 0xAD JUMPI DUP1 PUSH4 0xC76F0635 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xC76F0635 EQ PUSH2 0x2C3 JUMPI DUP1 PUSH4 0xCC07E605 EQ PUSH2 0x2DF JUMPI DUP1 PUSH4 0xD3931E57 EQ PUSH2 0x2FB JUMPI DUP1 PUSH4 0xDB6CDF68 EQ PUSH2 0x317 JUMPI DUP1 PUSH4 0xEC5C3EDE EQ PUSH2 0x321 JUMPI PUSH2 0x12C JUMP JUMPDEST DUP1 PUSH4 0x8A618191 EQ PUSH2 0x249 JUMPI DUP1 PUSH4 0x90B37EA2 EQ PUSH2 0x265 JUMPI DUP1 PUSH4 0x91940244 EQ PUSH2 0x26F JUMPI DUP1 PUSH4 0x9F31A223 EQ PUSH2 0x28B JUMPI DUP1 PUSH4 0xC0CD80E6 EQ PUSH2 0x2A7 JUMPI PUSH2 0x12C JUMP JUMPDEST DUP1 PUSH4 0x33311EF3 GT PUSH2 0xF4 JUMPI DUP1 PUSH4 0x33311EF3 EQ PUSH2 0x1BD JUMPI DUP1 PUSH4 0x38393646 EQ PUSH2 0x1D9 JUMPI DUP1 PUSH4 0x443690A0 EQ PUSH2 0x1F5 JUMPI DUP1 PUSH4 0x532B9CCE EQ PUSH2 0x211 JUMPI DUP1 PUSH4 0x813A8CF5 EQ PUSH2 0x22D JUMPI PUSH2 0x12C JUMP JUMPDEST DUP1 PUSH4 0x48858E5 EQ PUSH2 0x131 JUMPI DUP1 PUSH4 0xC0C941A EQ PUSH2 0x14D JUMPI DUP1 PUSH4 0x17ABA537 EQ PUSH2 0x169 JUMPI DUP1 PUSH4 0x2536F127 EQ PUSH2 0x185 JUMPI DUP1 PUSH4 0x2785F8D6 EQ PUSH2 0x1A1 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x14B PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x146 SWAP2 SWAP1 PUSH2 0x9F0 JUMP JUMPDEST PUSH2 0x33D JUMP JUMPDEST STOP JUMPDEST PUSH2 0x167 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x162 SWAP2 SWAP1 PUSH2 0xB7D JUMP JUMPDEST PUSH2 0x36D JUMP JUMPDEST STOP JUMPDEST PUSH2 0x183 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x17E SWAP2 SWAP1 PUSH2 0xB7D JUMP JUMPDEST PUSH2 0x3DF JUMP JUMPDEST STOP JUMPDEST PUSH2 0x19F PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x19A SWAP2 SWAP1 PUSH2 0xABF JUMP JUMPDEST PUSH2 0x42E JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1BB PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1B6 SWAP2 SWAP1 PUSH2 0xB29 JUMP JUMPDEST PUSH2 0x468 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1D7 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1D2 SWAP2 SWAP1 PUSH2 0x9F0 JUMP JUMPDEST PUSH2 0x4DA JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1F3 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1EE SWAP2 SWAP1 PUSH2 0xB7D JUMP JUMPDEST PUSH2 0x514 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x20F PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x20A SWAP2 SWAP1 PUSH2 0xABF JUMP JUMPDEST PUSH2 0x551 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x22B PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x226 SWAP2 SWAP1 PUSH2 0xBB9 JUMP JUMPDEST PUSH2 0x596 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x247 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x242 SWAP2 SWAP1 PUSH2 0xB00 JUMP JUMPDEST PUSH2 0x60E JUMP JUMPDEST STOP JUMPDEST PUSH2 0x263 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x25E SWAP2 SWAP1 PUSH2 0xA96 JUMP JUMPDEST PUSH2 0x61A JUMP JUMPDEST STOP JUMPDEST PUSH2 0x26D PUSH2 0x654 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x289 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x284 SWAP2 SWAP1 PUSH2 0xB00 JUMP JUMPDEST PUSH2 0x682 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2A5 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2A0 SWAP2 SWAP1 PUSH2 0xB7D JUMP JUMPDEST PUSH2 0x6BC JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2C1 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2BC SWAP2 SWAP1 PUSH2 0xA19 JUMP JUMPDEST PUSH2 0x70B JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2DD PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2D8 SWAP2 SWAP1 PUSH2 0xA55 JUMP JUMPDEST PUSH2 0x75A JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2F9 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2F4 SWAP2 SWAP1 PUSH2 0xA55 JUMP JUMPDEST PUSH2 0x794 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x315 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x310 SWAP2 SWAP1 PUSH2 0xB00 JUMP JUMPDEST PUSH2 0x7D9 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x31F PUSH2 0x867 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x33B PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x336 SWAP2 SWAP1 PUSH2 0x9C7 JUMP JUMPDEST PUSH2 0x869 JUMP JUMPDEST STOP JUMPDEST DUP1 PUSH32 0xB421AD092CFCE88844BFBFAA9654E824BA0EE5B6B0A220F822406B62C05364C0 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP JUMP JUMPDEST PUSH32 0x97535D4B4270D3F1A499C85AE918BA6798CBDCC83A26529331A25DCD2194CFCE DUP3 PUSH1 0x40 MLOAD PUSH2 0x39C SWAP2 SWAP1 PUSH2 0xFD2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH32 0x97535D4B4270D3F1A499C85AE918BA6798CBDCC83A26529331A25DCD2194CFCE DUP2 PUSH1 0x40 MLOAD PUSH2 0x3D3 SWAP2 SWAP1 PUSH2 0xFD2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH32 0x73E687A2685D698F7ACF934B4929A29AE783A4BCB640D71C5D6994D74E2380CA PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE POP PUSH1 0x40 MLOAD PUSH2 0x422 SWAP2 SWAP1 PUSH2 0xEEB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH32 0x9B7DDCBDE8DAC280E036F87ACAFEC72F9EEE31A640C08087E8439139C7E5B52A DUP2 PUSH1 0x40 MLOAD PUSH2 0x45D SWAP2 SWAP1 PUSH2 0xF5E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH32 0x9B7DDCBDE8DAC280E036F87ACAFEC72F9EEE31A640C08087E8439139C7E5B52A DUP2 PUSH1 0x40 MLOAD PUSH2 0x497 SWAP2 SWAP1 PUSH2 0xF5E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH32 0x97535D4B4270D3F1A499C85AE918BA6798CBDCC83A26529331A25DCD2194CFCE DUP3 PUSH1 0x40 MLOAD PUSH2 0x4CE SWAP2 SWAP1 PUSH2 0xFD2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH32 0x425517D2678BBCA3C0D9D8D9FDBEC34C81194E7935ED48A6A19F97DB93BCEF6A DUP2 PUSH1 0x40 MLOAD PUSH2 0x509 SWAP2 SWAP1 PUSH2 0xF06 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH32 0x8B268BB46A33A55BECE084A8B6858719C9F2985C860FA06C155A341DF0B73C0E DUP3 DUP3 PUSH1 0x40 MLOAD PUSH2 0x545 SWAP3 SWAP2 SWAP1 PUSH2 0xFED JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH2 0x55F SWAP2 SWAP1 PUSH2 0xE9E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 PUSH32 0xD9CA28363E2D8739E0E9C4FEA1D2DF98D1BD7D9D915D00E5FCCBF78C0FDDCDB0 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP JUMP JUMPDEST PUSH32 0x8B268BB46A33A55BECE084A8B6858719C9F2985C860FA06C155A341DF0B73C0E DUP5 DUP5 PUSH1 0x40 MLOAD PUSH2 0x5C7 SWAP3 SWAP2 SWAP1 PUSH2 0xFED JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH32 0x1F1A2C748505FCD8F16A719FA88D517B1B41111C4F5E07BB28311CDC4D151538 DUP3 DUP3 PUSH1 0x40 MLOAD PUSH2 0x600 SWAP3 SWAP2 SWAP1 PUSH2 0xF80 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP JUMP JUMPDEST PUSH2 0x617 DUP2 PUSH2 0x682 JUMP JUMPDEST POP JUMP JUMPDEST PUSH32 0x39FEAB747BB4F579008AEA963D7EBAC85AD410BB83EE663A42AF01464654E93F DUP2 PUSH1 0x40 MLOAD PUSH2 0x649 SWAP2 SWAP1 PUSH2 0xF43 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH32 0x917B7BF7AB24D61500CB699921A3A1CC22B8833DA6484FEA20F262B2610604AF PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMP JUMPDEST PUSH32 0x97535D4B4270D3F1A499C85AE918BA6798CBDCC83A26529331A25DCD2194CFCE DUP2 PUSH1 0x40 MLOAD PUSH2 0x6B1 SWAP2 SWAP1 PUSH2 0xFD2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH32 0xD59AB87BF64B9D737998F3DC70C649D16B135F085029C1666CA0634BEB75A773 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE POP PUSH1 0x40 MLOAD PUSH2 0x6FF SWAP2 SWAP1 PUSH2 0xFB7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH32 0x15100859F3FFE92910DC3F11ED3DB4E9CF32FF657C05066E44BE4E69B2B488BC PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE POP PUSH1 0x40 MLOAD PUSH2 0x74E SWAP2 SWAP1 PUSH2 0xED0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH32 0x433470EDCDD53B50238BE4D8E048E2BAA269AF5BE2A4E29515C138883C745AA8 DUP2 PUSH1 0x40 MLOAD PUSH2 0x789 SWAP2 SWAP1 PUSH2 0xF21 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH2 0x7A2 SWAP2 SWAP1 PUSH2 0xE87 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 PUSH32 0x160E4655DF40987951ACCF7C731D5C504F77D20C139BD73032821B91A426DD98 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x91940244 DUP3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x832 SWAP2 SWAP1 PUSH2 0xFD2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x84C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x860 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST JUMP JUMPDEST PUSH32 0x336BCD960D2E5A52CEF6094BA33727F309DC2C675EEBEFC6D9B6B6D79ABAC877 DUP2 PUSH1 0x40 MLOAD PUSH2 0x898 SWAP2 SWAP1 PUSH2 0xEB5 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8B6 PUSH2 0x8B1 DUP5 PUSH2 0x103B JUMP JUMPDEST PUSH2 0x1016 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 DUP5 DUP5 ADD GT ISZERO PUSH2 0x8CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8D9 DUP5 DUP3 DUP6 PUSH2 0x1195 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8F4 PUSH2 0x8EF DUP5 PUSH2 0x106C JUMP JUMPDEST PUSH2 0x1016 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 DUP5 DUP5 ADD GT ISZERO PUSH2 0x90C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x917 DUP5 DUP3 DUP6 PUSH2 0x1195 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x92E DUP2 PUSH2 0x1248 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x943 DUP2 PUSH2 0x125F JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x95A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x96A DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x8A3 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x982 DUP2 PUSH2 0x1276 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x999 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x9A9 DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x8E1 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x9C1 DUP2 PUSH2 0x128D JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x9D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x9E7 DUP5 DUP3 DUP6 ADD PUSH2 0x91F JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xA02 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xA10 DUP5 DUP3 DUP6 ADD PUSH2 0x934 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xA2C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xA3A DUP6 DUP3 DUP7 ADD PUSH2 0x934 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0xA4B DUP6 DUP3 DUP7 ADD PUSH2 0x934 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xA67 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xA81 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA8D DUP5 DUP3 DUP6 ADD PUSH2 0x949 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xAA8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xAB6 DUP5 DUP3 DUP6 ADD PUSH2 0x973 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xAD1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xAEB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xAF7 DUP5 DUP3 DUP6 ADD PUSH2 0x988 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xB12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xB20 DUP5 DUP3 DUP6 ADD PUSH2 0x9B2 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xB3C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xB4A DUP6 DUP3 DUP7 ADD PUSH2 0x9B2 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xB67 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB73 DUP6 DUP3 DUP7 ADD PUSH2 0x988 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xB90 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xB9E DUP6 DUP3 DUP7 ADD PUSH2 0x9B2 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0xBAF DUP6 DUP3 DUP7 ADD PUSH2 0x9B2 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0xBCF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xBDD DUP8 DUP3 DUP9 ADD PUSH2 0x9B2 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 PUSH2 0xBEE DUP8 DUP3 DUP9 ADD PUSH2 0x9B2 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xC0B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xC17 DUP8 DUP3 DUP9 ADD PUSH2 0x988 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xC34 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xC40 DUP8 DUP3 DUP9 ADD PUSH2 0x988 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC58 DUP4 DUP4 PUSH2 0xD39 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC70 DUP4 DUP4 PUSH2 0xE69 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xC85 DUP2 PUSH2 0x1145 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0xC94 DUP2 PUSH2 0x10B1 JUMP JUMPDEST PUSH2 0xC9E DUP2 DUP5 PUSH2 0x10F7 JUMP JUMPDEST SWAP3 POP PUSH2 0xCA9 DUP3 PUSH2 0x109D JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xCDA JUMPI DUP2 MLOAD PUSH2 0xCC1 DUP8 DUP3 PUSH2 0xC4C JUMP JUMPDEST SWAP7 POP PUSH2 0xCCC DUP4 PUSH2 0x10DD JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0xCAD JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0xCEB DUP2 PUSH2 0x10BC JUMP JUMPDEST PUSH2 0xCF5 DUP2 DUP5 PUSH2 0x1102 JUMP JUMPDEST SWAP3 POP PUSH2 0xD00 DUP3 PUSH2 0x10A7 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xD31 JUMPI DUP2 MLOAD PUSH2 0xD18 DUP8 DUP3 PUSH2 0xC64 JUMP JUMPDEST SWAP7 POP PUSH2 0xD23 DUP4 PUSH2 0x10EA JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0xD04 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0xD42 DUP2 PUSH2 0x1157 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0xD51 DUP2 PUSH2 0x1157 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD62 DUP3 PUSH2 0x10C7 JUMP JUMPDEST PUSH2 0xD6C DUP2 DUP6 PUSH2 0x110D JUMP JUMPDEST SWAP4 POP PUSH2 0xD7C DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x11A4 JUMP JUMPDEST PUSH2 0xD85 DUP2 PUSH2 0x1237 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD9B DUP3 PUSH2 0x10C7 JUMP JUMPDEST PUSH2 0xDA5 DUP2 DUP6 PUSH2 0x111E JUMP JUMPDEST SWAP4 POP PUSH2 0xDB5 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x11A4 JUMP JUMPDEST DUP1 DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xDCA DUP2 PUSH2 0x1161 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xDDB DUP3 PUSH2 0x10D2 JUMP JUMPDEST PUSH2 0xDE5 DUP2 DUP6 PUSH2 0x1129 JUMP JUMPDEST SWAP4 POP PUSH2 0xDF5 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x11A4 JUMP JUMPDEST PUSH2 0xDFE DUP2 PUSH2 0x1237 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE14 DUP3 PUSH2 0x10D2 JUMP JUMPDEST PUSH2 0xE1E DUP2 DUP6 PUSH2 0x113A JUMP JUMPDEST SWAP4 POP PUSH2 0xE2E DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x11A4 JUMP JUMPDEST DUP1 DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP3 ADD PUSH1 0x0 DUP3 ADD MLOAD PUSH2 0xE50 PUSH1 0x0 DUP6 ADD DUP3 PUSH2 0xE69 JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0xE63 PUSH1 0x20 DUP6 ADD DUP3 PUSH2 0xE69 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0xE72 DUP2 PUSH2 0x118B JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0xE81 DUP2 PUSH2 0x118B JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE93 DUP3 DUP5 PUSH2 0xD90 JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xEAA DUP3 DUP5 PUSH2 0xE09 JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xECA PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xC7C JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0xEE5 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xC8B JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0xF00 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xCE2 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xF1B PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xD48 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 0xF3B DUP2 DUP5 PUSH2 0xD57 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xF58 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xDC1 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 0xF78 DUP2 DUP5 PUSH2 0xDD0 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0xF9A DUP2 DUP6 PUSH2 0xDD0 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0xFAE DUP2 DUP5 PUSH2 0xDD0 JUMP JUMPDEST SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0xFCC PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xE3A JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xFE7 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xE78 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x1002 PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0xE78 JUMP JUMPDEST PUSH2 0x100F PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0xE78 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1020 PUSH2 0x1031 JUMP JUMPDEST SWAP1 POP PUSH2 0x102C DUP3 DUP3 PUSH2 0x11D7 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 0x1056 JUMPI PUSH2 0x1055 PUSH2 0x1208 JUMP JUMPDEST JUMPDEST PUSH2 0x105F DUP3 PUSH2 0x1237 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x1087 JUMPI PUSH2 0x1086 PUSH2 0x1208 JUMP JUMPDEST JUMPDEST PUSH2 0x1090 DUP3 PUSH2 0x1237 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1150 DUP3 PUSH2 0x116B JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 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 0x11C2 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x11A7 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x11D1 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x11E0 DUP3 PUSH2 0x1237 JUMP JUMPDEST DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x11FF JUMPI PUSH2 0x11FE PUSH2 0x1208 JUMP JUMPDEST JUMPDEST DUP1 PUSH1 0x40 MSTORE POP POP POP JUMP 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 PUSH2 0x1251 DUP2 PUSH2 0x1145 JUMP JUMPDEST DUP2 EQ PUSH2 0x125C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x1268 DUP2 PUSH2 0x1157 JUMP JUMPDEST DUP2 EQ PUSH2 0x1273 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x127F DUP2 PUSH2 0x1161 JUMP JUMPDEST DUP2 EQ PUSH2 0x128A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x1296 DUP2 PUSH2 0x118B JUMP JUMPDEST DUP2 EQ PUSH2 0x12A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH20 0xA91A740C0DE3883C5213C5981D98D2396A8B60B3 0xCF 0x2F 0xB3 PUSH5 0xD7E4CC826A DUP5 0x1E PUSH5 0x736F6C6343 STOP ADDMOD DIV STOP CALLER ","sourceMap":"57:2471:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1696:86;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1087:101;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2163:83;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1278:76;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1786:116;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1620:72;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1192:82;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1358:90;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1906:163;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2349:77;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;947:60;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;813:63;;;:::i;:::-;;880;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2073:86;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2250:95;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1452:73;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1529:87;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2430:96;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;779:30;;;:::i;:::-;;1011:72;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1696:86;1775:1;1753:24;;;;;;;;;;1696:86;:::o;1087:101::-;1144:14;1156:1;1144:14;;;;;;:::i;:::-;;;;;;;;1169;1181:1;1169:14;;;;;;:::i;:::-;;;;;;;;1087:101;;:::o;2163:83::-;2220:21;;;;;;;;;2235:1;2220:21;;;;2238:1;2220:21;;;;;;;;;:::i;:::-;;;;;;;;2163:83;;:::o;1278:76::-;1333:16;1347:1;1333:16;;;;;;:::i;:::-;;;;;;;;1278:76;:::o;1786:116::-;1856:16;1870:1;1856:16;;;;;;:::i;:::-;;;;;;;;1883:14;1895:1;1883:14;;;;;;:::i;:::-;;;;;;;;1786:116;;:::o;1620:72::-;1670:17;1685:1;1670:17;;;;;;:::i;:::-;;;;;;;;1620:72;:::o;1192:82::-;1248:21;1264:1;1267;1248:21;;;;;;;:::i;:::-;;;;;;;;1192:82;;:::o;1358:90::-;1441:1;1420:23;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;1358:90;:::o;1906:163::-;2009:21;2025:1;2028;2009:21;;;;;;;:::i;:::-;;;;;;;;2041:23;2059:1;2062;2041:23;;;;;;;:::i;:::-;;;;;;;;1906:163;;;;:::o;2349:77::-;2410:11;2419:1;2410:8;:11::i;:::-;2349:77;:::o;947:60::-;989:13;1000:1;989:13;;;;;;:::i;:::-;;;;;;;;947:60;:::o;813:63::-;858:13;;;;;;;;;;813:63::o;880:::-;924:14;936:1;924:14;;;;;;:::i;:::-;;;;;;;;880:63;:::o;2073:86::-;2127:27;2141:12;;;;;;;;2148:1;2141:12;;;;2151:1;2141:12;;;2127:27;;;;;;:::i;:::-;;;;;;;;2073:86;;:::o;2250:95::-;2316:24;;;;;;;;;2334:1;2316:24;;;;2337:1;2316:24;;;;;;;;;:::i;:::-;;;;;;;;2250:95;;:::o;1452:73::-;1505:15;1518:1;1505:15;;;;;;:::i;:::-;;;;;;;;1452:73;:::o;1529:87::-;1609:1;1589:22;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;1529:87;:::o;2430:96::-;2494:15;;;;;;;;;;:24;;;2519:1;2494:27;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2430:96;:::o;779:30::-;:::o;1011:72::-;1061:17;1076:1;1061:17;;;;;;:::i;:::-;;;;;;;;1011:72;:::o;7:343:4:-;84:5;109:65;125:48;166:6;125:48;:::i;:::-;109:65;:::i;:::-;100:74;;197:6;190:5;183:21;235:4;228:5;224:16;273:3;264:6;259:3;255:16;252:25;249:2;;;290:1;287;280:12;249:2;303:41;337:6;332:3;327;303:41;:::i;:::-;90:260;;;;;;:::o;356:345::-;434:5;459:66;475:49;517:6;475:49;:::i;:::-;459:66;:::i;:::-;450:75;;548:6;541:5;534:21;586:4;579:5;575:16;624:3;615:6;610:3;606:16;603:25;600:2;;;641:1;638;631:12;600:2;654:41;688:6;683:3;678;654:41;:::i;:::-;440:261;;;;;;:::o;707:139::-;753:5;791:6;778:20;769:29;;807:33;834:5;807:33;:::i;:::-;759:87;;;;:::o;852:139::-;898:5;936:6;923:20;914:29;;952:33;979:5;952:33;:::i;:::-;904:87;;;;:::o;1010:271::-;1065:5;1114:3;1107:4;1099:6;1095:17;1091:27;1081:2;;1132:1;1129;1122:12;1081:2;1172:6;1159:20;1197:78;1271:3;1263:6;1256:4;1248:6;1244:17;1197:78;:::i;:::-;1188:87;;1071:210;;;;;:::o;1287:137::-;1332:5;1370:6;1357:20;1348:29;;1386:32;1412:5;1386:32;:::i;:::-;1338:86;;;;:::o;1444:273::-;1500:5;1549:3;1542:4;1534:6;1530:17;1526:27;1516:2;;1567:1;1564;1557:12;1516:2;1607:6;1594:20;1632:79;1707:3;1699:6;1692:4;1684:6;1680:17;1632:79;:::i;:::-;1623:88;;1506:211;;;;;:::o;1723:139::-;1769:5;1807:6;1794:20;1785:29;;1823:33;1850:5;1823:33;:::i;:::-;1775:87;;;;:::o;1868:262::-;1927:6;1976:2;1964:9;1955:7;1951:23;1947:32;1944:2;;;1992:1;1989;1982:12;1944:2;2035:1;2060:53;2105:7;2096:6;2085:9;2081:22;2060:53;:::i;:::-;2050:63;;2006:117;1934:196;;;;:::o;2136:262::-;2195:6;2244:2;2232:9;2223:7;2219:23;2215:32;2212:2;;;2260:1;2257;2250:12;2212:2;2303:1;2328:53;2373:7;2364:6;2353:9;2349:22;2328:53;:::i;:::-;2318:63;;2274:117;2202:196;;;;:::o;2404:407::-;2472:6;2480;2529:2;2517:9;2508:7;2504:23;2500:32;2497:2;;;2545:1;2542;2535:12;2497:2;2588:1;2613:53;2658:7;2649:6;2638:9;2634:22;2613:53;:::i;:::-;2603:63;;2559:117;2715:2;2741:53;2786:7;2777:6;2766:9;2762:22;2741:53;:::i;:::-;2731:63;;2686:118;2487:324;;;;;:::o;2817:373::-;2885:6;2934:2;2922:9;2913:7;2909:23;2905:32;2902:2;;;2950:1;2947;2940:12;2902:2;3021:1;3010:9;3006:17;2993:31;3051:18;3043:6;3040:30;3037:2;;;3083:1;3080;3073:12;3037:2;3111:62;3165:7;3156:6;3145:9;3141:22;3111:62;:::i;:::-;3101:72;;2964:219;2892:298;;;;:::o;3196:260::-;3254:6;3303:2;3291:9;3282:7;3278:23;3274:32;3271:2;;;3319:1;3316;3309:12;3271:2;3362:1;3387:52;3431:7;3422:6;3411:9;3407:22;3387:52;:::i;:::-;3377:62;;3333:116;3261:195;;;;:::o;3462:375::-;3531:6;3580:2;3568:9;3559:7;3555:23;3551:32;3548:2;;;3596:1;3593;3586:12;3548:2;3667:1;3656:9;3652:17;3639:31;3697:18;3689:6;3686:30;3683:2;;;3729:1;3726;3719:12;3683:2;3757:63;3812:7;3803:6;3792:9;3788:22;3757:63;:::i;:::-;3747:73;;3610:220;3538:299;;;;:::o;3843:262::-;3902:6;3951:2;3939:9;3930:7;3926:23;3922:32;3919:2;;;3967:1;3964;3957:12;3919:2;4010:1;4035:53;4080:7;4071:6;4060:9;4056:22;4035:53;:::i;:::-;4025:63;;3981:117;3909:196;;;;:::o;4111:520::-;4189:6;4197;4246:2;4234:9;4225:7;4221:23;4217:32;4214:2;;;4262:1;4259;4252:12;4214:2;4305:1;4330:53;4375:7;4366:6;4355:9;4351:22;4330:53;:::i;:::-;4320:63;;4276:117;4460:2;4449:9;4445:18;4432:32;4491:18;4483:6;4480:30;4477:2;;;4523:1;4520;4513:12;4477:2;4551:63;4606:7;4597:6;4586:9;4582:22;4551:63;:::i;:::-;4541:73;;4403:221;4204:427;;;;;:::o;4637:407::-;4705:6;4713;4762:2;4750:9;4741:7;4737:23;4733:32;4730:2;;;4778:1;4775;4768:12;4730:2;4821:1;4846:53;4891:7;4882:6;4871:9;4867:22;4846:53;:::i;:::-;4836:63;;4792:117;4948:2;4974:53;5019:7;5010:6;4999:9;4995:22;4974:53;:::i;:::-;4964:63;;4919:118;4720:324;;;;;:::o;5050:924::-;5156:6;5164;5172;5180;5229:3;5217:9;5208:7;5204:23;5200:33;5197:2;;;5246:1;5243;5236:12;5197:2;5289:1;5314:53;5359:7;5350:6;5339:9;5335:22;5314:53;:::i;:::-;5304:63;;5260:117;5416:2;5442:53;5487:7;5478:6;5467:9;5463:22;5442:53;:::i;:::-;5432:63;;5387:118;5572:2;5561:9;5557:18;5544:32;5603:18;5595:6;5592:30;5589:2;;;5635:1;5632;5625:12;5589:2;5663:63;5718:7;5709:6;5698:9;5694:22;5663:63;:::i;:::-;5653:73;;5515:221;5803:2;5792:9;5788:18;5775:32;5834:18;5826:6;5823:30;5820:2;;;5866:1;5863;5856:12;5820:2;5894:63;5949:7;5940:6;5929:9;5925:22;5894:63;:::i;:::-;5884:73;;5746:221;5187:787;;;;;;;:::o;5980:179::-;6049:10;6070:46;6112:3;6104:6;6070:46;:::i;:::-;6148:4;6143:3;6139:14;6125:28;;6060:99;;;;:::o;6165:179::-;6234:10;6255:46;6297:3;6289:6;6255:46;:::i;:::-;6333:4;6328:3;6324:14;6310:28;;6245:99;;;;:::o;6350:118::-;6437:24;6455:5;6437:24;:::i;:::-;6432:3;6425:37;6415:53;;:::o;6506:694::-;6642:52;6688:5;6642:52;:::i;:::-;6710:84;6787:6;6782:3;6710:84;:::i;:::-;6703:91;;6818:54;6866:5;6818:54;:::i;:::-;6895:7;6926:1;6911:282;6936:6;6933:1;6930:13;6911:282;;;7012:6;7006:13;7039:63;7098:3;7083:13;7039:63;:::i;:::-;7032:70;;7125:58;7176:6;7125:58;:::i;:::-;7115:68;;6971:222;6958:1;6955;6951:9;6946:14;;6911:282;;;6915:14;6618:582;;;;;:::o;7238:694::-;7374:52;7420:5;7374:52;:::i;:::-;7442:84;7519:6;7514:3;7442:84;:::i;:::-;7435:91;;7550:54;7598:5;7550:54;:::i;:::-;7627:7;7658:1;7643:282;7668:6;7665:1;7662:13;7643:282;;;7744:6;7738:13;7771:63;7830:3;7815:13;7771:63;:::i;:::-;7764:70;;7857:58;7908:6;7857:58;:::i;:::-;7847:68;;7703:222;7690:1;7687;7683:9;7678:14;;7643:282;;;7647:14;7350:582;;;;;:::o;7938:108::-;8015:24;8033:5;8015:24;:::i;:::-;8010:3;8003:37;7993:53;;:::o;8052:118::-;8139:24;8157:5;8139:24;:::i;:::-;8134:3;8127:37;8117:53;;:::o;8176:360::-;8262:3;8290:38;8322:5;8290:38;:::i;:::-;8344:70;8407:6;8402:3;8344:70;:::i;:::-;8337:77;;8423:52;8468:6;8463:3;8456:4;8449:5;8445:16;8423:52;:::i;:::-;8500:29;8522:6;8500:29;:::i;:::-;8495:3;8491:39;8484:46;;8266:270;;;;;:::o;8542:373::-;8646:3;8674:38;8706:5;8674:38;:::i;:::-;8728:88;8809:6;8804:3;8728:88;:::i;:::-;8721:95;;8825:52;8870:6;8865:3;8858:4;8851:5;8847:16;8825:52;:::i;:::-;8902:6;8897:3;8893:16;8886:23;;8650:265;;;;;:::o;8921:115::-;9006:23;9023:5;9006:23;:::i;:::-;9001:3;8994:36;8984:52;;:::o;9042:364::-;9130:3;9158:39;9191:5;9158:39;:::i;:::-;9213:71;9277:6;9272:3;9213:71;:::i;:::-;9206:78;;9293:52;9338:6;9333:3;9326:4;9319:5;9315:16;9293:52;:::i;:::-;9370:29;9392:6;9370:29;:::i;:::-;9365:3;9361:39;9354:46;;9134:272;;;;;:::o;9412:377::-;9518:3;9546:39;9579:5;9546:39;:::i;:::-;9601:89;9683:6;9678:3;9601:89;:::i;:::-;9594:96;;9699:52;9744:6;9739:3;9732:4;9725:5;9721:16;9699:52;:::i;:::-;9776:6;9771:3;9767:16;9760:23;;9522:267;;;;;:::o;9847:495::-;9988:4;9983:3;9979:14;10072:4;10065:5;10061:16;10055:23;10091:63;10148:4;10143:3;10139:14;10125:12;10091:63;:::i;:::-;10003:161;10243:4;10236:5;10232:16;10226:23;10262:63;10319:4;10314:3;10310:14;10296:12;10262:63;:::i;:::-;10174:161;9957:385;;;:::o;10348:108::-;10425:24;10443:5;10425:24;:::i;:::-;10420:3;10413:37;10403:53;;:::o;10462:118::-;10549:24;10567:5;10549:24;:::i;:::-;10544:3;10537:37;10527:53;;:::o;10586:271::-;10716:3;10738:93;10827:3;10818:6;10738:93;:::i;:::-;10731:100;;10848:3;10841:10;;10720:137;;;;:::o;10863:275::-;10995:3;11017:95;11108:3;11099:6;11017:95;:::i;:::-;11010:102;;11129:3;11122:10;;10999:139;;;;:::o;11144:222::-;11237:4;11275:2;11264:9;11260:18;11252:26;;11288:71;11356:1;11345:9;11341:17;11332:6;11288:71;:::i;:::-;11242:124;;;;:::o;11372:314::-;11511:4;11549:2;11538:9;11534:18;11526:26;;11562:117;11676:1;11665:9;11661:17;11652:6;11562:117;:::i;:::-;11516:170;;;;:::o;11692:314::-;11831:4;11869:2;11858:9;11854:18;11846:26;;11882:117;11996:1;11985:9;11981:17;11972:6;11882:117;:::i;:::-;11836:170;;;;:::o;12012:222::-;12105:4;12143:2;12132:9;12128:18;12120:26;;12156:71;12224:1;12213:9;12209:17;12200:6;12156:71;:::i;:::-;12110:124;;;;:::o;12240:309::-;12351:4;12389:2;12378:9;12374:18;12366:26;;12438:9;12432:4;12428:20;12424:1;12413:9;12409:17;12402:47;12466:76;12537:4;12528:6;12466:76;:::i;:::-;12458:84;;12356:193;;;;:::o;12555:218::-;12646:4;12684:2;12673:9;12669:18;12661:26;;12697:69;12763:1;12752:9;12748:17;12739:6;12697:69;:::i;:::-;12651:122;;;;:::o;12779:313::-;12892:4;12930:2;12919:9;12915:18;12907:26;;12979:9;12973:4;12969:20;12965:1;12954:9;12950:17;12943:47;13007:78;13080:4;13071:6;13007:78;:::i;:::-;12999:86;;12897:195;;;;:::o;13098:514::-;13259:4;13297:2;13286:9;13282:18;13274:26;;13346:9;13340:4;13336:20;13332:1;13321:9;13317:17;13310:47;13374:78;13447:4;13438:6;13374:78;:::i;:::-;13366:86;;13499:9;13493:4;13489:20;13484:2;13473:9;13469:18;13462:48;13527:78;13600:4;13591:6;13527:78;:::i;:::-;13519:86;;13264:348;;;;;:::o;13618:310::-;13755:4;13793:2;13782:9;13778:18;13770:26;;13806:115;13918:1;13907:9;13903:17;13894:6;13806:115;:::i;:::-;13760:168;;;;:::o;13934:222::-;14027:4;14065:2;14054:9;14050:18;14042:26;;14078:71;14146:1;14135:9;14131:17;14122:6;14078:71;:::i;:::-;14032:124;;;;:::o;14162:332::-;14283:4;14321:2;14310:9;14306:18;14298:26;;14334:71;14402:1;14391:9;14387:17;14378:6;14334:71;:::i;:::-;14415:72;14483:2;14472:9;14468:18;14459:6;14415:72;:::i;:::-;14288:206;;;;;:::o;14500:129::-;14534:6;14561:20;;:::i;:::-;14551:30;;14590:33;14618:4;14610:6;14590:33;:::i;:::-;14541:88;;;:::o;14635:75::-;14668:6;14701:2;14695:9;14685:19;;14675:35;:::o;14716:307::-;14777:4;14867:18;14859:6;14856:30;14853:2;;;14889:18;;:::i;:::-;14853:2;14927:29;14949:6;14927:29;:::i;:::-;14919:37;;15011:4;15005;15001:15;14993:23;;14782:241;;;:::o;15029:308::-;15091:4;15181:18;15173:6;15170:30;15167:2;;;15203:18;;:::i;:::-;15167:2;15241:29;15263:6;15241:29;:::i;:::-;15233:37;;15325:4;15319;15315:15;15307:23;;15096:241;;;:::o;15343:98::-;15408:4;15431:3;15423:11;;15413:28;;;:::o;15447:98::-;15512:4;15535:3;15527:11;;15517:28;;;:::o;15551:104::-;15616:6;15644:4;15634:14;;15623:32;;;:::o;15661:104::-;15726:6;15754:4;15744:14;;15733:32;;;:::o;15771:98::-;15822:6;15856:5;15850:12;15840:22;;15829:40;;;:::o;15875:99::-;15927:6;15961:5;15955:12;15945:22;;15934:40;;;:::o;15980:111::-;16048:4;16080;16075:3;16071:14;16063:22;;16053:38;;;:::o;16097:111::-;16165:4;16197;16192:3;16188:14;16180:22;;16170:38;;;:::o;16214:143::-;16311:11;16348:3;16333:18;;16323:34;;;;:::o;16363:143::-;16460:11;16497:3;16482:18;;16472:34;;;;:::o;16512:168::-;16595:11;16629:6;16624:3;16617:19;16669:4;16664:3;16660:14;16645:29;;16607:73;;;;:::o;16686:147::-;16787:11;16824:3;16809:18;;16799:34;;;;:::o;16839:169::-;16923:11;16957:6;16952:3;16945:19;16997:4;16992:3;16988:14;16973:29;;16935:73;;;;:::o;17014:148::-;17116:11;17153:3;17138:18;;17128:34;;;;:::o;17168:96::-;17205:7;17234:24;17252:5;17234:24;:::i;:::-;17223:35;;17213:51;;;:::o;17270:77::-;17307:7;17336:5;17325:16;;17315:32;;;:::o;17353:76::-;17389:7;17418:5;17407:16;;17397:32;;;:::o;17435:126::-;17472:7;17512:42;17505:5;17501:54;17490:65;;17480:81;;;:::o;17567:77::-;17604:7;17633:5;17622:16;;17612:32;;;:::o;17650:154::-;17734:6;17729:3;17724;17711:30;17796:1;17787:6;17782:3;17778:16;17771:27;17701:103;;;:::o;17810:307::-;17878:1;17888:113;17902:6;17899:1;17896:13;17888:113;;;17987:1;17982:3;17978:11;17972:18;17968:1;17963:3;17959:11;17952:39;17924:2;17921:1;17917:10;17912:15;;17888:113;;;18019:6;18016:1;18013:13;18010:2;;;18099:1;18090:6;18085:3;18081:16;18074:27;18010:2;17859:258;;;;:::o;18123:281::-;18206:27;18228:4;18206:27;:::i;:::-;18198:6;18194:40;18336:6;18324:10;18321:22;18300:18;18288:10;18285:34;18282:62;18279:2;;;18347:18;;:::i;:::-;18279:2;18387:10;18383:2;18376:22;18166:238;;;:::o;18410:180::-;18458:77;18455:1;18448:88;18555:4;18552:1;18545:15;18579:4;18576:1;18569:15;18596:102;18637:6;18688:2;18684:7;18679:2;18672:5;18668:14;18664:28;18654:38;;18644:54;;;:::o;18704:122::-;18777:24;18795:5;18777:24;:::i;:::-;18770:5;18767:35;18757:2;;18816:1;18813;18806:12;18757:2;18747:79;:::o;18832:122::-;18905:24;18923:5;18905:24;:::i;:::-;18898:5;18895:35;18885:2;;18944:1;18941;18934:12;18885:2;18875:79;:::o;18960:120::-;19032:23;19049:5;19032:23;:::i;:::-;19025:5;19022:34;19012:2;;19070:1;19067;19060:12;19012:2;19002:78;:::o;19086:122::-;19159:24;19177:5;19159:24;:::i;:::-;19152:5;19149:35;19139:2;;19198:1;19195;19188:12;19139:2;19129:79;:::o"},"methodIdentifiers":{"doNotEmit()":"db6cdf68","emitAddress(address)":"ec5c3ede","emitBytes(bytes)":"c76f0635","emitBytes32(bytes32)":"33311ef3","emitBytes32Array(bytes32,bytes32)":"c0cd80e6","emitIndexedBytes(bytes)":"cc07e605","emitIndexedBytes32(bytes32)":"048858e5","emitIndexedString(string)":"443690a0","emitInt(int256)":"8a618191","emitNestedUintFromAnotherContract(uint256)":"d3931e57","emitNestedUintFromSameContract(uint256)":"813a8cf5","emitString(string)":"2536f127","emitStruct(uint256,uint256)":"9f31a223","emitTwoUints(uint256,uint256)":"38393646","emitTwoUintsAndTwoStrings(uint256,uint256,string,string)":"532b9cce","emitUint(uint256)":"91940244","emitUintAndString(uint256,string)":"2785f8d6","emitUintArray(uint256,uint256)":"17aba537","emitUintTwice(uint256,uint256)":"0c0c941a","emitWithoutArgs()":"90b37ea2"}},"metadata":"{\"compiler\":{\"version\":\"0.8.4+commit.c7e474f2\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract AnotherContract\",\"name\":\"c\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"a\",\"type\":\"address\"}],\"name\":\"WithAddressArg\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"b\",\"type\":\"bytes32\"}],\"name\":\"WithBytes32Arg\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32[2]\",\"name\":\"a\",\"type\":\"bytes32[2]\"}],\"name\":\"WithBytes32Array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"b\",\"type\":\"bytes\"}],\"name\":\"WithBytesArg\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"b\",\"type\":\"bytes32\"}],\"name\":\"WithIndexedBytes32Arg\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"b\",\"type\":\"bytes\"}],\"name\":\"WithIndexedBytesArg\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"string\",\"name\":\"s\",\"type\":\"string\"}],\"name\":\"WithIndexedStringArg\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"i\",\"type\":\"int256\"}],\"name\":\"WithIntArg\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"s\",\"type\":\"string\"}],\"name\":\"WithStringArg\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"u\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"v\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"struct Events.Struct\",\"name\":\"s\",\"type\":\"tuple\"}],\"name\":\"WithStructArg\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"s\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"t\",\"type\":\"string\"}],\"name\":\"WithTwoStringArgs\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"u\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"v\",\"type\":\"uint256\"}],\"name\":\"WithTwoUintArgs\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"u\",\"type\":\"uint256\"}],\"name\":\"WithUintArg\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[2]\",\"name\":\"a\",\"type\":\"uint256[2]\"}],\"name\":\"WithUintArray\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"WithoutArgs\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"doNotEmit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"a\",\"type\":\"address\"}],\"name\":\"emitAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"b\",\"type\":\"bytes\"}],\"name\":\"emitBytes\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"b\",\"type\":\"bytes32\"}],\"name\":\"emitBytes32\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"b\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"c\",\"type\":\"bytes32\"}],\"name\":\"emitBytes32Array\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"b\",\"type\":\"bytes\"}],\"name\":\"emitIndexedBytes\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"b\",\"type\":\"bytes32\"}],\"name\":\"emitIndexedBytes32\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"s\",\"type\":\"string\"}],\"name\":\"emitIndexedString\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"i\",\"type\":\"int256\"}],\"name\":\"emitInt\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"u\",\"type\":\"uint256\"}],\"name\":\"emitNestedUintFromAnotherContract\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"u\",\"type\":\"uint256\"}],\"name\":\"emitNestedUintFromSameContract\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"s\",\"type\":\"string\"}],\"name\":\"emitString\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"u\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"v\",\"type\":\"uint256\"}],\"name\":\"emitStruct\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"u\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"v\",\"type\":\"uint256\"}],\"name\":\"emitTwoUints\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"u\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"v\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"s\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"t\",\"type\":\"string\"}],\"name\":\"emitTwoUintsAndTwoStrings\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"u\",\"type\":\"uint256\"}],\"name\":\"emitUint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"u\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"s\",\"type\":\"string\"}],\"name\":\"emitUintAndString\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"u\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"v\",\"type\":\"uint256\"}],\"name\":\"emitUintArray\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"u\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"v\",\"type\":\"uint256\"}],\"name\":\"emitUintTwice\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"emitWithoutArgs\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/Events.sol\":\"Events\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/Events.sol\":{\"keccak256\":\"0x1f12bbd1b991a4eb017f864e7ca09d99cee0730630313442e99fc32a29b28b91\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c8ba3dbc99ecfbb05a95a9a89e8ea74e86f7cbd5441a53fca9f3de94651313d5\",\"dweb:/ipfs/QmYr9HUxkuQxuEwxtLn3f9gB7i2epM95Znt6fRj9xL9T6Y\"]}},\"version\":1}"},"OverrideEventContract":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"u","type":"uint256"}],"name":"simpleEvent","type":"event"},{"anonymous":false,"inputs":[],"name":"simpleEvent","type":"event"},{"inputs":[{"internalType":"uint256","name":"u","type":"uint256"}],"name":"emitSimpleEventWithUintArg","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"emitSimpleEventWithoutArg","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"608060405234801561001057600080fd5b50610188806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80632ce136d91461003b5780638e1c72bb14610057575b600080fd5b610055600480360381019061005091906100de565b610061565b005b61005f61009b565b005b7fb2dc4835200bc382210c109031e47d05b37c9244807898f5910a43f961e6719a816040516100909190610116565b60405180910390a150565b7f8922a6ca0f59f137d8e739a3dca968247fca890d147a5006a57da5bc782f6ae960405160405180910390a1565b6000813590506100d88161013b565b92915050565b6000602082840312156100f057600080fd5b60006100fe848285016100c9565b91505092915050565b61011081610131565b82525050565b600060208201905061012b6000830184610107565b92915050565b6000819050919050565b61014481610131565b811461014f57600080fd5b5056fea264697066735822122016232a4f6ea73657adfebd142c8d15f5593e419f600cb1983aba440defd27a5064736f6c63430008040033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x188 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x36 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x2CE136D9 EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0x8E1C72BB EQ PUSH2 0x57 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x55 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x50 SWAP2 SWAP1 PUSH2 0xDE JUMP JUMPDEST PUSH2 0x61 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x5F PUSH2 0x9B JUMP JUMPDEST STOP JUMPDEST PUSH32 0xB2DC4835200BC382210C109031E47D05B37C9244807898F5910A43F961E6719A DUP2 PUSH1 0x40 MLOAD PUSH2 0x90 SWAP2 SWAP1 PUSH2 0x116 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH32 0x8922A6CA0F59F137D8E739A3DCA968247FCA890D147A5006A57DA5BC782F6AE9 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0xD8 DUP2 PUSH2 0x13B JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xF0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xFE DUP5 DUP3 DUP6 ADD PUSH2 0xC9 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x110 DUP2 PUSH2 0x131 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x12B PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x107 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x144 DUP2 PUSH2 0x131 JUMP JUMPDEST DUP2 EQ PUSH2 0x14F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 AND 0x23 0x2A 0x4F PUSH15 0xA73657ADFEBD142C8D15F5593E419F PUSH1 0xC 0xB1 SWAP9 GASPRICE 0xBA DIFFICULTY 0xD 0xEF 0xD2 PUSH27 0x5064736F6C63430008040033000000000000000000000000000000 ","sourceMap":"2656:248:1:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:980:4","statements":[{"body":{"nodeType":"YulBlock","src":"59:87:4","statements":[{"nodeType":"YulAssignment","src":"69:29:4","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"91:6:4"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"78:12:4"},"nodeType":"YulFunctionCall","src":"78:20:4"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"69:5:4"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"134:5:4"}],"functionName":{"name":"validator_revert_t_uint256","nodeType":"YulIdentifier","src":"107:26:4"},"nodeType":"YulFunctionCall","src":"107:33:4"},"nodeType":"YulExpressionStatement","src":"107:33:4"}]},"name":"abi_decode_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"37:6:4","type":""},{"name":"end","nodeType":"YulTypedName","src":"45:3:4","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"53:5:4","type":""}],"src":"7:139:4"},{"body":{"nodeType":"YulBlock","src":"218:196:4","statements":[{"body":{"nodeType":"YulBlock","src":"264:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"273:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"276:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"266:6:4"},"nodeType":"YulFunctionCall","src":"266:12:4"},"nodeType":"YulExpressionStatement","src":"266:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"239:7:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"248:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"235:3:4"},"nodeType":"YulFunctionCall","src":"235:23:4"},{"kind":"number","nodeType":"YulLiteral","src":"260:2:4","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"231:3:4"},"nodeType":"YulFunctionCall","src":"231:32:4"},"nodeType":"YulIf","src":"228:2:4"},{"nodeType":"YulBlock","src":"290:117:4","statements":[{"nodeType":"YulVariableDeclaration","src":"305:15:4","value":{"kind":"number","nodeType":"YulLiteral","src":"319:1:4","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"309:6:4","type":""}]},{"nodeType":"YulAssignment","src":"334:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"369:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"380:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"365:3:4"},"nodeType":"YulFunctionCall","src":"365:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"389:7:4"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"344:20:4"},"nodeType":"YulFunctionCall","src":"344:53:4"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"334:6:4"}]}]}]},"name":"abi_decode_tuple_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"188:9:4","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"199:7:4","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"211:6:4","type":""}],"src":"152:262:4"},{"body":{"nodeType":"YulBlock","src":"485:53:4","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"502:3:4"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"525:5:4"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"507:17:4"},"nodeType":"YulFunctionCall","src":"507:24:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"495:6:4"},"nodeType":"YulFunctionCall","src":"495:37:4"},"nodeType":"YulExpressionStatement","src":"495:37:4"}]},"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"473:5:4","type":""},{"name":"pos","nodeType":"YulTypedName","src":"480:3:4","type":""}],"src":"420:118:4"},{"body":{"nodeType":"YulBlock","src":"642:124:4","statements":[{"nodeType":"YulAssignment","src":"652:26:4","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"664:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"675:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"660:3:4"},"nodeType":"YulFunctionCall","src":"660:18:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"652:4:4"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"732:6:4"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"745:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"756:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"741:3:4"},"nodeType":"YulFunctionCall","src":"741:17:4"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"688:43:4"},"nodeType":"YulFunctionCall","src":"688:71:4"},"nodeType":"YulExpressionStatement","src":"688:71:4"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"614:9:4","type":""},{"name":"value0","nodeType":"YulTypedName","src":"626:6:4","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"637:4:4","type":""}],"src":"544:222:4"},{"body":{"nodeType":"YulBlock","src":"817:32:4","statements":[{"nodeType":"YulAssignment","src":"827:16:4","value":{"name":"value","nodeType":"YulIdentifier","src":"838:5:4"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"827:7:4"}]}]},"name":"cleanup_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"799:5:4","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"809:7:4","type":""}],"src":"772:77:4"},{"body":{"nodeType":"YulBlock","src":"898:79:4","statements":[{"body":{"nodeType":"YulBlock","src":"955:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"964:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"967:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"957:6:4"},"nodeType":"YulFunctionCall","src":"957:12:4"},"nodeType":"YulExpressionStatement","src":"957:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"921:5:4"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"946:5:4"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"928:17:4"},"nodeType":"YulFunctionCall","src":"928:24:4"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"918:2:4"},"nodeType":"YulFunctionCall","src":"918:35:4"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"911:6:4"},"nodeType":"YulFunctionCall","src":"911:43:4"},"nodeType":"YulIf","src":"908:2:4"}]},"name":"validator_revert_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"891:5:4","type":""}],"src":"855:122:4"}]},"contents":"{\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_uint256(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_uint256(add(headStart, offset), dataEnd)\n }\n\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_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 cleanup_t_uint256(value) -> cleaned {\n cleaned := value\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":4,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100365760003560e01c80632ce136d91461003b5780638e1c72bb14610057575b600080fd5b610055600480360381019061005091906100de565b610061565b005b61005f61009b565b005b7fb2dc4835200bc382210c109031e47d05b37c9244807898f5910a43f961e6719a816040516100909190610116565b60405180910390a150565b7f8922a6ca0f59f137d8e739a3dca968247fca890d147a5006a57da5bc782f6ae960405160405180910390a1565b6000813590506100d88161013b565b92915050565b6000602082840312156100f057600080fd5b60006100fe848285016100c9565b91505092915050565b61011081610131565b82525050565b600060208201905061012b6000830184610107565b92915050565b6000819050919050565b61014481610131565b811461014f57600080fd5b5056fea264697066735822122016232a4f6ea73657adfebd142c8d15f5593e419f600cb1983aba440defd27a5064736f6c63430008040033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x36 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x2CE136D9 EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0x8E1C72BB EQ PUSH2 0x57 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x55 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x50 SWAP2 SWAP1 PUSH2 0xDE JUMP JUMPDEST PUSH2 0x61 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x5F PUSH2 0x9B JUMP JUMPDEST STOP JUMPDEST PUSH32 0xB2DC4835200BC382210C109031E47D05B37C9244807898F5910A43F961E6719A DUP2 PUSH1 0x40 MLOAD PUSH2 0x90 SWAP2 SWAP1 PUSH2 0x116 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH32 0x8922A6CA0F59F137D8E739A3DCA968247FCA890D147A5006A57DA5BC782F6AE9 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0xD8 DUP2 PUSH2 0x13B JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xF0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xFE DUP5 DUP3 DUP6 ADD PUSH2 0xC9 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x110 DUP2 PUSH2 0x131 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x12B PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x107 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x144 DUP2 PUSH2 0x131 JUMP JUMPDEST DUP2 EQ PUSH2 0x14F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 AND 0x23 0x2A 0x4F PUSH15 0xA73657ADFEBD142C8D15F5593E419F PUSH1 0xC 0xB1 SWAP9 GASPRICE 0xBA DIFFICULTY 0xD 0xEF 0xD2 PUSH27 0x5064736F6C63430008040033000000000000000000000000000000 ","sourceMap":"2656:248:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2744:81;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2829:73;;;:::i;:::-;;2744:81;2806:14;2818:1;2806:14;;;;;;:::i;:::-;;;;;;;;2744:81;:::o;2829:73::-;2884:13;;;;;;;;;;2829:73::o;7:139:4:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:262::-;211:6;260:2;248:9;239:7;235:23;231:32;228:2;;;276:1;273;266:12;228:2;319:1;344:53;389:7;380:6;369:9;365:22;344:53;:::i;:::-;334:63;;290:117;218:196;;;;:::o;420:118::-;507:24;525:5;507:24;:::i;:::-;502:3;495:37;485:53;;:::o;544:222::-;637:4;675:2;664:9;660:18;652:26;;688:71;756:1;745:9;741:17;732:6;688:71;:::i;:::-;642:124;;;;:::o;772:77::-;809:7;838:5;827:16;;817:32;;;:::o;855:122::-;928:24;946:5;928:24;:::i;:::-;921:5;918:35;908:2;;967:1;964;957:12;908:2;898:79;:::o"},"methodIdentifiers":{"emitSimpleEventWithUintArg(uint256)":"2ce136d9","emitSimpleEventWithoutArg()":"8e1c72bb"}},"metadata":"{\"compiler\":{\"version\":\"0.8.4+commit.c7e474f2\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"u\",\"type\":\"uint256\"}],\"name\":\"simpleEvent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"simpleEvent\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"u\",\"type\":\"uint256\"}],\"name\":\"emitSimpleEventWithUintArg\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"emitSimpleEventWithoutArg\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/Events.sol\":\"OverrideEventContract\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/Events.sol\":{\"keccak256\":\"0x1f12bbd1b991a4eb017f864e7ca09d99cee0730630313442e99fc32a29b28b91\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c8ba3dbc99ecfbb05a95a9a89e8ea74e86f7cbd5441a53fca9f3de94651313d5\",\"dweb:/ipfs/QmYr9HUxkuQxuEwxtLn3f9gB7i2epM95Znt6fRj9xL9T6Y\"]}},\"version\":1}"}},"contracts/Matchers.sol":{"AnotherMatchersContract":{"abi":[{"inputs":[],"name":"YetAnotherCustomError","type":"error"},{"inputs":[],"name":"revertWithYetAnotherCustomError","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revertWithYetAnotherCustomErrorView","outputs":[],"stateMutability":"pure","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"608060405234801561001057600080fd5b50610182806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c806340d83b241461003b5780634b2bd7e914610045575b600080fd5b61004361004f565b005b61004d610081565b005b6040517fff05e87500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080815480929190610093906100d4565b91905055506040517fff05e87500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000819050919050565b60006100df826100ca565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156101125761011161011d565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea2646970667358221220188b4117d3c1f35f2fcbff7fbf51ee28f08c8abd18e3796ccd1d2fbc8c862e3f64736f6c63430008040033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x182 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x36 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x40D83B24 EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0x4B2BD7E9 EQ PUSH2 0x45 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x43 PUSH2 0x4F JUMP JUMPDEST STOP JUMPDEST PUSH2 0x4D PUSH2 0x81 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xFF05E87500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP2 SLOAD DUP1 SWAP3 SWAP2 SWAP1 PUSH2 0x93 SWAP1 PUSH2 0xD4 JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE POP PUSH1 0x40 MLOAD PUSH32 0xFF05E87500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xDF DUP3 PUSH2 0xCA JUMP JUMPDEST SWAP2 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 EQ ISZERO PUSH2 0x112 JUMPI PUSH2 0x111 PUSH2 0x11D JUMP JUMPDEST JUMPDEST PUSH1 0x1 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 XOR DUP12 COINBASE OR 0xD3 0xC1 RETURN 0x5F 0x2F 0xCB SELFDESTRUCT PUSH32 0xBF51EE28F08C8ABD18E3796CCD1D2FBC8C862E3F64736F6C6343000804003300 ","sourceMap":"2776:288:2:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:512:4","statements":[{"body":{"nodeType":"YulBlock","src":"52:32:4","statements":[{"nodeType":"YulAssignment","src":"62:16:4","value":{"name":"value","nodeType":"YulIdentifier","src":"73:5:4"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"62:7:4"}]}]},"name":"cleanup_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"34:5:4","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"44:7:4","type":""}],"src":"7:77:4"},{"body":{"nodeType":"YulBlock","src":"133:190:4","statements":[{"nodeType":"YulAssignment","src":"143:33:4","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"170:5:4"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"152:17:4"},"nodeType":"YulFunctionCall","src":"152:24:4"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"143:5:4"}]},{"body":{"nodeType":"YulBlock","src":"266:22:4","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"268:16:4"},"nodeType":"YulFunctionCall","src":"268:18:4"},"nodeType":"YulExpressionStatement","src":"268:18:4"}]},"condition":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"191:5:4"},{"kind":"number","nodeType":"YulLiteral","src":"198:66:4","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"188:2:4"},"nodeType":"YulFunctionCall","src":"188:77:4"},"nodeType":"YulIf","src":"185:2:4"},{"nodeType":"YulAssignment","src":"297:20:4","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"308:5:4"},{"kind":"number","nodeType":"YulLiteral","src":"315:1:4","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"304:3:4"},"nodeType":"YulFunctionCall","src":"304:13:4"},"variableNames":[{"name":"ret","nodeType":"YulIdentifier","src":"297:3:4"}]}]},"name":"increment_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"119:5:4","type":""}],"returnVariables":[{"name":"ret","nodeType":"YulTypedName","src":"129:3:4","type":""}],"src":"90:233:4"},{"body":{"nodeType":"YulBlock","src":"357:152:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"374:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"377:77:4","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"367:6:4"},"nodeType":"YulFunctionCall","src":"367:88:4"},"nodeType":"YulExpressionStatement","src":"367:88:4"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"471:1:4","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"474:4:4","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"464:6:4"},"nodeType":"YulFunctionCall","src":"464:15:4"},"nodeType":"YulExpressionStatement","src":"464:15:4"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"495:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"498:4:4","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"488:6:4"},"nodeType":"YulFunctionCall","src":"488:15:4"},"nodeType":"YulExpressionStatement","src":"488:15:4"}]},"name":"panic_error_0x11","nodeType":"YulFunctionDefinition","src":"329:180:4"}]},"contents":"{\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function increment_t_uint256(value) -> ret {\n value := cleanup_t_uint256(value)\n if eq(value, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) { panic_error_0x11() }\n ret := add(value, 1)\n }\n\n function panic_error_0x11() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n\n}\n","id":4,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100365760003560e01c806340d83b241461003b5780634b2bd7e914610045575b600080fd5b61004361004f565b005b61004d610081565b005b6040517fff05e87500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080815480929190610093906100d4565b91905055506040517fff05e87500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000819050919050565b60006100df826100ca565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156101125761011161011d565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea2646970667358221220188b4117d3c1f35f2fcbff7fbf51ee28f08c8abd18e3796ccd1d2fbc8c862e3f64736f6c63430008040033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x36 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x40D83B24 EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0x4B2BD7E9 EQ PUSH2 0x45 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x43 PUSH2 0x4F JUMP JUMPDEST STOP JUMPDEST PUSH2 0x4D PUSH2 0x81 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xFF05E87500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP2 SLOAD DUP1 SWAP3 SWAP2 SWAP1 PUSH2 0x93 SWAP1 PUSH2 0xD4 JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE POP PUSH1 0x40 MLOAD PUSH32 0xFF05E87500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xDF DUP3 PUSH2 0xCA JUMP JUMPDEST SWAP2 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 EQ ISZERO PUSH2 0x112 JUMPI PUSH2 0x111 PUSH2 0x11D JUMP JUMPDEST JUMPDEST PUSH1 0x1 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 XOR DUP12 COINBASE OR 0xD3 0xC1 RETURN 0x5F 0x2F 0xCB SELFDESTRUCT PUSH32 0xBF51EE28F08C8ABD18E3796CCD1D2FBC8C862E3F64736F6C6343000804003300 ","sourceMap":"2776:288:2:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2962:100;;;:::i;:::-;;2858;;;:::i;:::-;;2962;3034:23;;;;;;;;;;;;;;2858:100;2914:1;;:3;;;;;;;;;:::i;:::-;;;;;;2930:23;;;;;;;;;;;;;;7:77:4;44:7;73:5;62:16;;52:32;;;:::o;90:233::-;129:3;152:24;170:5;152:24;:::i;:::-;143:33;;198:66;191:5;188:77;185:2;;;268:18;;:::i;:::-;185:2;315:1;308:5;304:13;297:20;;133:190;;;:::o;329:180::-;377:77;374:1;367:88;474:4;471:1;464:15;498:4;495:1;488:15"},"methodIdentifiers":{"revertWithYetAnotherCustomError()":"4b2bd7e9","revertWithYetAnotherCustomErrorView()":"40d83b24"}},"metadata":"{\"compiler\":{\"version\":\"0.8.4+commit.c7e474f2\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"YetAnotherCustomError\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"revertWithYetAnotherCustomError\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"revertWithYetAnotherCustomErrorView\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/Matchers.sol\":\"AnotherMatchersContract\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/Matchers.sol\":{\"keccak256\":\"0x5a69001d60d8f2498c88a26a86619900f4a7d1e7443adcb5f6bf73b112e659df\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://ca96217e25bd9b0beccc5038bcde4bb32fc71f7828c01e2254f7c6eb06b2ec1c\",\"dweb:/ipfs/QmaHs3KgdszUPBCWbYsxriReGFePSG1AE23BxSCa98cnT9\"]}},\"version\":1}"},"Matchers":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"AnotherCustomError","type":"error"},{"inputs":[{"internalType":"int256","name":"","type":"int256"}],"name":"CustomErrorWithInt","type":"error"},{"inputs":[{"components":[{"internalType":"uint256","name":"a","type":"uint256"},{"internalType":"uint256","name":"b","type":"uint256"}],"internalType":"struct Matchers.Pair","name":"","type":"tuple"}],"name":"CustomErrorWithPair","type":"error"},{"inputs":[{"internalType":"uint256","name":"nameToForceEthersToUseAnArrayLikeWithNamedProperties","type":"uint256"}],"name":"CustomErrorWithUint","type":"error"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"string","name":"","type":"string"}],"name":"CustomErrorWithUintAndString","type":"error"},{"inputs":[],"name":"SomeCustomError","type":"error"},{"anonymous":false,"inputs":[],"name":"SomeEvent","type":"event"},{"inputs":[],"name":"panicAssert","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"panicAssertView","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"revertWithAnotherContractCustomError","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revertWithAnotherContractCustomErrorView","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[],"name":"revertWithAnotherCustomError","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revertWithAnotherCustomErrorView","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"int256","name":"i","type":"int256"}],"name":"revertWithCustomErrorWithInt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"int256","name":"i","type":"int256"}],"name":"revertWithCustomErrorWithIntView","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"a","type":"uint256"},{"internalType":"uint256","name":"b","type":"uint256"}],"name":"revertWithCustomErrorWithPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"a","type":"uint256"},{"internalType":"uint256","name":"b","type":"uint256"}],"name":"revertWithCustomErrorWithPairView","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"n","type":"uint256"}],"name":"revertWithCustomErrorWithUint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"n","type":"uint256"},{"internalType":"string","name":"s","type":"string"}],"name":"revertWithCustomErrorWithUintAndString","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"n","type":"uint256"},{"internalType":"string","name":"s","type":"string"}],"name":"revertWithCustomErrorWithUintAndStringView","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"n","type":"uint256"}],"name":"revertWithCustomErrorWithUintView","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"revertWithSomeCustomError","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revertWithSomeCustomErrorView","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"reason","type":"string"}],"name":"revertsWith","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"reason","type":"string"}],"name":"revertsWithView","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"revertsWithoutReason","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revertsWithoutReasonView","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"succeeds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"succeedsView","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"608060405234801561001057600080fd5b5060405161001d9061007f565b604051809103906000f080158015610039573d6000803e3d6000fd5b50600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061008c565b6101a280610e8a83390190565b610def8061009b6000396000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c806373d2ea85116100b8578063aac014e01161007c578063aac014e01461028b578063b6bbe06114610295578063bad92aa91461029f578063e0a03812146102a9578063fe276a34146102c5578063ffb4746b146102e157610142565b806373d2ea851461022357806374afd4521461023f578063772f243a146102495780637c3cb0af146102535780638f9330301461026f57610142565b80634b5bbf6a1161010a5780634b5bbf6a146101c157806358a1d1ed146101cb5780635b94e31e146101d5578063622051f1146101df5780636f1fdc31146101e95780636fc588d21461020557610142565b80631b4f3f3d146101475780631f542cf3146101515780633ba4178b1461016d578063467e3d371461018957806347c56769146101a5575b600080fd5b61014f6102eb565b005b61016b60048036038101906101669190610a66565b61030f565b005b61018760048036038101906101829190610a12565b610360565b005b6101a3600480360381019061019e91906109a8565b61039f565b005b6101bf60048036038101906101ba919061097f565b6103e7565b005b6101c9610424565b005b6101d361046d565b005b6101dd61047a565b005b6101e76104b1565b005b61020360048036038101906101fe91906109a8565b610533565b005b61020d610592565b60405161021a9190610b8f565b60405180910390f35b61023d600480360381019061023891906109e9565b61059b565b005b6102476105ef565b005b610251610608565b005b61026d600480360381019061026891906109e9565b6106a3565b005b6102896004803603810190610284919061097f565b6106e0565b005b610293610734565b005b61029d610766565b005b6102a76107b4565b005b6102c360048036038101906102be9190610a66565b6107fd565b005b6102df60048036038101906102da9190610a12565b610865565b005b6102e96108bb565b005b6000808154809291906102fd90610cd3565b9190505550600061030d57600080fd5b565b6040518060400160405280838152602001828152506040517fdecab0e70000000000000000000000000000000000000000000000000000000081526004016103579190610b74565b60405180910390fd5b81816040517fa92ee8e3000000000000000000000000000000000000000000000000000000008152600401610396929190610baa565b60405180910390fd5b600081906103e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103da9190610b52565b60405180910390fd5b5050565b806040517fcdd7a0cc00000000000000000000000000000000000000000000000000000000815260040161041b9190610b37565b60405180910390fd5b60008081548092919061043690610cd3565b91905055506040517fd2c097a600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061047857600080fd5b565b60006104af577f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340d83b246040518163ffffffff1660e01b815260040160006040518083038186803b15801561051957600080fd5b505afa15801561052d573d6000803e3d6000fd5b50505050565b60008081548092919061054590610cd3565b91905055506000819061058e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105859190610b52565b60405180910390fd5b5050565b60008054905090565b6000808154809291906105ad90610cd3565b9190505550806040517f01f4d5d20000000000000000000000000000000000000000000000000000000081526004016105e69190610b8f565b60405180910390fd5b60008081548092919061060190610cd3565b9190505550565b60008081548092919061061a90610cd3565b9190505550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634b2bd7e96040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561068957600080fd5b505af115801561069d573d6000803e3d6000fd5b50505050565b806040517f01f4d5d20000000000000000000000000000000000000000000000000000000081526004016106d79190610b8f565b60405180910390fd5b6000808154809291906106f290610cd3565b9190505550806040517fcdd7a0cc00000000000000000000000000000000000000000000000000000000815260040161072b9190610b37565b60405180910390fd5b6040517fd2c097a600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008081548092919061077890610cd3565b919050555060006107b2577f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b565b6000808154809291906107c690610cd3565b91905055506040517f0bd3d39c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008081548092919061080f90610cd3565b91905055506040518060400160405280838152602001828152506040517fdecab0e700000000000000000000000000000000000000000000000000000000815260040161085c9190610b74565b60405180910390fd5b60008081548092919061087790610cd3565b919050555081816040517fa92ee8e30000000000000000000000000000000000000000000000000000000081526004016108b2929190610baa565b60405180910390fd5b6040517f0bd3d39c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006109006108fb84610bff565b610bda565b90508281526020810184848401111561091857600080fd5b610923848285610c60565b509392505050565b60008135905061093a81610d8b565b92915050565b600082601f83011261095157600080fd5b81356109618482602086016108ed565b91505092915050565b60008135905061097981610da2565b92915050565b60006020828403121561099157600080fd5b600061099f8482850161092b565b91505092915050565b6000602082840312156109ba57600080fd5b600082013567ffffffffffffffff8111156109d457600080fd5b6109e084828501610940565b91505092915050565b6000602082840312156109fb57600080fd5b6000610a098482850161096a565b91505092915050565b60008060408385031215610a2557600080fd5b6000610a338582860161096a565b925050602083013567ffffffffffffffff811115610a5057600080fd5b610a5c85828601610940565b9150509250929050565b60008060408385031215610a7957600080fd5b6000610a878582860161096a565b9250506020610a988582860161096a565b9150509250929050565b610aab81610c4c565b82525050565b6000610abc82610c30565b610ac68185610c3b565b9350610ad6818560208601610c6f565b610adf81610d7a565b840191505092915050565b604082016000820151610b006000850182610b19565b506020820151610b136020850182610b19565b50505050565b610b2281610c56565b82525050565b610b3181610c56565b82525050565b6000602082019050610b4c6000830184610aa2565b92915050565b60006020820190508181036000830152610b6c8184610ab1565b905092915050565b6000604082019050610b896000830184610aea565b92915050565b6000602082019050610ba46000830184610b28565b92915050565b6000604082019050610bbf6000830185610b28565b8181036020830152610bd18184610ab1565b90509392505050565b6000610be4610bf5565b9050610bf08282610ca2565b919050565b6000604051905090565b600067ffffffffffffffff821115610c1a57610c19610d4b565b5b610c2382610d7a565b9050602081019050919050565b600081519050919050565b600082825260208201905092915050565b6000819050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015610c8d578082015181840152602081019050610c72565b83811115610c9c576000848401525b50505050565b610cab82610d7a565b810181811067ffffffffffffffff82111715610cca57610cc9610d4b565b5b80604052505050565b6000610cde82610c56565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415610d1157610d10610d1c565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b610d9481610c4c565b8114610d9f57600080fd5b50565b610dab81610c56565b8114610db657600080fd5b5056fea264697066735822122025e4c9eca28af81eeb16cfbb3832355e24c64c7eae221a5034159a671d61281464736f6c63430008040033608060405234801561001057600080fd5b50610182806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c806340d83b241461003b5780634b2bd7e914610045575b600080fd5b61004361004f565b005b61004d610081565b005b6040517fff05e87500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080815480929190610093906100d4565b91905055506040517fff05e87500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000819050919050565b60006100df826100ca565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156101125761011161011d565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea2646970667358221220188b4117d3c1f35f2fcbff7fbf51ee28f08c8abd18e3796ccd1d2fbc8c862e3f64736f6c63430008040033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x1D SWAP1 PUSH2 0x7F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH2 0x39 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH2 0x8C JUMP JUMPDEST PUSH2 0x1A2 DUP1 PUSH2 0xE8A DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH2 0xDEF DUP1 PUSH2 0x9B PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x142 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x73D2EA85 GT PUSH2 0xB8 JUMPI DUP1 PUSH4 0xAAC014E0 GT PUSH2 0x7C JUMPI DUP1 PUSH4 0xAAC014E0 EQ PUSH2 0x28B JUMPI DUP1 PUSH4 0xB6BBE061 EQ PUSH2 0x295 JUMPI DUP1 PUSH4 0xBAD92AA9 EQ PUSH2 0x29F JUMPI DUP1 PUSH4 0xE0A03812 EQ PUSH2 0x2A9 JUMPI DUP1 PUSH4 0xFE276A34 EQ PUSH2 0x2C5 JUMPI DUP1 PUSH4 0xFFB4746B EQ PUSH2 0x2E1 JUMPI PUSH2 0x142 JUMP JUMPDEST DUP1 PUSH4 0x73D2EA85 EQ PUSH2 0x223 JUMPI DUP1 PUSH4 0x74AFD452 EQ PUSH2 0x23F JUMPI DUP1 PUSH4 0x772F243A EQ PUSH2 0x249 JUMPI DUP1 PUSH4 0x7C3CB0AF EQ PUSH2 0x253 JUMPI DUP1 PUSH4 0x8F933030 EQ PUSH2 0x26F JUMPI PUSH2 0x142 JUMP JUMPDEST DUP1 PUSH4 0x4B5BBF6A GT PUSH2 0x10A JUMPI DUP1 PUSH4 0x4B5BBF6A EQ PUSH2 0x1C1 JUMPI DUP1 PUSH4 0x58A1D1ED EQ PUSH2 0x1CB JUMPI DUP1 PUSH4 0x5B94E31E EQ PUSH2 0x1D5 JUMPI DUP1 PUSH4 0x622051F1 EQ PUSH2 0x1DF JUMPI DUP1 PUSH4 0x6F1FDC31 EQ PUSH2 0x1E9 JUMPI DUP1 PUSH4 0x6FC588D2 EQ PUSH2 0x205 JUMPI PUSH2 0x142 JUMP JUMPDEST DUP1 PUSH4 0x1B4F3F3D EQ PUSH2 0x147 JUMPI DUP1 PUSH4 0x1F542CF3 EQ PUSH2 0x151 JUMPI DUP1 PUSH4 0x3BA4178B EQ PUSH2 0x16D JUMPI DUP1 PUSH4 0x467E3D37 EQ PUSH2 0x189 JUMPI DUP1 PUSH4 0x47C56769 EQ PUSH2 0x1A5 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x14F PUSH2 0x2EB JUMP JUMPDEST STOP JUMPDEST PUSH2 0x16B PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x166 SWAP2 SWAP1 PUSH2 0xA66 JUMP JUMPDEST PUSH2 0x30F JUMP JUMPDEST STOP JUMPDEST PUSH2 0x187 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x182 SWAP2 SWAP1 PUSH2 0xA12 JUMP JUMPDEST PUSH2 0x360 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1A3 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x19E SWAP2 SWAP1 PUSH2 0x9A8 JUMP JUMPDEST PUSH2 0x39F JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1BF PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1BA SWAP2 SWAP1 PUSH2 0x97F JUMP JUMPDEST PUSH2 0x3E7 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1C9 PUSH2 0x424 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1D3 PUSH2 0x46D JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1DD PUSH2 0x47A JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1E7 PUSH2 0x4B1 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x203 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1FE SWAP2 SWAP1 PUSH2 0x9A8 JUMP JUMPDEST PUSH2 0x533 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x20D PUSH2 0x592 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x21A SWAP2 SWAP1 PUSH2 0xB8F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x23D PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x238 SWAP2 SWAP1 PUSH2 0x9E9 JUMP JUMPDEST PUSH2 0x59B JUMP JUMPDEST STOP JUMPDEST PUSH2 0x247 PUSH2 0x5EF JUMP JUMPDEST STOP JUMPDEST PUSH2 0x251 PUSH2 0x608 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x26D PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x268 SWAP2 SWAP1 PUSH2 0x9E9 JUMP JUMPDEST PUSH2 0x6A3 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x289 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x284 SWAP2 SWAP1 PUSH2 0x97F JUMP JUMPDEST PUSH2 0x6E0 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x293 PUSH2 0x734 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x29D PUSH2 0x766 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2A7 PUSH2 0x7B4 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2C3 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2BE SWAP2 SWAP1 PUSH2 0xA66 JUMP JUMPDEST PUSH2 0x7FD JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2DF PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2DA SWAP2 SWAP1 PUSH2 0xA12 JUMP JUMPDEST PUSH2 0x865 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2E9 PUSH2 0x8BB JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 DUP2 SLOAD DUP1 SWAP3 SWAP2 SWAP1 PUSH2 0x2FD SWAP1 PUSH2 0xCD3 JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE POP PUSH1 0x0 PUSH2 0x30D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE POP PUSH1 0x40 MLOAD PUSH32 0xDECAB0E700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x357 SWAP2 SWAP1 PUSH2 0xB74 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 DUP2 PUSH1 0x40 MLOAD PUSH32 0xA92EE8E300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x396 SWAP3 SWAP2 SWAP1 PUSH2 0xBAA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 SWAP1 PUSH2 0x3E3 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DA SWAP2 SWAP1 PUSH2 0xB52 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP JUMP JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH32 0xCDD7A0CC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x41B SWAP2 SWAP1 PUSH2 0xB37 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP2 SLOAD DUP1 SWAP3 SWAP2 SWAP1 PUSH2 0x436 SWAP1 PUSH2 0xCD3 JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE POP PUSH1 0x40 MLOAD PUSH32 0xD2C097A600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x478 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4AF JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x1 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x40D83B24 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x519 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x52D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP2 SLOAD DUP1 SWAP3 SWAP2 SWAP1 PUSH2 0x545 SWAP1 PUSH2 0xCD3 JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE POP PUSH1 0x0 DUP2 SWAP1 PUSH2 0x58E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x585 SWAP2 SWAP1 PUSH2 0xB52 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP2 SLOAD DUP1 SWAP3 SWAP2 SWAP1 PUSH2 0x5AD SWAP1 PUSH2 0xCD3 JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE POP DUP1 PUSH1 0x40 MLOAD PUSH32 0x1F4D5D200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5E6 SWAP2 SWAP1 PUSH2 0xB8F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP2 SLOAD DUP1 SWAP3 SWAP2 SWAP1 PUSH2 0x601 SWAP1 PUSH2 0xCD3 JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP2 SLOAD DUP1 SWAP3 SWAP2 SWAP1 PUSH2 0x61A SWAP1 PUSH2 0xCD3 JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE POP PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x4B2BD7E9 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x689 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x69D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMP JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH32 0x1F4D5D200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x6D7 SWAP2 SWAP1 PUSH2 0xB8F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP2 SLOAD DUP1 SWAP3 SWAP2 SWAP1 PUSH2 0x6F2 SWAP1 PUSH2 0xCD3 JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE POP DUP1 PUSH1 0x40 MLOAD PUSH32 0xCDD7A0CC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x72B SWAP2 SWAP1 PUSH2 0xB37 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xD2C097A600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP2 SLOAD DUP1 SWAP3 SWAP2 SWAP1 PUSH2 0x778 SWAP1 PUSH2 0xCD3 JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE POP PUSH1 0x0 PUSH2 0x7B2 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x1 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST JUMP JUMPDEST PUSH1 0x0 DUP1 DUP2 SLOAD DUP1 SWAP3 SWAP2 SWAP1 PUSH2 0x7C6 SWAP1 PUSH2 0xCD3 JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE POP PUSH1 0x40 MLOAD PUSH32 0xBD3D39C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP2 SLOAD DUP1 SWAP3 SWAP2 SWAP1 PUSH2 0x80F SWAP1 PUSH2 0xCD3 JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE POP PUSH1 0x40 MLOAD PUSH32 0xDECAB0E700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x85C SWAP2 SWAP1 PUSH2 0xB74 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP2 SLOAD DUP1 SWAP3 SWAP2 SWAP1 PUSH2 0x877 SWAP1 PUSH2 0xCD3 JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE POP DUP2 DUP2 PUSH1 0x40 MLOAD PUSH32 0xA92EE8E300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x8B2 SWAP3 SWAP2 SWAP1 PUSH2 0xBAA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xBD3D39C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x900 PUSH2 0x8FB DUP5 PUSH2 0xBFF JUMP JUMPDEST PUSH2 0xBDA JUMP JUMPDEST SWAP1 POP DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 DUP5 DUP5 ADD GT ISZERO PUSH2 0x918 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x923 DUP5 DUP3 DUP6 PUSH2 0xC60 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x93A DUP2 PUSH2 0xD8B JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x951 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x961 DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x8ED JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x979 DUP2 PUSH2 0xDA2 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x991 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x99F DUP5 DUP3 DUP6 ADD PUSH2 0x92B JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x9BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x9D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9E0 DUP5 DUP3 DUP6 ADD PUSH2 0x940 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x9FB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xA09 DUP5 DUP3 DUP6 ADD PUSH2 0x96A JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xA25 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xA33 DUP6 DUP3 DUP7 ADD PUSH2 0x96A JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xA50 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA5C DUP6 DUP3 DUP7 ADD PUSH2 0x940 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xA79 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xA87 DUP6 DUP3 DUP7 ADD PUSH2 0x96A JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0xA98 DUP6 DUP3 DUP7 ADD PUSH2 0x96A JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH2 0xAAB DUP2 PUSH2 0xC4C JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xABC DUP3 PUSH2 0xC30 JUMP JUMPDEST PUSH2 0xAC6 DUP2 DUP6 PUSH2 0xC3B JUMP JUMPDEST SWAP4 POP PUSH2 0xAD6 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0xC6F JUMP JUMPDEST PUSH2 0xADF DUP2 PUSH2 0xD7A JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP3 ADD PUSH1 0x0 DUP3 ADD MLOAD PUSH2 0xB00 PUSH1 0x0 DUP6 ADD DUP3 PUSH2 0xB19 JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0xB13 PUSH1 0x20 DUP6 ADD DUP3 PUSH2 0xB19 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0xB22 DUP2 PUSH2 0xC56 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0xB31 DUP2 PUSH2 0xC56 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xB4C PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xAA2 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 0xB6C DUP2 DUP5 PUSH2 0xAB1 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0xB89 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xAEA JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xBA4 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xB28 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0xBBF PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0xB28 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0xBD1 DUP2 DUP5 PUSH2 0xAB1 JUMP JUMPDEST SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xBE4 PUSH2 0xBF5 JUMP JUMPDEST SWAP1 POP PUSH2 0xBF0 DUP3 DUP3 PUSH2 0xCA2 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 0xC1A JUMPI PUSH2 0xC19 PUSH2 0xD4B JUMP JUMPDEST JUMPDEST PUSH2 0xC23 DUP3 PUSH2 0xD7A 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 DUP2 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 0xC8D JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0xC72 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0xC9C JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0xCAB DUP3 PUSH2 0xD7A JUMP JUMPDEST DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0xCCA JUMPI PUSH2 0xCC9 PUSH2 0xD4B JUMP JUMPDEST JUMPDEST DUP1 PUSH1 0x40 MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCDE DUP3 PUSH2 0xC56 JUMP JUMPDEST SWAP2 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 EQ ISZERO PUSH2 0xD11 JUMPI PUSH2 0xD10 PUSH2 0xD1C JUMP JUMPDEST JUMPDEST PUSH1 0x1 DUP3 ADD SWAP1 POP SWAP2 SWAP1 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 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 PUSH2 0xD94 DUP2 PUSH2 0xC4C JUMP JUMPDEST DUP2 EQ PUSH2 0xD9F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0xDAB DUP2 PUSH2 0xC56 JUMP JUMPDEST DUP2 EQ PUSH2 0xDB6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x25 0xE4 0xC9 0xEC LOG2 DUP11 0xF8 0x1E 0xEB AND 0xCF 0xBB CODESIZE ORIGIN CALLDATALOAD 0x5E 0x24 0xC6 0x4C PUSH31 0xAE221A5034159A671D61281464736F6C634300080400336080604052348015 PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x182 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x36 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x40D83B24 EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0x4B2BD7E9 EQ PUSH2 0x45 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x43 PUSH2 0x4F JUMP JUMPDEST STOP JUMPDEST PUSH2 0x4D PUSH2 0x81 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xFF05E87500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP2 SLOAD DUP1 SWAP3 SWAP2 SWAP1 PUSH2 0x93 SWAP1 PUSH2 0xD4 JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE POP PUSH1 0x40 MLOAD PUSH32 0xFF05E87500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xDF DUP3 PUSH2 0xCA JUMP JUMPDEST SWAP2 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 EQ ISZERO PUSH2 0x112 JUMPI PUSH2 0x111 PUSH2 0x11D JUMP JUMPDEST JUMPDEST PUSH1 0x1 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 XOR DUP12 COINBASE OR 0xD3 0xC1 RETURN 0x5F 0x2F 0xCB SELFDESTRUCT PUSH32 0xBF51EE28F08C8ABD18E3796CCD1D2FBC8C862E3F64736F6C6343000804003300 ","sourceMap":"65:2709:2:-:0;;;465:73;;;;;;;;;;504:29;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;486:15;;:47;;;;;;;;;;;;;;;;;;65:2709;;;;;;;;;;:::o;:::-;;;;;;;"},"deployedBytecode":{"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:8290:4","statements":[{"body":{"nodeType":"YulBlock","src":"91:261:4","statements":[{"nodeType":"YulAssignment","src":"101:75:4","value":{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"168:6:4"}],"functionName":{"name":"array_allocation_size_t_string_memory_ptr","nodeType":"YulIdentifier","src":"126:41:4"},"nodeType":"YulFunctionCall","src":"126:49:4"}],"functionName":{"name":"allocate_memory","nodeType":"YulIdentifier","src":"110:15:4"},"nodeType":"YulFunctionCall","src":"110:66:4"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"101:5:4"}]},{"expression":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"192:5:4"},{"name":"length","nodeType":"YulIdentifier","src":"199:6:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"185:6:4"},"nodeType":"YulFunctionCall","src":"185:21:4"},"nodeType":"YulExpressionStatement","src":"185:21:4"},{"nodeType":"YulVariableDeclaration","src":"215:27:4","value":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"230:5:4"},{"kind":"number","nodeType":"YulLiteral","src":"237:4:4","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"226:3:4"},"nodeType":"YulFunctionCall","src":"226:16:4"},"variables":[{"name":"dst","nodeType":"YulTypedName","src":"219:3:4","type":""}]},{"body":{"nodeType":"YulBlock","src":"280:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"289:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"292:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"282:6:4"},"nodeType":"YulFunctionCall","src":"282:12:4"},"nodeType":"YulExpressionStatement","src":"282:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"261:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"266:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"257:3:4"},"nodeType":"YulFunctionCall","src":"257:16:4"},{"name":"end","nodeType":"YulIdentifier","src":"275:3:4"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"254:2:4"},"nodeType":"YulFunctionCall","src":"254:25:4"},"nodeType":"YulIf","src":"251:2:4"},{"expression":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"329:3:4"},{"name":"dst","nodeType":"YulIdentifier","src":"334:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"339:6:4"}],"functionName":{"name":"copy_calldata_to_memory","nodeType":"YulIdentifier","src":"305:23:4"},"nodeType":"YulFunctionCall","src":"305:41:4"},"nodeType":"YulExpressionStatement","src":"305:41:4"}]},"name":"abi_decode_available_length_t_string_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"64:3:4","type":""},{"name":"length","nodeType":"YulTypedName","src":"69:6:4","type":""},{"name":"end","nodeType":"YulTypedName","src":"77:3:4","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"85:5:4","type":""}],"src":"7:345:4"},{"body":{"nodeType":"YulBlock","src":"409:86:4","statements":[{"nodeType":"YulAssignment","src":"419:29:4","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"441:6:4"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"428:12:4"},"nodeType":"YulFunctionCall","src":"428:20:4"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"419:5:4"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"483:5:4"}],"functionName":{"name":"validator_revert_t_int256","nodeType":"YulIdentifier","src":"457:25:4"},"nodeType":"YulFunctionCall","src":"457:32:4"},"nodeType":"YulExpressionStatement","src":"457:32:4"}]},"name":"abi_decode_t_int256","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"387:6:4","type":""},{"name":"end","nodeType":"YulTypedName","src":"395:3:4","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"403:5:4","type":""}],"src":"358:137:4"},{"body":{"nodeType":"YulBlock","src":"577:211:4","statements":[{"body":{"nodeType":"YulBlock","src":"626:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"635:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"638:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"628:6:4"},"nodeType":"YulFunctionCall","src":"628:12:4"},"nodeType":"YulExpressionStatement","src":"628:12:4"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"605:6:4"},{"kind":"number","nodeType":"YulLiteral","src":"613:4:4","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"601:3:4"},"nodeType":"YulFunctionCall","src":"601:17:4"},{"name":"end","nodeType":"YulIdentifier","src":"620:3:4"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"597:3:4"},"nodeType":"YulFunctionCall","src":"597:27:4"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"590:6:4"},"nodeType":"YulFunctionCall","src":"590:35:4"},"nodeType":"YulIf","src":"587:2:4"},{"nodeType":"YulVariableDeclaration","src":"651:34:4","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"678:6:4"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"665:12:4"},"nodeType":"YulFunctionCall","src":"665:20:4"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"655:6:4","type":""}]},{"nodeType":"YulAssignment","src":"694:88:4","value":{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"755:6:4"},{"kind":"number","nodeType":"YulLiteral","src":"763:4:4","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"751:3:4"},"nodeType":"YulFunctionCall","src":"751:17:4"},{"name":"length","nodeType":"YulIdentifier","src":"770:6:4"},{"name":"end","nodeType":"YulIdentifier","src":"778:3:4"}],"functionName":{"name":"abi_decode_available_length_t_string_memory_ptr","nodeType":"YulIdentifier","src":"703:47:4"},"nodeType":"YulFunctionCall","src":"703:79:4"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"694:5:4"}]}]},"name":"abi_decode_t_string_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"555:6:4","type":""},{"name":"end","nodeType":"YulTypedName","src":"563:3:4","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"571:5:4","type":""}],"src":"515:273:4"},{"body":{"nodeType":"YulBlock","src":"846:87:4","statements":[{"nodeType":"YulAssignment","src":"856:29:4","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"878:6:4"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"865:12:4"},"nodeType":"YulFunctionCall","src":"865:20:4"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"856:5:4"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"921:5:4"}],"functionName":{"name":"validator_revert_t_uint256","nodeType":"YulIdentifier","src":"894:26:4"},"nodeType":"YulFunctionCall","src":"894:33:4"},"nodeType":"YulExpressionStatement","src":"894:33:4"}]},"name":"abi_decode_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"824:6:4","type":""},{"name":"end","nodeType":"YulTypedName","src":"832:3:4","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"840:5:4","type":""}],"src":"794:139:4"},{"body":{"nodeType":"YulBlock","src":"1004:195:4","statements":[{"body":{"nodeType":"YulBlock","src":"1050:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1059:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1062:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1052:6:4"},"nodeType":"YulFunctionCall","src":"1052:12:4"},"nodeType":"YulExpressionStatement","src":"1052:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1025:7:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"1034:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1021:3:4"},"nodeType":"YulFunctionCall","src":"1021:23:4"},{"kind":"number","nodeType":"YulLiteral","src":"1046:2:4","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1017:3:4"},"nodeType":"YulFunctionCall","src":"1017:32:4"},"nodeType":"YulIf","src":"1014:2:4"},{"nodeType":"YulBlock","src":"1076:116:4","statements":[{"nodeType":"YulVariableDeclaration","src":"1091:15:4","value":{"kind":"number","nodeType":"YulLiteral","src":"1105:1:4","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1095:6:4","type":""}]},{"nodeType":"YulAssignment","src":"1120:62:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1154:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"1165:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1150:3:4"},"nodeType":"YulFunctionCall","src":"1150:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1174:7:4"}],"functionName":{"name":"abi_decode_t_int256","nodeType":"YulIdentifier","src":"1130:19:4"},"nodeType":"YulFunctionCall","src":"1130:52:4"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1120:6:4"}]}]}]},"name":"abi_decode_tuple_t_int256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"974:9:4","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"985:7:4","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"997:6:4","type":""}],"src":"939:260:4"},{"body":{"nodeType":"YulBlock","src":"1281:299:4","statements":[{"body":{"nodeType":"YulBlock","src":"1327:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1336:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1339:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1329:6:4"},"nodeType":"YulFunctionCall","src":"1329:12:4"},"nodeType":"YulExpressionStatement","src":"1329:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1302:7:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"1311:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1298:3:4"},"nodeType":"YulFunctionCall","src":"1298:23:4"},{"kind":"number","nodeType":"YulLiteral","src":"1323:2:4","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1294:3:4"},"nodeType":"YulFunctionCall","src":"1294:32:4"},"nodeType":"YulIf","src":"1291:2:4"},{"nodeType":"YulBlock","src":"1353:220:4","statements":[{"nodeType":"YulVariableDeclaration","src":"1368:45:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1399:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"1410:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1395:3:4"},"nodeType":"YulFunctionCall","src":"1395:17:4"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1382:12:4"},"nodeType":"YulFunctionCall","src":"1382:31:4"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1372:6:4","type":""}]},{"body":{"nodeType":"YulBlock","src":"1460:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1469:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1472:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1462:6:4"},"nodeType":"YulFunctionCall","src":"1462:12:4"},"nodeType":"YulExpressionStatement","src":"1462:12:4"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1432:6:4"},{"kind":"number","nodeType":"YulLiteral","src":"1440:18:4","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1429:2:4"},"nodeType":"YulFunctionCall","src":"1429:30:4"},"nodeType":"YulIf","src":"1426:2:4"},{"nodeType":"YulAssignment","src":"1490:73:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1535:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"1546:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1531:3:4"},"nodeType":"YulFunctionCall","src":"1531:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1555:7:4"}],"functionName":{"name":"abi_decode_t_string_memory_ptr","nodeType":"YulIdentifier","src":"1500:30:4"},"nodeType":"YulFunctionCall","src":"1500:63:4"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1490:6:4"}]}]}]},"name":"abi_decode_tuple_t_string_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1251:9:4","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1262:7:4","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1274:6:4","type":""}],"src":"1205:375:4"},{"body":{"nodeType":"YulBlock","src":"1652:196:4","statements":[{"body":{"nodeType":"YulBlock","src":"1698:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1707:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1710:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1700:6:4"},"nodeType":"YulFunctionCall","src":"1700:12:4"},"nodeType":"YulExpressionStatement","src":"1700:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1673:7:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"1682:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1669:3:4"},"nodeType":"YulFunctionCall","src":"1669:23:4"},{"kind":"number","nodeType":"YulLiteral","src":"1694:2:4","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1665:3:4"},"nodeType":"YulFunctionCall","src":"1665:32:4"},"nodeType":"YulIf","src":"1662:2:4"},{"nodeType":"YulBlock","src":"1724:117:4","statements":[{"nodeType":"YulVariableDeclaration","src":"1739:15:4","value":{"kind":"number","nodeType":"YulLiteral","src":"1753:1:4","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1743:6:4","type":""}]},{"nodeType":"YulAssignment","src":"1768:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1803:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"1814:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1799:3:4"},"nodeType":"YulFunctionCall","src":"1799:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1823:7:4"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"1778:20:4"},"nodeType":"YulFunctionCall","src":"1778:53:4"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1768:6:4"}]}]}]},"name":"abi_decode_tuple_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1622:9:4","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1633:7:4","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1645:6:4","type":""}],"src":"1586:262:4"},{"body":{"nodeType":"YulBlock","src":"1947:427:4","statements":[{"body":{"nodeType":"YulBlock","src":"1993:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2002:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2005:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1995:6:4"},"nodeType":"YulFunctionCall","src":"1995:12:4"},"nodeType":"YulExpressionStatement","src":"1995:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1968:7:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"1977:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1964:3:4"},"nodeType":"YulFunctionCall","src":"1964:23:4"},{"kind":"number","nodeType":"YulLiteral","src":"1989:2:4","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1960:3:4"},"nodeType":"YulFunctionCall","src":"1960:32:4"},"nodeType":"YulIf","src":"1957:2:4"},{"nodeType":"YulBlock","src":"2019:117:4","statements":[{"nodeType":"YulVariableDeclaration","src":"2034:15:4","value":{"kind":"number","nodeType":"YulLiteral","src":"2048:1:4","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"2038:6:4","type":""}]},{"nodeType":"YulAssignment","src":"2063:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2098:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"2109:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2094:3:4"},"nodeType":"YulFunctionCall","src":"2094:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2118:7:4"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"2073:20:4"},"nodeType":"YulFunctionCall","src":"2073:53:4"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2063:6:4"}]}]},{"nodeType":"YulBlock","src":"2146:221:4","statements":[{"nodeType":"YulVariableDeclaration","src":"2161:46:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2192:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"2203:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2188:3:4"},"nodeType":"YulFunctionCall","src":"2188:18:4"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2175:12:4"},"nodeType":"YulFunctionCall","src":"2175:32:4"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"2165:6:4","type":""}]},{"body":{"nodeType":"YulBlock","src":"2254:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2263:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2266:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2256:6:4"},"nodeType":"YulFunctionCall","src":"2256:12:4"},"nodeType":"YulExpressionStatement","src":"2256:12:4"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"2226:6:4"},{"kind":"number","nodeType":"YulLiteral","src":"2234:18:4","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2223:2:4"},"nodeType":"YulFunctionCall","src":"2223:30:4"},"nodeType":"YulIf","src":"2220:2:4"},{"nodeType":"YulAssignment","src":"2284:73:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2329:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"2340:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2325:3:4"},"nodeType":"YulFunctionCall","src":"2325:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2349:7:4"}],"functionName":{"name":"abi_decode_t_string_memory_ptr","nodeType":"YulIdentifier","src":"2294:30:4"},"nodeType":"YulFunctionCall","src":"2294:63:4"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"2284:6:4"}]}]}]},"name":"abi_decode_tuple_t_uint256t_string_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1909:9:4","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1920:7:4","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1932:6:4","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1940:6:4","type":""}],"src":"1854:520:4"},{"body":{"nodeType":"YulBlock","src":"2463:324:4","statements":[{"body":{"nodeType":"YulBlock","src":"2509:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2518:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2521:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2511:6:4"},"nodeType":"YulFunctionCall","src":"2511:12:4"},"nodeType":"YulExpressionStatement","src":"2511:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2484:7:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"2493:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2480:3:4"},"nodeType":"YulFunctionCall","src":"2480:23:4"},{"kind":"number","nodeType":"YulLiteral","src":"2505:2:4","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2476:3:4"},"nodeType":"YulFunctionCall","src":"2476:32:4"},"nodeType":"YulIf","src":"2473:2:4"},{"nodeType":"YulBlock","src":"2535:117:4","statements":[{"nodeType":"YulVariableDeclaration","src":"2550:15:4","value":{"kind":"number","nodeType":"YulLiteral","src":"2564:1:4","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"2554:6:4","type":""}]},{"nodeType":"YulAssignment","src":"2579:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2614:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"2625:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2610:3:4"},"nodeType":"YulFunctionCall","src":"2610:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2634:7:4"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"2589:20:4"},"nodeType":"YulFunctionCall","src":"2589:53:4"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2579:6:4"}]}]},{"nodeType":"YulBlock","src":"2662:118:4","statements":[{"nodeType":"YulVariableDeclaration","src":"2677:16:4","value":{"kind":"number","nodeType":"YulLiteral","src":"2691:2:4","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"2681:6:4","type":""}]},{"nodeType":"YulAssignment","src":"2707:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2742:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"2753:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2738:3:4"},"nodeType":"YulFunctionCall","src":"2738:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2762:7:4"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"2717:20:4"},"nodeType":"YulFunctionCall","src":"2717:53:4"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"2707:6:4"}]}]}]},"name":"abi_decode_tuple_t_uint256t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2425:9:4","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2436:7:4","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2448:6:4","type":""},{"name":"value1","nodeType":"YulTypedName","src":"2456:6:4","type":""}],"src":"2380:407:4"},{"body":{"nodeType":"YulBlock","src":"2856:52:4","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2873:3:4"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2895:5:4"}],"functionName":{"name":"cleanup_t_int256","nodeType":"YulIdentifier","src":"2878:16:4"},"nodeType":"YulFunctionCall","src":"2878:23:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2866:6:4"},"nodeType":"YulFunctionCall","src":"2866:36:4"},"nodeType":"YulExpressionStatement","src":"2866:36:4"}]},"name":"abi_encode_t_int256_to_t_int256_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"2844:5:4","type":""},{"name":"pos","nodeType":"YulTypedName","src":"2851:3:4","type":""}],"src":"2793:115:4"},{"body":{"nodeType":"YulBlock","src":"3006:272:4","statements":[{"nodeType":"YulVariableDeclaration","src":"3016:53:4","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3063:5:4"}],"functionName":{"name":"array_length_t_string_memory_ptr","nodeType":"YulIdentifier","src":"3030:32:4"},"nodeType":"YulFunctionCall","src":"3030:39:4"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"3020:6:4","type":""}]},{"nodeType":"YulAssignment","src":"3078:78:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3144:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"3149:6:4"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"3085:58:4"},"nodeType":"YulFunctionCall","src":"3085:71:4"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"3078:3:4"}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3191:5:4"},{"kind":"number","nodeType":"YulLiteral","src":"3198:4:4","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3187:3:4"},"nodeType":"YulFunctionCall","src":"3187:16:4"},{"name":"pos","nodeType":"YulIdentifier","src":"3205:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"3210:6:4"}],"functionName":{"name":"copy_memory_to_memory","nodeType":"YulIdentifier","src":"3165:21:4"},"nodeType":"YulFunctionCall","src":"3165:52:4"},"nodeType":"YulExpressionStatement","src":"3165:52:4"},{"nodeType":"YulAssignment","src":"3226:46:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3237:3:4"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"3264:6:4"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"3242:21:4"},"nodeType":"YulFunctionCall","src":"3242:29:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3233:3:4"},"nodeType":"YulFunctionCall","src":"3233:39:4"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"3226:3:4"}]}]},"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"2987:5:4","type":""},{"name":"pos","nodeType":"YulTypedName","src":"2994:3:4","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"3002:3:4","type":""}],"src":"2914:364:4"},{"body":{"nodeType":"YulBlock","src":"3444:385:4","statements":[{"nodeType":"YulVariableDeclaration","src":"3454:26:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3470:3:4"},{"kind":"number","nodeType":"YulLiteral","src":"3475:4:4","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3466:3:4"},"nodeType":"YulFunctionCall","src":"3466:14:4"},"variables":[{"name":"tail","nodeType":"YulTypedName","src":"3458:4:4","type":""}]},{"nodeType":"YulBlock","src":"3490:161:4","statements":[{"nodeType":"YulVariableDeclaration","src":"3522:43:4","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3552:5:4"},{"kind":"number","nodeType":"YulLiteral","src":"3559:4:4","type":"","value":"0x00"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3548:3:4"},"nodeType":"YulFunctionCall","src":"3548:16:4"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3542:5:4"},"nodeType":"YulFunctionCall","src":"3542:23:4"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"3526:12:4","type":""}]},{"expression":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"3612:12:4"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3630:3:4"},{"kind":"number","nodeType":"YulLiteral","src":"3635:4:4","type":"","value":"0x00"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3626:3:4"},"nodeType":"YulFunctionCall","src":"3626:14:4"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256","nodeType":"YulIdentifier","src":"3578:33:4"},"nodeType":"YulFunctionCall","src":"3578:63:4"},"nodeType":"YulExpressionStatement","src":"3578:63:4"}]},{"nodeType":"YulBlock","src":"3661:161:4","statements":[{"nodeType":"YulVariableDeclaration","src":"3693:43:4","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3723:5:4"},{"kind":"number","nodeType":"YulLiteral","src":"3730:4:4","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3719:3:4"},"nodeType":"YulFunctionCall","src":"3719:16:4"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3713:5:4"},"nodeType":"YulFunctionCall","src":"3713:23:4"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"3697:12:4","type":""}]},{"expression":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"3783:12:4"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3801:3:4"},{"kind":"number","nodeType":"YulLiteral","src":"3806:4:4","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3797:3:4"},"nodeType":"YulFunctionCall","src":"3797:14:4"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256","nodeType":"YulIdentifier","src":"3749:33:4"},"nodeType":"YulFunctionCall","src":"3749:63:4"},"nodeType":"YulExpressionStatement","src":"3749:63:4"}]}]},"name":"abi_encode_t_struct$_Pair_$412_memory_ptr_to_t_struct$_Pair_$412_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"3431:5:4","type":""},{"name":"pos","nodeType":"YulTypedName","src":"3438:3:4","type":""}],"src":"3336:493:4"},{"body":{"nodeType":"YulBlock","src":"3890:53:4","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3907:3:4"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3930:5:4"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"3912:17:4"},"nodeType":"YulFunctionCall","src":"3912:24:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3900:6:4"},"nodeType":"YulFunctionCall","src":"3900:37:4"},"nodeType":"YulExpressionStatement","src":"3900:37:4"}]},"name":"abi_encode_t_uint256_to_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"3878:5:4","type":""},{"name":"pos","nodeType":"YulTypedName","src":"3885:3:4","type":""}],"src":"3835:108:4"},{"body":{"nodeType":"YulBlock","src":"4014:53:4","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4031:3:4"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4054:5:4"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"4036:17:4"},"nodeType":"YulFunctionCall","src":"4036:24:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4024:6:4"},"nodeType":"YulFunctionCall","src":"4024:37:4"},"nodeType":"YulExpressionStatement","src":"4024:37:4"}]},"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"4002:5:4","type":""},{"name":"pos","nodeType":"YulTypedName","src":"4009:3:4","type":""}],"src":"3949:118:4"},{"body":{"nodeType":"YulBlock","src":"4169:122:4","statements":[{"nodeType":"YulAssignment","src":"4179:26:4","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4191:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"4202:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4187:3:4"},"nodeType":"YulFunctionCall","src":"4187:18:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4179:4:4"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4257:6:4"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4270:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"4281:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4266:3:4"},"nodeType":"YulFunctionCall","src":"4266:17:4"}],"functionName":{"name":"abi_encode_t_int256_to_t_int256_fromStack","nodeType":"YulIdentifier","src":"4215:41:4"},"nodeType":"YulFunctionCall","src":"4215:69:4"},"nodeType":"YulExpressionStatement","src":"4215:69:4"}]},"name":"abi_encode_tuple_t_int256__to_t_int256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4141:9:4","type":""},{"name":"value0","nodeType":"YulTypedName","src":"4153:6:4","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4164:4:4","type":""}],"src":"4073:218:4"},{"body":{"nodeType":"YulBlock","src":"4415:195:4","statements":[{"nodeType":"YulAssignment","src":"4425:26:4","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4437:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"4448:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4433:3:4"},"nodeType":"YulFunctionCall","src":"4433:18:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4425:4:4"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4472:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"4483:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4468:3:4"},"nodeType":"YulFunctionCall","src":"4468:17:4"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"4491:4:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"4497:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4487:3:4"},"nodeType":"YulFunctionCall","src":"4487:20:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4461:6:4"},"nodeType":"YulFunctionCall","src":"4461:47:4"},"nodeType":"YulExpressionStatement","src":"4461:47:4"},{"nodeType":"YulAssignment","src":"4517:86:4","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4589:6:4"},{"name":"tail","nodeType":"YulIdentifier","src":"4598:4:4"}],"functionName":{"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"4525:63:4"},"nodeType":"YulFunctionCall","src":"4525:78:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4517:4:4"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4387:9:4","type":""},{"name":"value0","nodeType":"YulTypedName","src":"4399:6:4","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4410:4:4","type":""}],"src":"4297:313:4"},{"body":{"nodeType":"YulBlock","src":"4756:166:4","statements":[{"nodeType":"YulAssignment","src":"4766:26:4","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4778:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"4789:2:4","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4774:3:4"},"nodeType":"YulFunctionCall","src":"4774:18:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4766:4:4"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4888:6:4"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4901:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"4912:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4897:3:4"},"nodeType":"YulFunctionCall","src":"4897:17:4"}],"functionName":{"name":"abi_encode_t_struct$_Pair_$412_memory_ptr_to_t_struct$_Pair_$412_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"4802:85:4"},"nodeType":"YulFunctionCall","src":"4802:113:4"},"nodeType":"YulExpressionStatement","src":"4802:113:4"}]},"name":"abi_encode_tuple_t_struct$_Pair_$412_memory_ptr__to_t_struct$_Pair_$412_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4728:9:4","type":""},{"name":"value0","nodeType":"YulTypedName","src":"4740:6:4","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4751:4:4","type":""}],"src":"4616:306:4"},{"body":{"nodeType":"YulBlock","src":"5026:124:4","statements":[{"nodeType":"YulAssignment","src":"5036:26:4","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5048:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"5059:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5044:3:4"},"nodeType":"YulFunctionCall","src":"5044:18:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5036:4:4"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5116:6:4"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5129:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"5140:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5125:3:4"},"nodeType":"YulFunctionCall","src":"5125:17:4"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"5072:43:4"},"nodeType":"YulFunctionCall","src":"5072:71:4"},"nodeType":"YulExpressionStatement","src":"5072:71:4"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4998:9:4","type":""},{"name":"value0","nodeType":"YulTypedName","src":"5010:6:4","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5021:4:4","type":""}],"src":"4928:222:4"},{"body":{"nodeType":"YulBlock","src":"5302:277:4","statements":[{"nodeType":"YulAssignment","src":"5312:26:4","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5324:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"5335:2:4","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5320:3:4"},"nodeType":"YulFunctionCall","src":"5320:18:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5312:4:4"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5392:6:4"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5405:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"5416:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5401:3:4"},"nodeType":"YulFunctionCall","src":"5401:17:4"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"5348:43:4"},"nodeType":"YulFunctionCall","src":"5348:71:4"},"nodeType":"YulExpressionStatement","src":"5348:71:4"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5440:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"5451:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5436:3:4"},"nodeType":"YulFunctionCall","src":"5436:18:4"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"5460:4:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"5466:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5456:3:4"},"nodeType":"YulFunctionCall","src":"5456:20:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5429:6:4"},"nodeType":"YulFunctionCall","src":"5429:48:4"},"nodeType":"YulExpressionStatement","src":"5429:48:4"},{"nodeType":"YulAssignment","src":"5486:86:4","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"5558:6:4"},{"name":"tail","nodeType":"YulIdentifier","src":"5567:4:4"}],"functionName":{"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"5494:63:4"},"nodeType":"YulFunctionCall","src":"5494:78:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5486:4:4"}]}]},"name":"abi_encode_tuple_t_uint256_t_string_memory_ptr__to_t_uint256_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5266:9:4","type":""},{"name":"value1","nodeType":"YulTypedName","src":"5278:6:4","type":""},{"name":"value0","nodeType":"YulTypedName","src":"5286:6:4","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5297:4:4","type":""}],"src":"5156:423:4"},{"body":{"nodeType":"YulBlock","src":"5626:88:4","statements":[{"nodeType":"YulAssignment","src":"5636:30:4","value":{"arguments":[],"functionName":{"name":"allocate_unbounded","nodeType":"YulIdentifier","src":"5646:18:4"},"nodeType":"YulFunctionCall","src":"5646:20:4"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"5636:6:4"}]},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"5695:6:4"},{"name":"size","nodeType":"YulIdentifier","src":"5703:4:4"}],"functionName":{"name":"finalize_allocation","nodeType":"YulIdentifier","src":"5675:19:4"},"nodeType":"YulFunctionCall","src":"5675:33:4"},"nodeType":"YulExpressionStatement","src":"5675:33:4"}]},"name":"allocate_memory","nodeType":"YulFunctionDefinition","parameters":[{"name":"size","nodeType":"YulTypedName","src":"5610:4:4","type":""}],"returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"5619:6:4","type":""}],"src":"5585:129:4"},{"body":{"nodeType":"YulBlock","src":"5760:35:4","statements":[{"nodeType":"YulAssignment","src":"5770:19:4","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5786:2:4","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5780:5:4"},"nodeType":"YulFunctionCall","src":"5780:9:4"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"5770:6:4"}]}]},"name":"allocate_unbounded","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"5753:6:4","type":""}],"src":"5720:75:4"},{"body":{"nodeType":"YulBlock","src":"5868:241:4","statements":[{"body":{"nodeType":"YulBlock","src":"5973:22:4","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"5975:16:4"},"nodeType":"YulFunctionCall","src":"5975:18:4"},"nodeType":"YulExpressionStatement","src":"5975:18:4"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"5945:6:4"},{"kind":"number","nodeType":"YulLiteral","src":"5953:18:4","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5942:2:4"},"nodeType":"YulFunctionCall","src":"5942:30:4"},"nodeType":"YulIf","src":"5939:2:4"},{"nodeType":"YulAssignment","src":"6005:37:4","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"6035:6:4"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"6013:21:4"},"nodeType":"YulFunctionCall","src":"6013:29:4"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"6005:4:4"}]},{"nodeType":"YulAssignment","src":"6079:23:4","value":{"arguments":[{"name":"size","nodeType":"YulIdentifier","src":"6091:4:4"},{"kind":"number","nodeType":"YulLiteral","src":"6097:4:4","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6087:3:4"},"nodeType":"YulFunctionCall","src":"6087:15:4"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"6079:4:4"}]}]},"name":"array_allocation_size_t_string_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"length","nodeType":"YulTypedName","src":"5852:6:4","type":""}],"returnVariables":[{"name":"size","nodeType":"YulTypedName","src":"5863:4:4","type":""}],"src":"5801:308:4"},{"body":{"nodeType":"YulBlock","src":"6174:40:4","statements":[{"nodeType":"YulAssignment","src":"6185:22:4","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6201:5:4"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6195:5:4"},"nodeType":"YulFunctionCall","src":"6195:12:4"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"6185:6:4"}]}]},"name":"array_length_t_string_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"6157:5:4","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"6167:6:4","type":""}],"src":"6115:99:4"},{"body":{"nodeType":"YulBlock","src":"6316:73:4","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6333:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"6338:6:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6326:6:4"},"nodeType":"YulFunctionCall","src":"6326:19:4"},"nodeType":"YulExpressionStatement","src":"6326:19:4"},{"nodeType":"YulAssignment","src":"6354:29:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6373:3:4"},{"kind":"number","nodeType":"YulLiteral","src":"6378:4:4","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6369:3:4"},"nodeType":"YulFunctionCall","src":"6369:14:4"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"6354:11:4"}]}]},"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"6288:3:4","type":""},{"name":"length","nodeType":"YulTypedName","src":"6293:6:4","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"6304:11:4","type":""}],"src":"6220:169:4"},{"body":{"nodeType":"YulBlock","src":"6439:32:4","statements":[{"nodeType":"YulAssignment","src":"6449:16:4","value":{"name":"value","nodeType":"YulIdentifier","src":"6460:5:4"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"6449:7:4"}]}]},"name":"cleanup_t_int256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"6421:5:4","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"6431:7:4","type":""}],"src":"6395:76:4"},{"body":{"nodeType":"YulBlock","src":"6522:32:4","statements":[{"nodeType":"YulAssignment","src":"6532:16:4","value":{"name":"value","nodeType":"YulIdentifier","src":"6543:5:4"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"6532:7:4"}]}]},"name":"cleanup_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"6504:5:4","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"6514:7:4","type":""}],"src":"6477:77:4"},{"body":{"nodeType":"YulBlock","src":"6611:103:4","statements":[{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"6634:3:4"},{"name":"src","nodeType":"YulIdentifier","src":"6639:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"6644:6:4"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"6621:12:4"},"nodeType":"YulFunctionCall","src":"6621:30:4"},"nodeType":"YulExpressionStatement","src":"6621:30:4"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"6692:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"6697:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6688:3:4"},"nodeType":"YulFunctionCall","src":"6688:16:4"},{"kind":"number","nodeType":"YulLiteral","src":"6706:1:4","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6681:6:4"},"nodeType":"YulFunctionCall","src":"6681:27:4"},"nodeType":"YulExpressionStatement","src":"6681:27:4"}]},"name":"copy_calldata_to_memory","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"6593:3:4","type":""},{"name":"dst","nodeType":"YulTypedName","src":"6598:3:4","type":""},{"name":"length","nodeType":"YulTypedName","src":"6603:6:4","type":""}],"src":"6560:154:4"},{"body":{"nodeType":"YulBlock","src":"6769:258:4","statements":[{"nodeType":"YulVariableDeclaration","src":"6779:10:4","value":{"kind":"number","nodeType":"YulLiteral","src":"6788:1:4","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"6783:1:4","type":""}]},{"body":{"nodeType":"YulBlock","src":"6848:63:4","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"6873:3:4"},{"name":"i","nodeType":"YulIdentifier","src":"6878:1:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6869:3:4"},"nodeType":"YulFunctionCall","src":"6869:11:4"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"6892:3:4"},{"name":"i","nodeType":"YulIdentifier","src":"6897:1:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6888:3:4"},"nodeType":"YulFunctionCall","src":"6888:11:4"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6882:5:4"},"nodeType":"YulFunctionCall","src":"6882:18:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6862:6:4"},"nodeType":"YulFunctionCall","src":"6862:39:4"},"nodeType":"YulExpressionStatement","src":"6862:39:4"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"6809:1:4"},{"name":"length","nodeType":"YulIdentifier","src":"6812:6:4"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"6806:2:4"},"nodeType":"YulFunctionCall","src":"6806:13:4"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"6820:19:4","statements":[{"nodeType":"YulAssignment","src":"6822:15:4","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"6831:1:4"},{"kind":"number","nodeType":"YulLiteral","src":"6834:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6827:3:4"},"nodeType":"YulFunctionCall","src":"6827:10:4"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"6822:1:4"}]}]},"pre":{"nodeType":"YulBlock","src":"6802:3:4","statements":[]},"src":"6798:113:4"},{"body":{"nodeType":"YulBlock","src":"6945:76:4","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"6995:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"7000:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6991:3:4"},"nodeType":"YulFunctionCall","src":"6991:16:4"},{"kind":"number","nodeType":"YulLiteral","src":"7009:1:4","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6984:6:4"},"nodeType":"YulFunctionCall","src":"6984:27:4"},"nodeType":"YulExpressionStatement","src":"6984:27:4"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"6926:1:4"},{"name":"length","nodeType":"YulIdentifier","src":"6929:6:4"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"6923:2:4"},"nodeType":"YulFunctionCall","src":"6923:13:4"},"nodeType":"YulIf","src":"6920:2:4"}]},"name":"copy_memory_to_memory","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"6751:3:4","type":""},{"name":"dst","nodeType":"YulTypedName","src":"6756:3:4","type":""},{"name":"length","nodeType":"YulTypedName","src":"6761:6:4","type":""}],"src":"6720:307:4"},{"body":{"nodeType":"YulBlock","src":"7076:238:4","statements":[{"nodeType":"YulVariableDeclaration","src":"7086:58:4","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7108:6:4"},{"arguments":[{"name":"size","nodeType":"YulIdentifier","src":"7138:4:4"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"7116:21:4"},"nodeType":"YulFunctionCall","src":"7116:27:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7104:3:4"},"nodeType":"YulFunctionCall","src":"7104:40:4"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"7090:10:4","type":""}]},{"body":{"nodeType":"YulBlock","src":"7255:22:4","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"7257:16:4"},"nodeType":"YulFunctionCall","src":"7257:18:4"},"nodeType":"YulExpressionStatement","src":"7257:18:4"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"7198:10:4"},{"kind":"number","nodeType":"YulLiteral","src":"7210:18:4","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"7195:2:4"},"nodeType":"YulFunctionCall","src":"7195:34:4"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"7234:10:4"},{"name":"memPtr","nodeType":"YulIdentifier","src":"7246:6:4"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"7231:2:4"},"nodeType":"YulFunctionCall","src":"7231:22:4"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"7192:2:4"},"nodeType":"YulFunctionCall","src":"7192:62:4"},"nodeType":"YulIf","src":"7189:2:4"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7293:2:4","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"7297:10:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7286:6:4"},"nodeType":"YulFunctionCall","src":"7286:22:4"},"nodeType":"YulExpressionStatement","src":"7286:22:4"}]},"name":"finalize_allocation","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"7062:6:4","type":""},{"name":"size","nodeType":"YulTypedName","src":"7070:4:4","type":""}],"src":"7033:281:4"},{"body":{"nodeType":"YulBlock","src":"7363:190:4","statements":[{"nodeType":"YulAssignment","src":"7373:33:4","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"7400:5:4"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"7382:17:4"},"nodeType":"YulFunctionCall","src":"7382:24:4"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"7373:5:4"}]},{"body":{"nodeType":"YulBlock","src":"7496:22:4","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"7498:16:4"},"nodeType":"YulFunctionCall","src":"7498:18:4"},"nodeType":"YulExpressionStatement","src":"7498:18:4"}]},"condition":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"7421:5:4"},{"kind":"number","nodeType":"YulLiteral","src":"7428:66:4","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"7418:2:4"},"nodeType":"YulFunctionCall","src":"7418:77:4"},"nodeType":"YulIf","src":"7415:2:4"},{"nodeType":"YulAssignment","src":"7527:20:4","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"7538:5:4"},{"kind":"number","nodeType":"YulLiteral","src":"7545:1:4","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7534:3:4"},"nodeType":"YulFunctionCall","src":"7534:13:4"},"variableNames":[{"name":"ret","nodeType":"YulIdentifier","src":"7527:3:4"}]}]},"name":"increment_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"7349:5:4","type":""}],"returnVariables":[{"name":"ret","nodeType":"YulTypedName","src":"7359:3:4","type":""}],"src":"7320:233:4"},{"body":{"nodeType":"YulBlock","src":"7587:152:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7604:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7607:77:4","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7597:6:4"},"nodeType":"YulFunctionCall","src":"7597:88:4"},"nodeType":"YulExpressionStatement","src":"7597:88:4"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7701:1:4","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"7704:4:4","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7694:6:4"},"nodeType":"YulFunctionCall","src":"7694:15:4"},"nodeType":"YulExpressionStatement","src":"7694:15:4"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7725:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7728:4:4","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7718:6:4"},"nodeType":"YulFunctionCall","src":"7718:15:4"},"nodeType":"YulExpressionStatement","src":"7718:15:4"}]},"name":"panic_error_0x11","nodeType":"YulFunctionDefinition","src":"7559:180:4"},{"body":{"nodeType":"YulBlock","src":"7773:152:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7790:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7793:77:4","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7783:6:4"},"nodeType":"YulFunctionCall","src":"7783:88:4"},"nodeType":"YulExpressionStatement","src":"7783:88:4"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7887:1:4","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"7890:4:4","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7880:6:4"},"nodeType":"YulFunctionCall","src":"7880:15:4"},"nodeType":"YulExpressionStatement","src":"7880:15:4"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7911:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7914:4:4","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7904:6:4"},"nodeType":"YulFunctionCall","src":"7904:15:4"},"nodeType":"YulExpressionStatement","src":"7904:15:4"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"7745:180:4"},{"body":{"nodeType":"YulBlock","src":"7979:54:4","statements":[{"nodeType":"YulAssignment","src":"7989:38:4","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8007:5:4"},{"kind":"number","nodeType":"YulLiteral","src":"8014:2:4","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8003:3:4"},"nodeType":"YulFunctionCall","src":"8003:14:4"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8023:2:4","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"8019:3:4"},"nodeType":"YulFunctionCall","src":"8019:7:4"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7999:3:4"},"nodeType":"YulFunctionCall","src":"7999:28:4"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"7989:6:4"}]}]},"name":"round_up_to_mul_of_32","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"7962:5:4","type":""}],"returnVariables":[{"name":"result","nodeType":"YulTypedName","src":"7972:6:4","type":""}],"src":"7931:102:4"},{"body":{"nodeType":"YulBlock","src":"8081:78:4","statements":[{"body":{"nodeType":"YulBlock","src":"8137:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8146:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8149:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8139:6:4"},"nodeType":"YulFunctionCall","src":"8139:12:4"},"nodeType":"YulExpressionStatement","src":"8139:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8104:5:4"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8128:5:4"}],"functionName":{"name":"cleanup_t_int256","nodeType":"YulIdentifier","src":"8111:16:4"},"nodeType":"YulFunctionCall","src":"8111:23:4"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"8101:2:4"},"nodeType":"YulFunctionCall","src":"8101:34:4"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"8094:6:4"},"nodeType":"YulFunctionCall","src":"8094:42:4"},"nodeType":"YulIf","src":"8091:2:4"}]},"name":"validator_revert_t_int256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"8074:5:4","type":""}],"src":"8039:120:4"},{"body":{"nodeType":"YulBlock","src":"8208:79:4","statements":[{"body":{"nodeType":"YulBlock","src":"8265:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8274:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8277:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8267:6:4"},"nodeType":"YulFunctionCall","src":"8267:12:4"},"nodeType":"YulExpressionStatement","src":"8267:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8231:5:4"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8256:5:4"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"8238:17:4"},"nodeType":"YulFunctionCall","src":"8238:24:4"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"8228:2:4"},"nodeType":"YulFunctionCall","src":"8228:35:4"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"8221:6:4"},"nodeType":"YulFunctionCall","src":"8221:43:4"},"nodeType":"YulIf","src":"8218:2:4"}]},"name":"validator_revert_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"8201:5:4","type":""}],"src":"8165:122:4"}]},"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_int256(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_int256(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_int256(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_int256(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_decode_tuple_t_uint256(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_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_uint256t_string_memory_ptr(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_uint256(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := calldataload(add(headStart, 32))\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n\n value1 := abi_decode_t_string_memory_ptr(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_uint256t_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_uint256(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_encode_t_int256_to_t_int256_fromStack(value, pos) {\n mstore(pos, cleanup_t_int256(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 // struct Matchers.Pair -> struct Matchers.Pair\n function abi_encode_t_struct$_Pair_$412_memory_ptr_to_t_struct$_Pair_$412_memory_ptr_fromStack(value, pos) {\n let tail := add(pos, 0x40)\n\n {\n // a\n\n let memberValue0 := mload(add(value, 0x00))\n abi_encode_t_uint256_to_t_uint256(memberValue0, add(pos, 0x00))\n }\n\n {\n // b\n\n let memberValue0 := mload(add(value, 0x20))\n abi_encode_t_uint256_to_t_uint256(memberValue0, add(pos, 0x20))\n }\n\n }\n\n function abi_encode_t_uint256_to_t_uint256(value, pos) {\n mstore(pos, cleanup_t_uint256(value))\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_int256__to_t_int256__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_int256_to_t_int256_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_struct$_Pair_$412_memory_ptr__to_t_struct$_Pair_$412_memory_ptr__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_struct$_Pair_$412_memory_ptr_to_t_struct$_Pair_$412_memory_ptr_fromStack(value0, add(headStart, 0))\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_string_memory_ptr__to_t_uint256_t_string_memory_ptr__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 mstore(add(headStart, 32), sub(tail, headStart))\n tail := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack(value1, tail)\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 cleanup_t_int256(value) -> cleaned {\n cleaned := value\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 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 increment_t_uint256(value) -> ret {\n value := cleanup_t_uint256(value)\n if eq(value, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) { panic_error_0x11() }\n ret := add(value, 1)\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_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 validator_revert_t_int256(value) {\n if iszero(eq(value, cleanup_t_int256(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":4,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106101425760003560e01c806373d2ea85116100b8578063aac014e01161007c578063aac014e01461028b578063b6bbe06114610295578063bad92aa91461029f578063e0a03812146102a9578063fe276a34146102c5578063ffb4746b146102e157610142565b806373d2ea851461022357806374afd4521461023f578063772f243a146102495780637c3cb0af146102535780638f9330301461026f57610142565b80634b5bbf6a1161010a5780634b5bbf6a146101c157806358a1d1ed146101cb5780635b94e31e146101d5578063622051f1146101df5780636f1fdc31146101e95780636fc588d21461020557610142565b80631b4f3f3d146101475780631f542cf3146101515780633ba4178b1461016d578063467e3d371461018957806347c56769146101a5575b600080fd5b61014f6102eb565b005b61016b60048036038101906101669190610a66565b61030f565b005b61018760048036038101906101829190610a12565b610360565b005b6101a3600480360381019061019e91906109a8565b61039f565b005b6101bf60048036038101906101ba919061097f565b6103e7565b005b6101c9610424565b005b6101d361046d565b005b6101dd61047a565b005b6101e76104b1565b005b61020360048036038101906101fe91906109a8565b610533565b005b61020d610592565b60405161021a9190610b8f565b60405180910390f35b61023d600480360381019061023891906109e9565b61059b565b005b6102476105ef565b005b610251610608565b005b61026d600480360381019061026891906109e9565b6106a3565b005b6102896004803603810190610284919061097f565b6106e0565b005b610293610734565b005b61029d610766565b005b6102a76107b4565b005b6102c360048036038101906102be9190610a66565b6107fd565b005b6102df60048036038101906102da9190610a12565b610865565b005b6102e96108bb565b005b6000808154809291906102fd90610cd3565b9190505550600061030d57600080fd5b565b6040518060400160405280838152602001828152506040517fdecab0e70000000000000000000000000000000000000000000000000000000081526004016103579190610b74565b60405180910390fd5b81816040517fa92ee8e3000000000000000000000000000000000000000000000000000000008152600401610396929190610baa565b60405180910390fd5b600081906103e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103da9190610b52565b60405180910390fd5b5050565b806040517fcdd7a0cc00000000000000000000000000000000000000000000000000000000815260040161041b9190610b37565b60405180910390fd5b60008081548092919061043690610cd3565b91905055506040517fd2c097a600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061047857600080fd5b565b60006104af577f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340d83b246040518163ffffffff1660e01b815260040160006040518083038186803b15801561051957600080fd5b505afa15801561052d573d6000803e3d6000fd5b50505050565b60008081548092919061054590610cd3565b91905055506000819061058e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105859190610b52565b60405180910390fd5b5050565b60008054905090565b6000808154809291906105ad90610cd3565b9190505550806040517f01f4d5d20000000000000000000000000000000000000000000000000000000081526004016105e69190610b8f565b60405180910390fd5b60008081548092919061060190610cd3565b9190505550565b60008081548092919061061a90610cd3565b9190505550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634b2bd7e96040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561068957600080fd5b505af115801561069d573d6000803e3d6000fd5b50505050565b806040517f01f4d5d20000000000000000000000000000000000000000000000000000000081526004016106d79190610b8f565b60405180910390fd5b6000808154809291906106f290610cd3565b9190505550806040517fcdd7a0cc00000000000000000000000000000000000000000000000000000000815260040161072b9190610b37565b60405180910390fd5b6040517fd2c097a600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008081548092919061077890610cd3565b919050555060006107b2577f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b565b6000808154809291906107c690610cd3565b91905055506040517f0bd3d39c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008081548092919061080f90610cd3565b91905055506040518060400160405280838152602001828152506040517fdecab0e700000000000000000000000000000000000000000000000000000000815260040161085c9190610b74565b60405180910390fd5b60008081548092919061087790610cd3565b919050555081816040517fa92ee8e30000000000000000000000000000000000000000000000000000000081526004016108b2929190610baa565b60405180910390fd5b6040517f0bd3d39c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006109006108fb84610bff565b610bda565b90508281526020810184848401111561091857600080fd5b610923848285610c60565b509392505050565b60008135905061093a81610d8b565b92915050565b600082601f83011261095157600080fd5b81356109618482602086016108ed565b91505092915050565b60008135905061097981610da2565b92915050565b60006020828403121561099157600080fd5b600061099f8482850161092b565b91505092915050565b6000602082840312156109ba57600080fd5b600082013567ffffffffffffffff8111156109d457600080fd5b6109e084828501610940565b91505092915050565b6000602082840312156109fb57600080fd5b6000610a098482850161096a565b91505092915050565b60008060408385031215610a2557600080fd5b6000610a338582860161096a565b925050602083013567ffffffffffffffff811115610a5057600080fd5b610a5c85828601610940565b9150509250929050565b60008060408385031215610a7957600080fd5b6000610a878582860161096a565b9250506020610a988582860161096a565b9150509250929050565b610aab81610c4c565b82525050565b6000610abc82610c30565b610ac68185610c3b565b9350610ad6818560208601610c6f565b610adf81610d7a565b840191505092915050565b604082016000820151610b006000850182610b19565b506020820151610b136020850182610b19565b50505050565b610b2281610c56565b82525050565b610b3181610c56565b82525050565b6000602082019050610b4c6000830184610aa2565b92915050565b60006020820190508181036000830152610b6c8184610ab1565b905092915050565b6000604082019050610b896000830184610aea565b92915050565b6000602082019050610ba46000830184610b28565b92915050565b6000604082019050610bbf6000830185610b28565b8181036020830152610bd18184610ab1565b90509392505050565b6000610be4610bf5565b9050610bf08282610ca2565b919050565b6000604051905090565b600067ffffffffffffffff821115610c1a57610c19610d4b565b5b610c2382610d7a565b9050602081019050919050565b600081519050919050565b600082825260208201905092915050565b6000819050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015610c8d578082015181840152602081019050610c72565b83811115610c9c576000848401525b50505050565b610cab82610d7a565b810181811067ffffffffffffffff82111715610cca57610cc9610d4b565b5b80604052505050565b6000610cde82610c56565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415610d1157610d10610d1c565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b610d9481610c4c565b8114610d9f57600080fd5b50565b610dab81610c56565b8114610db657600080fd5b5056fea264697066735822122025e4c9eca28af81eeb16cfbb3832355e24c64c7eae221a5034159a671d61281464736f6c63430008040033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x142 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x73D2EA85 GT PUSH2 0xB8 JUMPI DUP1 PUSH4 0xAAC014E0 GT PUSH2 0x7C JUMPI DUP1 PUSH4 0xAAC014E0 EQ PUSH2 0x28B JUMPI DUP1 PUSH4 0xB6BBE061 EQ PUSH2 0x295 JUMPI DUP1 PUSH4 0xBAD92AA9 EQ PUSH2 0x29F JUMPI DUP1 PUSH4 0xE0A03812 EQ PUSH2 0x2A9 JUMPI DUP1 PUSH4 0xFE276A34 EQ PUSH2 0x2C5 JUMPI DUP1 PUSH4 0xFFB4746B EQ PUSH2 0x2E1 JUMPI PUSH2 0x142 JUMP JUMPDEST DUP1 PUSH4 0x73D2EA85 EQ PUSH2 0x223 JUMPI DUP1 PUSH4 0x74AFD452 EQ PUSH2 0x23F JUMPI DUP1 PUSH4 0x772F243A EQ PUSH2 0x249 JUMPI DUP1 PUSH4 0x7C3CB0AF EQ PUSH2 0x253 JUMPI DUP1 PUSH4 0x8F933030 EQ PUSH2 0x26F JUMPI PUSH2 0x142 JUMP JUMPDEST DUP1 PUSH4 0x4B5BBF6A GT PUSH2 0x10A JUMPI DUP1 PUSH4 0x4B5BBF6A EQ PUSH2 0x1C1 JUMPI DUP1 PUSH4 0x58A1D1ED EQ PUSH2 0x1CB JUMPI DUP1 PUSH4 0x5B94E31E EQ PUSH2 0x1D5 JUMPI DUP1 PUSH4 0x622051F1 EQ PUSH2 0x1DF JUMPI DUP1 PUSH4 0x6F1FDC31 EQ PUSH2 0x1E9 JUMPI DUP1 PUSH4 0x6FC588D2 EQ PUSH2 0x205 JUMPI PUSH2 0x142 JUMP JUMPDEST DUP1 PUSH4 0x1B4F3F3D EQ PUSH2 0x147 JUMPI DUP1 PUSH4 0x1F542CF3 EQ PUSH2 0x151 JUMPI DUP1 PUSH4 0x3BA4178B EQ PUSH2 0x16D JUMPI DUP1 PUSH4 0x467E3D37 EQ PUSH2 0x189 JUMPI DUP1 PUSH4 0x47C56769 EQ PUSH2 0x1A5 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x14F PUSH2 0x2EB JUMP JUMPDEST STOP JUMPDEST PUSH2 0x16B PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x166 SWAP2 SWAP1 PUSH2 0xA66 JUMP JUMPDEST PUSH2 0x30F JUMP JUMPDEST STOP JUMPDEST PUSH2 0x187 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x182 SWAP2 SWAP1 PUSH2 0xA12 JUMP JUMPDEST PUSH2 0x360 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1A3 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x19E SWAP2 SWAP1 PUSH2 0x9A8 JUMP JUMPDEST PUSH2 0x39F JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1BF PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1BA SWAP2 SWAP1 PUSH2 0x97F JUMP JUMPDEST PUSH2 0x3E7 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1C9 PUSH2 0x424 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1D3 PUSH2 0x46D JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1DD PUSH2 0x47A JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1E7 PUSH2 0x4B1 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x203 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1FE SWAP2 SWAP1 PUSH2 0x9A8 JUMP JUMPDEST PUSH2 0x533 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x20D PUSH2 0x592 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x21A SWAP2 SWAP1 PUSH2 0xB8F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x23D PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x238 SWAP2 SWAP1 PUSH2 0x9E9 JUMP JUMPDEST PUSH2 0x59B JUMP JUMPDEST STOP JUMPDEST PUSH2 0x247 PUSH2 0x5EF JUMP JUMPDEST STOP JUMPDEST PUSH2 0x251 PUSH2 0x608 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x26D PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x268 SWAP2 SWAP1 PUSH2 0x9E9 JUMP JUMPDEST PUSH2 0x6A3 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x289 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x284 SWAP2 SWAP1 PUSH2 0x97F JUMP JUMPDEST PUSH2 0x6E0 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x293 PUSH2 0x734 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x29D PUSH2 0x766 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2A7 PUSH2 0x7B4 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2C3 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2BE SWAP2 SWAP1 PUSH2 0xA66 JUMP JUMPDEST PUSH2 0x7FD JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2DF PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2DA SWAP2 SWAP1 PUSH2 0xA12 JUMP JUMPDEST PUSH2 0x865 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2E9 PUSH2 0x8BB JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 DUP2 SLOAD DUP1 SWAP3 SWAP2 SWAP1 PUSH2 0x2FD SWAP1 PUSH2 0xCD3 JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE POP PUSH1 0x0 PUSH2 0x30D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE POP PUSH1 0x40 MLOAD PUSH32 0xDECAB0E700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x357 SWAP2 SWAP1 PUSH2 0xB74 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 DUP2 PUSH1 0x40 MLOAD PUSH32 0xA92EE8E300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x396 SWAP3 SWAP2 SWAP1 PUSH2 0xBAA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 SWAP1 PUSH2 0x3E3 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DA SWAP2 SWAP1 PUSH2 0xB52 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP JUMP JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH32 0xCDD7A0CC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x41B SWAP2 SWAP1 PUSH2 0xB37 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP2 SLOAD DUP1 SWAP3 SWAP2 SWAP1 PUSH2 0x436 SWAP1 PUSH2 0xCD3 JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE POP PUSH1 0x40 MLOAD PUSH32 0xD2C097A600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x478 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4AF JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x1 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x40D83B24 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x519 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x52D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP2 SLOAD DUP1 SWAP3 SWAP2 SWAP1 PUSH2 0x545 SWAP1 PUSH2 0xCD3 JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE POP PUSH1 0x0 DUP2 SWAP1 PUSH2 0x58E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x585 SWAP2 SWAP1 PUSH2 0xB52 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP2 SLOAD DUP1 SWAP3 SWAP2 SWAP1 PUSH2 0x5AD SWAP1 PUSH2 0xCD3 JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE POP DUP1 PUSH1 0x40 MLOAD PUSH32 0x1F4D5D200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5E6 SWAP2 SWAP1 PUSH2 0xB8F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP2 SLOAD DUP1 SWAP3 SWAP2 SWAP1 PUSH2 0x601 SWAP1 PUSH2 0xCD3 JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP2 SLOAD DUP1 SWAP3 SWAP2 SWAP1 PUSH2 0x61A SWAP1 PUSH2 0xCD3 JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE POP PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x4B2BD7E9 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x689 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x69D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMP JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH32 0x1F4D5D200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x6D7 SWAP2 SWAP1 PUSH2 0xB8F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP2 SLOAD DUP1 SWAP3 SWAP2 SWAP1 PUSH2 0x6F2 SWAP1 PUSH2 0xCD3 JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE POP DUP1 PUSH1 0x40 MLOAD PUSH32 0xCDD7A0CC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x72B SWAP2 SWAP1 PUSH2 0xB37 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xD2C097A600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP2 SLOAD DUP1 SWAP3 SWAP2 SWAP1 PUSH2 0x778 SWAP1 PUSH2 0xCD3 JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE POP PUSH1 0x0 PUSH2 0x7B2 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x1 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST JUMP JUMPDEST PUSH1 0x0 DUP1 DUP2 SLOAD DUP1 SWAP3 SWAP2 SWAP1 PUSH2 0x7C6 SWAP1 PUSH2 0xCD3 JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE POP PUSH1 0x40 MLOAD PUSH32 0xBD3D39C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP2 SLOAD DUP1 SWAP3 SWAP2 SWAP1 PUSH2 0x80F SWAP1 PUSH2 0xCD3 JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE POP PUSH1 0x40 MLOAD PUSH32 0xDECAB0E700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x85C SWAP2 SWAP1 PUSH2 0xB74 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP2 SLOAD DUP1 SWAP3 SWAP2 SWAP1 PUSH2 0x877 SWAP1 PUSH2 0xCD3 JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE POP DUP2 DUP2 PUSH1 0x40 MLOAD PUSH32 0xA92EE8E300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x8B2 SWAP3 SWAP2 SWAP1 PUSH2 0xBAA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xBD3D39C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x900 PUSH2 0x8FB DUP5 PUSH2 0xBFF JUMP JUMPDEST PUSH2 0xBDA JUMP JUMPDEST SWAP1 POP DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 DUP5 DUP5 ADD GT ISZERO PUSH2 0x918 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x923 DUP5 DUP3 DUP6 PUSH2 0xC60 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x93A DUP2 PUSH2 0xD8B JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x951 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x961 DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x8ED JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x979 DUP2 PUSH2 0xDA2 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x991 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x99F DUP5 DUP3 DUP6 ADD PUSH2 0x92B JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x9BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x9D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9E0 DUP5 DUP3 DUP6 ADD PUSH2 0x940 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x9FB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xA09 DUP5 DUP3 DUP6 ADD PUSH2 0x96A JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xA25 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xA33 DUP6 DUP3 DUP7 ADD PUSH2 0x96A JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xA50 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA5C DUP6 DUP3 DUP7 ADD PUSH2 0x940 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xA79 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xA87 DUP6 DUP3 DUP7 ADD PUSH2 0x96A JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0xA98 DUP6 DUP3 DUP7 ADD PUSH2 0x96A JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH2 0xAAB DUP2 PUSH2 0xC4C JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xABC DUP3 PUSH2 0xC30 JUMP JUMPDEST PUSH2 0xAC6 DUP2 DUP6 PUSH2 0xC3B JUMP JUMPDEST SWAP4 POP PUSH2 0xAD6 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0xC6F JUMP JUMPDEST PUSH2 0xADF DUP2 PUSH2 0xD7A JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP3 ADD PUSH1 0x0 DUP3 ADD MLOAD PUSH2 0xB00 PUSH1 0x0 DUP6 ADD DUP3 PUSH2 0xB19 JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0xB13 PUSH1 0x20 DUP6 ADD DUP3 PUSH2 0xB19 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0xB22 DUP2 PUSH2 0xC56 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0xB31 DUP2 PUSH2 0xC56 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xB4C PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xAA2 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 0xB6C DUP2 DUP5 PUSH2 0xAB1 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0xB89 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xAEA JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xBA4 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xB28 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0xBBF PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0xB28 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0xBD1 DUP2 DUP5 PUSH2 0xAB1 JUMP JUMPDEST SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xBE4 PUSH2 0xBF5 JUMP JUMPDEST SWAP1 POP PUSH2 0xBF0 DUP3 DUP3 PUSH2 0xCA2 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 0xC1A JUMPI PUSH2 0xC19 PUSH2 0xD4B JUMP JUMPDEST JUMPDEST PUSH2 0xC23 DUP3 PUSH2 0xD7A 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 DUP2 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 0xC8D JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0xC72 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0xC9C JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0xCAB DUP3 PUSH2 0xD7A JUMP JUMPDEST DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0xCCA JUMPI PUSH2 0xCC9 PUSH2 0xD4B JUMP JUMPDEST JUMPDEST DUP1 PUSH1 0x40 MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCDE DUP3 PUSH2 0xC56 JUMP JUMPDEST SWAP2 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 EQ ISZERO PUSH2 0xD11 JUMPI PUSH2 0xD10 PUSH2 0xD1C JUMP JUMPDEST JUMPDEST PUSH1 0x1 DUP3 ADD SWAP1 POP SWAP2 SWAP1 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 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 PUSH2 0xD94 DUP2 PUSH2 0xC4C JUMP JUMPDEST DUP2 EQ PUSH2 0xD9F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0xDAB DUP2 PUSH2 0xC56 JUMP JUMPDEST DUP2 EQ PUSH2 0xDB6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x25 0xE4 0xC9 0xEC LOG2 DUP11 0xF8 0x1E 0xEB AND 0xCF 0xBB CODESIZE ORIGIN CALLDATALOAD 0x5E 0x24 0xC6 0x4C PUSH31 0xAE221A5034159A671D61281464736F6C634300080400330000000000000000 ","sourceMap":"65:2709:2:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;888:73;;;:::i;:::-;;2652:120;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2383:141;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;792:92;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2134:100;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1360:94;;;:::i;:::-;;965:73;;;:::i;:::-;;1109:63;;;:::i;:::-;;1684:128;;;:::i;:::-;;696:92;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;622:70;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1816:103;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;542:76;;;:::i;:::-;;1556:124;;;:::i;:::-;;1923:103;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2030:100;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1458:94;;;:::i;:::-;;1042:63;;;:::i;:::-;;1176:88;;;:::i;:::-;;2528:120;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2238:141;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1268:88;;;:::i;:::-;;888:73;933:1;;:3;;;;;;;;;:::i;:::-;;;;;;950:5;942:14;;;;;;888:73::o;2652:120::-;2756:10;;;;;;;;2761:1;2756:10;;;;2764:1;2756:10;;;2736:31;;;;;;;;;;;:::i;:::-;;;;;;;;2383:141;2514:1;2517;2485:34;;;;;;;;;;;;:::i;:::-;;;;;;;;792:92;865:5;872:6;857:22;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;792:92;:::o;2134:100::-;2227:1;2208:21;;;;;;;;;;;:::i;:::-;;;;;;;;1360:94;1413:1;;:3;;;;;;;;;:::i;:::-;;;;;;1429:20;;;;;;;;;;;;;;965:73;1027:5;1019:14;;;;;;965:73::o;1109:63::-;1161:5;1154:13;;;;;;;;;;;;1109:63::o;1684:128::-;1754:15;;;;;;;;;;;:51;;;:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1684:128::o;696:92::-;752:1;;:3;;;;;;;;;:::i;:::-;;;;;;769:5;776:6;761:22;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;696:92;:::o;622:70::-;667:4;686:1;;679:8;;622:70;:::o;1816:103::-;1876:1;;:3;;;;;;;;;:::i;:::-;;;;;;1912:1;1892:22;;;;;;;;;;;:::i;:::-;;;;;;;;542:76;575:1;;:3;;;;;;;;;:::i;:::-;;;;;;542:76::o;1556:124::-;1617:1;;:3;;;;;;;;;:::i;:::-;;;;;;1626:15;;;;;;;;;;;:47;;;:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1556:124::o;1923:103::-;2019:1;1999:22;;;;;;;;;;;:::i;:::-;;;;;;;;2030:100;2088:1;;:3;;;;;;;;;:::i;:::-;;;;;;2123:1;2104:21;;;;;;;;;;;:::i;:::-;;;;;;;;1458:94;1527:20;;;;;;;;;;;;;;1042:63;1078:1;;:3;;;;;;;;;:::i;:::-;;;;;;1094:5;1087:13;;;;;;;;;;;;1042:63::o;1176:88::-;1226:1;;:3;;;;;;;;;:::i;:::-;;;;;;1242:17;;;;;;;;;;;;;;2528:120;2596:1;;:3;;;;;;;;;:::i;:::-;;;;;;2632:10;;;;;;;;2637:1;2632:10;;;;2640:1;2632:10;;;2612:31;;;;;;;;;;;:::i;:::-;;;;;;;;2238:141;2324:1;;:3;;;;;;;;;:::i;:::-;;;;;;2369:1;2372;2340:34;;;;;;;;;;;;:::i;:::-;;;;;;;;1268:88;1334:17;;;;;;;;;;;;;;7:345:4;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:137::-;403:5;441:6;428:20;419:29;;457:32;483:5;457:32;:::i;:::-;409:86;;;;:::o;515:273::-;571:5;620:3;613:4;605:6;601:17;597:27;587:2;;638:1;635;628:12;587:2;678:6;665:20;703:79;778:3;770:6;763:4;755:6;751:17;703:79;:::i;:::-;694:88;;577:211;;;;;:::o;794:139::-;840:5;878:6;865:20;856:29;;894:33;921:5;894:33;:::i;:::-;846:87;;;;:::o;939:260::-;997:6;1046:2;1034:9;1025:7;1021:23;1017:32;1014:2;;;1062:1;1059;1052:12;1014:2;1105:1;1130:52;1174:7;1165:6;1154:9;1150:22;1130:52;:::i;:::-;1120:62;;1076:116;1004:195;;;;:::o;1205:375::-;1274:6;1323:2;1311:9;1302:7;1298:23;1294:32;1291:2;;;1339:1;1336;1329:12;1291:2;1410:1;1399:9;1395:17;1382:31;1440:18;1432:6;1429:30;1426:2;;;1472:1;1469;1462:12;1426:2;1500:63;1555:7;1546:6;1535:9;1531:22;1500:63;:::i;:::-;1490:73;;1353:220;1281:299;;;;:::o;1586:262::-;1645:6;1694:2;1682:9;1673:7;1669:23;1665:32;1662:2;;;1710:1;1707;1700:12;1662:2;1753:1;1778:53;1823:7;1814:6;1803:9;1799:22;1778:53;:::i;:::-;1768:63;;1724:117;1652:196;;;;:::o;1854:520::-;1932:6;1940;1989:2;1977:9;1968:7;1964:23;1960:32;1957:2;;;2005:1;2002;1995:12;1957:2;2048:1;2073:53;2118:7;2109:6;2098:9;2094:22;2073:53;:::i;:::-;2063:63;;2019:117;2203:2;2192:9;2188:18;2175:32;2234:18;2226:6;2223:30;2220:2;;;2266:1;2263;2256:12;2220:2;2294:63;2349:7;2340:6;2329:9;2325:22;2294:63;:::i;:::-;2284:73;;2146:221;1947:427;;;;;:::o;2380:407::-;2448:6;2456;2505:2;2493:9;2484:7;2480:23;2476:32;2473:2;;;2521:1;2518;2511:12;2473:2;2564:1;2589:53;2634:7;2625:6;2614:9;2610:22;2589:53;:::i;:::-;2579:63;;2535:117;2691:2;2717:53;2762:7;2753:6;2742:9;2738:22;2717:53;:::i;:::-;2707:63;;2662:118;2463:324;;;;;:::o;2793:115::-;2878:23;2895:5;2878:23;:::i;:::-;2873:3;2866:36;2856:52;;:::o;2914:364::-;3002:3;3030:39;3063:5;3030:39;:::i;:::-;3085:71;3149:6;3144:3;3085:71;:::i;:::-;3078:78;;3165:52;3210:6;3205:3;3198:4;3191:5;3187:16;3165:52;:::i;:::-;3242:29;3264:6;3242:29;:::i;:::-;3237:3;3233:39;3226:46;;3006:272;;;;;:::o;3336:493::-;3475:4;3470:3;3466:14;3559:4;3552:5;3548:16;3542:23;3578:63;3635:4;3630:3;3626:14;3612:12;3578:63;:::i;:::-;3490:161;3730:4;3723:5;3719:16;3713:23;3749:63;3806:4;3801:3;3797:14;3783:12;3749:63;:::i;:::-;3661:161;3444:385;;;:::o;3835:108::-;3912:24;3930:5;3912:24;:::i;:::-;3907:3;3900:37;3890:53;;:::o;3949:118::-;4036:24;4054:5;4036:24;:::i;:::-;4031:3;4024:37;4014:53;;:::o;4073:218::-;4164:4;4202:2;4191:9;4187:18;4179:26;;4215:69;4281:1;4270:9;4266:17;4257:6;4215:69;:::i;:::-;4169:122;;;;:::o;4297:313::-;4410:4;4448:2;4437:9;4433:18;4425:26;;4497:9;4491:4;4487:20;4483:1;4472:9;4468:17;4461:47;4525:78;4598:4;4589:6;4525:78;:::i;:::-;4517:86;;4415:195;;;;:::o;4616:306::-;4751:4;4789:2;4778:9;4774:18;4766:26;;4802:113;4912:1;4901:9;4897:17;4888:6;4802:113;:::i;:::-;4756:166;;;;:::o;4928:222::-;5021:4;5059:2;5048:9;5044:18;5036:26;;5072:71;5140:1;5129:9;5125:17;5116:6;5072:71;:::i;:::-;5026:124;;;;:::o;5156:423::-;5297:4;5335:2;5324:9;5320:18;5312:26;;5348:71;5416:1;5405:9;5401:17;5392:6;5348:71;:::i;:::-;5466:9;5460:4;5456:20;5451:2;5440:9;5436:18;5429:48;5494:78;5567:4;5558:6;5494:78;:::i;:::-;5486:86;;5302:277;;;;;:::o;5585:129::-;5619:6;5646:20;;:::i;:::-;5636:30;;5675:33;5703:4;5695:6;5675:33;:::i;:::-;5626:88;;;:::o;5720:75::-;5753:6;5786:2;5780:9;5770:19;;5760:35;:::o;5801:308::-;5863:4;5953:18;5945:6;5942:30;5939:2;;;5975:18;;:::i;:::-;5939:2;6013:29;6035:6;6013:29;:::i;:::-;6005:37;;6097:4;6091;6087:15;6079:23;;5868:241;;;:::o;6115:99::-;6167:6;6201:5;6195:12;6185:22;;6174:40;;;:::o;6220:169::-;6304:11;6338:6;6333:3;6326:19;6378:4;6373:3;6369:14;6354:29;;6316:73;;;;:::o;6395:76::-;6431:7;6460:5;6449:16;;6439:32;;;:::o;6477:77::-;6514:7;6543:5;6532:16;;6522:32;;;:::o;6560:154::-;6644:6;6639:3;6634;6621:30;6706:1;6697:6;6692:3;6688:16;6681:27;6611:103;;;:::o;6720:307::-;6788:1;6798:113;6812:6;6809:1;6806:13;6798:113;;;6897:1;6892:3;6888:11;6882:18;6878:1;6873:3;6869:11;6862:39;6834:2;6831:1;6827:10;6822:15;;6798:113;;;6929:6;6926:1;6923:13;6920:2;;;7009:1;7000:6;6995:3;6991:16;6984:27;6920:2;6769:258;;;;:::o;7033:281::-;7116:27;7138:4;7116:27;:::i;:::-;7108:6;7104:40;7246:6;7234:10;7231:22;7210:18;7198:10;7195:34;7192:62;7189:2;;;7257:18;;:::i;:::-;7189:2;7297:10;7293:2;7286:22;7076:238;;;:::o;7320:233::-;7359:3;7382:24;7400:5;7382:24;:::i;:::-;7373:33;;7428:66;7421:5;7418:77;7415:2;;;7498:18;;:::i;:::-;7415:2;7545:1;7538:5;7534:13;7527:20;;7363:190;;;:::o;7559:180::-;7607:77;7604:1;7597:88;7704:4;7701:1;7694:15;7728:4;7725:1;7718:15;7745:180;7793:77;7790:1;7783:88;7890:4;7887:1;7880:15;7914:4;7911:1;7904:15;7931:102;7972:6;8023:2;8019:7;8014:2;8007:5;8003:14;7999:28;7989:38;;7979:54;;;:::o;8039:120::-;8111:23;8128:5;8111:23;:::i;:::-;8104:5;8101:34;8091:2;;8149:1;8146;8139:12;8091:2;8081:78;:::o;8165:122::-;8238:24;8256:5;8238:24;:::i;:::-;8231:5;8228:35;8218:2;;8277:1;8274;8267:12;8218:2;8208:79;:::o"},"methodIdentifiers":{"panicAssert()":"b6bbe061","panicAssertView()":"5b94e31e","revertWithAnotherContractCustomError()":"772f243a","revertWithAnotherContractCustomErrorView()":"622051f1","revertWithAnotherCustomError()":"4b5bbf6a","revertWithAnotherCustomErrorView()":"aac014e0","revertWithCustomErrorWithInt(int256)":"8f933030","revertWithCustomErrorWithIntView(int256)":"47c56769","revertWithCustomErrorWithPair(uint256,uint256)":"e0a03812","revertWithCustomErrorWithPairView(uint256,uint256)":"1f542cf3","revertWithCustomErrorWithUint(uint256)":"73d2ea85","revertWithCustomErrorWithUintAndString(uint256,string)":"fe276a34","revertWithCustomErrorWithUintAndStringView(uint256,string)":"3ba4178b","revertWithCustomErrorWithUintView(uint256)":"7c3cb0af","revertWithSomeCustomError()":"bad92aa9","revertWithSomeCustomErrorView()":"ffb4746b","revertsWith(string)":"6f1fdc31","revertsWithView(string)":"467e3d37","revertsWithoutReason()":"1b4f3f3d","revertsWithoutReasonView()":"58a1d1ed","succeeds()":"74afd452","succeedsView()":"6fc588d2"}},"metadata":"{\"compiler\":{\"version\":\"0.8.4+commit.c7e474f2\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AnotherCustomError\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"CustomErrorWithInt\",\"type\":\"error\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"a\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"b\",\"type\":\"uint256\"}],\"internalType\":\"struct Matchers.Pair\",\"name\":\"\",\"type\":\"tuple\"}],\"name\":\"CustomErrorWithPair\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"nameToForceEthersToUseAnArrayLikeWithNamedProperties\",\"type\":\"uint256\"}],\"name\":\"CustomErrorWithUint\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"CustomErrorWithUintAndString\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SomeCustomError\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"SomeEvent\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"panicAssert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"panicAssertView\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"revertWithAnotherContractCustomError\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"revertWithAnotherContractCustomErrorView\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"revertWithAnotherCustomError\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"revertWithAnotherCustomErrorView\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"i\",\"type\":\"int256\"}],\"name\":\"revertWithCustomErrorWithInt\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"i\",\"type\":\"int256\"}],\"name\":\"revertWithCustomErrorWithIntView\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"a\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"b\",\"type\":\"uint256\"}],\"name\":\"revertWithCustomErrorWithPair\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"a\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"b\",\"type\":\"uint256\"}],\"name\":\"revertWithCustomErrorWithPairView\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"n\",\"type\":\"uint256\"}],\"name\":\"revertWithCustomErrorWithUint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"n\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"s\",\"type\":\"string\"}],\"name\":\"revertWithCustomErrorWithUintAndString\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"n\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"s\",\"type\":\"string\"}],\"name\":\"revertWithCustomErrorWithUintAndStringView\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"n\",\"type\":\"uint256\"}],\"name\":\"revertWithCustomErrorWithUintView\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"revertWithSomeCustomError\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"revertWithSomeCustomErrorView\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"revertsWith\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"revertsWithView\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"revertsWithoutReason\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"revertsWithoutReasonView\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"succeeds\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"succeedsView\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/Matchers.sol\":\"Matchers\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/Matchers.sol\":{\"keccak256\":\"0x5a69001d60d8f2498c88a26a86619900f4a7d1e7443adcb5f6bf73b112e659df\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://ca96217e25bd9b0beccc5038bcde4bb32fc71f7828c01e2254f7c6eb06b2ec1c\",\"dweb:/ipfs/QmaHs3KgdszUPBCWbYsxriReGFePSG1AE23BxSCa98cnT9\"]}},\"version\":1}"}},"contracts/Token.sol":{"MockToken":{"abi":[{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"remaining","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:516:4","statements":[{"body":{"nodeType":"YulBlock","src":"58:269:4","statements":[{"nodeType":"YulAssignment","src":"68:22:4","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"82:4:4"},{"kind":"number","nodeType":"YulLiteral","src":"88:1:4","type":"","value":"2"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"78:3:4"},"nodeType":"YulFunctionCall","src":"78:12:4"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"68:6:4"}]},{"nodeType":"YulVariableDeclaration","src":"99:38:4","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"129:4:4"},{"kind":"number","nodeType":"YulLiteral","src":"135:1:4","type":"","value":"1"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"125:3:4"},"nodeType":"YulFunctionCall","src":"125:12:4"},"variables":[{"name":"outOfPlaceEncoding","nodeType":"YulTypedName","src":"103:18:4","type":""}]},{"body":{"nodeType":"YulBlock","src":"176:51:4","statements":[{"nodeType":"YulAssignment","src":"190:27:4","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"204:6:4"},{"kind":"number","nodeType":"YulLiteral","src":"212:4:4","type":"","value":"0x7f"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"200:3:4"},"nodeType":"YulFunctionCall","src":"200:17:4"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"190:6:4"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"156:18:4"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"149:6:4"},"nodeType":"YulFunctionCall","src":"149:26:4"},"nodeType":"YulIf","src":"146:2:4"},{"body":{"nodeType":"YulBlock","src":"279:42:4","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x22","nodeType":"YulIdentifier","src":"293:16:4"},"nodeType":"YulFunctionCall","src":"293:18:4"},"nodeType":"YulExpressionStatement","src":"293:18:4"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"243:18:4"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"266:6:4"},{"kind":"number","nodeType":"YulLiteral","src":"274:2:4","type":"","value":"32"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"263:2:4"},"nodeType":"YulFunctionCall","src":"263:14:4"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"240:2:4"},"nodeType":"YulFunctionCall","src":"240:38:4"},"nodeType":"YulIf","src":"237:2:4"}]},"name":"extract_byte_array_length","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"42:4:4","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"51:6:4","type":""}],"src":"7:320:4"},{"body":{"nodeType":"YulBlock","src":"361:152:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"378:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"381:77:4","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"371:6:4"},"nodeType":"YulFunctionCall","src":"371:88:4"},"nodeType":"YulExpressionStatement","src":"371:88:4"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"475:1:4","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"478:4:4","type":"","value":"0x22"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"468:6:4"},"nodeType":"YulFunctionCall","src":"468:15:4"},"nodeType":"YulExpressionStatement","src":"468:15:4"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"499:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"502:4:4","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"492:6:4"},"nodeType":"YulFunctionCall","src":"492:15:4"},"nodeType":"YulExpressionStatement","src":"492:15:4"}]},"name":"panic_error_0x22","nodeType":"YulFunctionDefinition","src":"333:180:4"}]},"contents":"{\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 panic_error_0x22() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n\n}\n","id":4,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"608060405260016000556040518060400160405280600981526020017f4d6f636b546f6b656e000000000000000000000000000000000000000000000081525060049080519060200190620000569291906200010a565b506040518060400160405280600381526020017f4d434b000000000000000000000000000000000000000000000000000000000081525060059080519060200190620000a49291906200010a565b50348015620000b257600080fd5b50633b9aca00600181905550600154600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506200021f565b8280546200011890620001ba565b90600052602060002090601f0160209004810192826200013c576000855562000188565b82601f106200015757805160ff191683800117855562000188565b8280016001018555821562000188579182015b82811115620001875782518255916020019190600101906200016a565b5b5090506200019791906200019b565b5090565b5b80821115620001b65760008160009055506001016200019c565b5090565b60006002820490506001821680620001d357607f821691505b60208210811415620001ea57620001e9620001f0565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b610bad806200022f6000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c8063313ce56711610066578063313ce5671461013457806370a082311461015257806395d89b4114610182578063a9059cbb146101a0578063dd62ed3e146101d057610093565b806306fdde0314610098578063095ea7b3146100b657806318160ddd146100e657806323b872dd14610104575b600080fd5b6100a0610200565b6040516100ad91906108b8565b60405180910390f35b6100d060048036038101906100cb91906107c4565b61028e565b6040516100dd919061089d565b60405180910390f35b6100ee61031b565b6040516100fb919061091a565b60405180910390f35b61011e60048036038101906101199190610775565b610321565b60405161012b919061089d565b60405180910390f35b61013c6104b9565b604051610149919061091a565b60405180910390f35b61016c60048036038101906101679190610710565b6104bf565b604051610179919061091a565b60405180910390f35b61018a6104d7565b60405161019791906108b8565b60405180910390f35b6101ba60048036038101906101b591906107c4565b610565565b6040516101c7919061089d565b60405180910390f35b6101ea60048036038101906101e59190610739565b61065f565b6040516101f7919061091a565b60405180910390f35b6004805461020d90610a56565b80601f016020809104026020016040519081016040528092919081815260200182805461023990610a56565b80156102865780601f1061025b57610100808354040283529160200191610286565b820191906000526020600020905b81548152906001019060200180831161026957829003601f168201915b505050505081565b600081600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001905092915050565b60015481565b60008161032e853361065f565b101561036f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610366906108da565b60405180910390fd5b81600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546103fb91906109a7565b9250508190555081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461045191906109a7565b9250508190555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546104a79190610951565b92505081905550600190509392505050565b60005481565b60026020528060005260406000206000915090505481565b600580546104e490610a56565b80601f016020809104026020016040519081016040528092919081815260200182805461051090610a56565b801561055d5780601f106105325761010080835404028352916020019161055d565b820191906000526020600020905b81548152906001019060200180831161054057829003601f168201915b505050505081565b60008082116105a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105a0906108fa565b60405180910390fd5b81600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546105f891906109a7565b9250508190555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461064e9190610951565b925050819055506001905092915050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000813590506106f581610b49565b92915050565b60008135905061070a81610b60565b92915050565b60006020828403121561072257600080fd5b6000610730848285016106e6565b91505092915050565b6000806040838503121561074c57600080fd5b600061075a858286016106e6565b925050602061076b858286016106e6565b9150509250929050565b60008060006060848603121561078a57600080fd5b6000610798868287016106e6565b93505060206107a9868287016106e6565b92505060406107ba868287016106fb565b9150509250925092565b600080604083850312156107d757600080fd5b60006107e5858286016106e6565b92505060206107f6858286016106fb565b9150509250929050565b610809816109ed565b82525050565b600061081a82610935565b6108248185610940565b9350610834818560208601610a23565b61083d81610ae6565b840191505092915050565b6000610855601683610940565b915061086082610af7565b602082019050919050565b6000610878601983610940565b915061088382610b20565b602082019050919050565b61089781610a19565b82525050565b60006020820190506108b26000830184610800565b92915050565b600060208201905081810360008301526108d2818461080f565b905092915050565b600060208201905081810360008301526108f381610848565b9050919050565b600060208201905081810360008301526109138161086b565b9050919050565b600060208201905061092f600083018461088e565b92915050565b600081519050919050565b600082825260208201905092915050565b600061095c82610a19565b915061096783610a19565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561099c5761099b610a88565b5b828201905092915050565b60006109b282610a19565b91506109bd83610a19565b9250828210156109d0576109cf610a88565b5b828203905092915050565b60006109e6826109f9565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b83811015610a41578082015181840152602081019050610a26565b83811115610a50576000848401525b50505050565b60006002820490506001821680610a6e57607f821691505b60208210811415610a8257610a81610ab7565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f496e73756666696369656e7420616c6c6f77616e636500000000000000000000600082015250565b7f5472616e736665727265642076616c7565206973207a65726f00000000000000600082015250565b610b52816109db565b8114610b5d57600080fd5b50565b610b6981610a19565b8114610b7457600080fd5b5056fea26469706673582212208ce961870c9d6cd505270df5da0c70d49a8f6cb7e04d5a03b16637783be136e764736f6c63430008040033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x1 PUSH1 0x0 SSTORE PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x9 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x4D6F636B546F6B656E0000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x4 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH3 0x56 SWAP3 SWAP2 SWAP1 PUSH3 0x10A JUMP JUMPDEST POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x4D434B0000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x5 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH3 0xA4 SWAP3 SWAP2 SWAP1 PUSH3 0x10A JUMP JUMPDEST POP CALLVALUE DUP1 ISZERO PUSH3 0xB2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH4 0x3B9ACA00 PUSH1 0x1 DUP2 SWAP1 SSTORE POP PUSH1 0x1 SLOAD 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 DUP2 SWAP1 SSTORE POP PUSH3 0x21F JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH3 0x118 SWAP1 PUSH3 0x1BA JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH3 0x13C JUMPI PUSH1 0x0 DUP6 SSTORE PUSH3 0x188 JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH3 0x157 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x188 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x188 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x187 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0x16A JUMP JUMPDEST JUMPDEST POP SWAP1 POP PUSH3 0x197 SWAP2 SWAP1 PUSH3 0x19B JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x1B6 JUMPI PUSH1 0x0 DUP2 PUSH1 0x0 SWAP1 SSTORE POP PUSH1 0x1 ADD PUSH3 0x19C JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x2 DUP3 DIV SWAP1 POP PUSH1 0x1 DUP3 AND DUP1 PUSH3 0x1D3 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 EQ ISZERO PUSH3 0x1EA JUMPI PUSH3 0x1E9 PUSH3 0x1F0 JUMP JUMPDEST JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH2 0xBAD DUP1 PUSH3 0x22F PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x93 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x313CE567 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x134 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x152 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x182 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x1A0 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x1D0 JUMPI PUSH2 0x93 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x98 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0xB6 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0xE6 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x104 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA0 PUSH2 0x200 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xAD SWAP2 SWAP1 PUSH2 0x8B8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xD0 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xCB SWAP2 SWAP1 PUSH2 0x7C4 JUMP JUMPDEST PUSH2 0x28E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xDD SWAP2 SWAP1 PUSH2 0x89D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xEE PUSH2 0x31B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xFB SWAP2 SWAP1 PUSH2 0x91A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x11E PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x119 SWAP2 SWAP1 PUSH2 0x775 JUMP JUMPDEST PUSH2 0x321 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x12B SWAP2 SWAP1 PUSH2 0x89D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x13C PUSH2 0x4B9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x149 SWAP2 SWAP1 PUSH2 0x91A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x16C PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x167 SWAP2 SWAP1 PUSH2 0x710 JUMP JUMPDEST PUSH2 0x4BF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x179 SWAP2 SWAP1 PUSH2 0x91A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x18A PUSH2 0x4D7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x197 SWAP2 SWAP1 PUSH2 0x8B8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1BA PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1B5 SWAP2 SWAP1 PUSH2 0x7C4 JUMP JUMPDEST PUSH2 0x565 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1C7 SWAP2 SWAP1 PUSH2 0x89D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1EA PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1E5 SWAP2 SWAP1 PUSH2 0x739 JUMP JUMPDEST PUSH2 0x65F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1F7 SWAP2 SWAP1 PUSH2 0x91A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH2 0x20D SWAP1 PUSH2 0xA56 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 0x239 SWAP1 PUSH2 0xA56 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x286 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x25B JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x286 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 0x269 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x3 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 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP PUSH1 0x1 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x32E DUP6 CALLER PUSH2 0x65F JUMP JUMPDEST LT ISZERO PUSH2 0x36F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x366 SWAP1 PUSH2 0x8DA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 PUSH1 0x3 PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 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 0x3FB SWAP2 SWAP1 PUSH2 0x9A7 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x2 PUSH1 0x0 DUP7 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 0x451 SWAP2 SWAP1 PUSH2 0x9A7 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x2 PUSH1 0x0 DUP6 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 0x4A7 SWAP2 SWAP1 PUSH2 0x951 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH1 0x1 SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD 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 0x5 DUP1 SLOAD PUSH2 0x4E4 SWAP1 PUSH2 0xA56 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 0x510 SWAP1 PUSH2 0xA56 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x55D JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x532 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x55D 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 0x540 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 GT PUSH2 0x5A9 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5A0 SWAP1 PUSH2 0x8FA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 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 0x5F8 SWAP2 SWAP1 PUSH2 0x9A7 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x2 PUSH1 0x0 DUP6 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 0x64E SWAP2 SWAP1 PUSH2 0x951 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH1 0x1 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x3 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x6F5 DUP2 PUSH2 0xB49 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x70A DUP2 PUSH2 0xB60 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x722 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x730 DUP5 DUP3 DUP6 ADD PUSH2 0x6E6 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x74C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x75A DUP6 DUP3 DUP7 ADD PUSH2 0x6E6 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x76B DUP6 DUP3 DUP7 ADD PUSH2 0x6E6 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x78A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x798 DUP7 DUP3 DUP8 ADD PUSH2 0x6E6 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x7A9 DUP7 DUP3 DUP8 ADD PUSH2 0x6E6 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x7BA DUP7 DUP3 DUP8 ADD PUSH2 0x6FB JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x7D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x7E5 DUP6 DUP3 DUP7 ADD PUSH2 0x6E6 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x7F6 DUP6 DUP3 DUP7 ADD PUSH2 0x6FB JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH2 0x809 DUP2 PUSH2 0x9ED JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x81A DUP3 PUSH2 0x935 JUMP JUMPDEST PUSH2 0x824 DUP2 DUP6 PUSH2 0x940 JUMP JUMPDEST SWAP4 POP PUSH2 0x834 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0xA23 JUMP JUMPDEST PUSH2 0x83D DUP2 PUSH2 0xAE6 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x855 PUSH1 0x16 DUP4 PUSH2 0x940 JUMP JUMPDEST SWAP2 POP PUSH2 0x860 DUP3 PUSH2 0xAF7 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x878 PUSH1 0x19 DUP4 PUSH2 0x940 JUMP JUMPDEST SWAP2 POP PUSH2 0x883 DUP3 PUSH2 0xB20 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x897 DUP2 PUSH2 0xA19 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x8B2 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x800 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 0x8D2 DUP2 DUP5 PUSH2 0x80F 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 0x8F3 DUP2 PUSH2 0x848 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 0x913 DUP2 PUSH2 0x86B JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x92F PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x88E JUMP JUMPDEST SWAP3 SWAP2 POP 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 0x95C DUP3 PUSH2 0xA19 JUMP JUMPDEST SWAP2 POP PUSH2 0x967 DUP4 PUSH2 0xA19 JUMP JUMPDEST SWAP3 POP DUP3 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SUB DUP3 GT ISZERO PUSH2 0x99C JUMPI PUSH2 0x99B PUSH2 0xA88 JUMP JUMPDEST JUMPDEST DUP3 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9B2 DUP3 PUSH2 0xA19 JUMP JUMPDEST SWAP2 POP PUSH2 0x9BD DUP4 PUSH2 0xA19 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 LT ISZERO PUSH2 0x9D0 JUMPI PUSH2 0x9CF PUSH2 0xA88 JUMP JUMPDEST JUMPDEST DUP3 DUP3 SUB SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9E6 DUP3 PUSH2 0x9F9 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO ISZERO 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 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xA41 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0xA26 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0xA50 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 0xA6E JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 EQ ISZERO PUSH2 0xA82 JUMPI PUSH2 0xA81 PUSH2 0xAB7 JUMP JUMPDEST JUMPDEST POP SWAP2 SWAP1 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 PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x496E73756666696369656E7420616C6C6F77616E636500000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH32 0x5472616E736665727265642076616C7565206973207A65726F00000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH2 0xB52 DUP2 PUSH2 0x9DB JUMP JUMPDEST DUP2 EQ PUSH2 0xB5D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0xB69 DUP2 PUSH2 0xA19 JUMP JUMPDEST DUP2 EQ PUSH2 0xB74 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP13 0xE9 PUSH2 0x870C SWAP14 PUSH13 0xD505270DF5DA0C70D49A8F6CB7 0xE0 0x4D GAS SUB 0xB1 PUSH7 0x37783BE136E764 PUSH20 0x6F6C634300080400330000000000000000000000 ","sourceMap":"1241:119:3:-:0;;;119:1;96:24;;1293:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1329:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1241:119;;;;;;;;;;292:13;278:11;:27;;;;335:11;;311:9;:21;321:10;311:21;;;;;;;;;;;;;;;:35;;;;1241:119;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;7:320:4:-;51:6;88:1;82:4;78:12;68:22;;135:1;129:4;125:12;156:18;146:2;;212:4;204:6;200:17;190:27;;146:2;274;266:6;263:14;243:18;240:38;237:2;;;293:18;;:::i;:::-;237:2;58:269;;;;:::o;333:180::-;381:77;378:1;371:88;478:4;475:1;468:15;502:4;499:1;492:15;1241:119:3;;;;;;;"},"deployedBytecode":{"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:7847:4","statements":[{"body":{"nodeType":"YulBlock","src":"59:87:4","statements":[{"nodeType":"YulAssignment","src":"69:29:4","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"91:6:4"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"78:12:4"},"nodeType":"YulFunctionCall","src":"78:20:4"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"69:5:4"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"134:5:4"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"107:26:4"},"nodeType":"YulFunctionCall","src":"107:33:4"},"nodeType":"YulExpressionStatement","src":"107:33:4"}]},"name":"abi_decode_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"37:6:4","type":""},{"name":"end","nodeType":"YulTypedName","src":"45:3:4","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"53:5:4","type":""}],"src":"7:139:4"},{"body":{"nodeType":"YulBlock","src":"204:87:4","statements":[{"nodeType":"YulAssignment","src":"214:29:4","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"236:6:4"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"223:12:4"},"nodeType":"YulFunctionCall","src":"223:20:4"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"214:5:4"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"279:5:4"}],"functionName":{"name":"validator_revert_t_uint256","nodeType":"YulIdentifier","src":"252:26:4"},"nodeType":"YulFunctionCall","src":"252:33:4"},"nodeType":"YulExpressionStatement","src":"252:33:4"}]},"name":"abi_decode_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"182:6:4","type":""},{"name":"end","nodeType":"YulTypedName","src":"190:3:4","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"198:5:4","type":""}],"src":"152:139:4"},{"body":{"nodeType":"YulBlock","src":"363:196:4","statements":[{"body":{"nodeType":"YulBlock","src":"409:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"418:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"421:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"411:6:4"},"nodeType":"YulFunctionCall","src":"411:12:4"},"nodeType":"YulExpressionStatement","src":"411:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"384:7:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"393:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"380:3:4"},"nodeType":"YulFunctionCall","src":"380:23:4"},{"kind":"number","nodeType":"YulLiteral","src":"405:2:4","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"376:3:4"},"nodeType":"YulFunctionCall","src":"376:32:4"},"nodeType":"YulIf","src":"373:2:4"},{"nodeType":"YulBlock","src":"435:117:4","statements":[{"nodeType":"YulVariableDeclaration","src":"450:15:4","value":{"kind":"number","nodeType":"YulLiteral","src":"464:1:4","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"454:6:4","type":""}]},{"nodeType":"YulAssignment","src":"479:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"514:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"525:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"510:3:4"},"nodeType":"YulFunctionCall","src":"510:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"534:7:4"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"489:20:4"},"nodeType":"YulFunctionCall","src":"489:53:4"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"479:6:4"}]}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"333:9:4","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"344:7:4","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"356:6:4","type":""}],"src":"297:262:4"},{"body":{"nodeType":"YulBlock","src":"648:324:4","statements":[{"body":{"nodeType":"YulBlock","src":"694:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"703:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"706:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"696:6:4"},"nodeType":"YulFunctionCall","src":"696:12:4"},"nodeType":"YulExpressionStatement","src":"696:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"669:7:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"678:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"665:3:4"},"nodeType":"YulFunctionCall","src":"665:23:4"},{"kind":"number","nodeType":"YulLiteral","src":"690:2:4","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"661:3:4"},"nodeType":"YulFunctionCall","src":"661:32:4"},"nodeType":"YulIf","src":"658:2:4"},{"nodeType":"YulBlock","src":"720:117:4","statements":[{"nodeType":"YulVariableDeclaration","src":"735:15:4","value":{"kind":"number","nodeType":"YulLiteral","src":"749:1:4","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"739:6:4","type":""}]},{"nodeType":"YulAssignment","src":"764:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"799:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"810:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"795:3:4"},"nodeType":"YulFunctionCall","src":"795:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"819:7:4"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"774:20:4"},"nodeType":"YulFunctionCall","src":"774:53:4"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"764:6:4"}]}]},{"nodeType":"YulBlock","src":"847:118:4","statements":[{"nodeType":"YulVariableDeclaration","src":"862:16:4","value":{"kind":"number","nodeType":"YulLiteral","src":"876:2:4","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"866:6:4","type":""}]},{"nodeType":"YulAssignment","src":"892:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"927:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"938:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"923:3:4"},"nodeType":"YulFunctionCall","src":"923:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"947:7:4"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"902:20:4"},"nodeType":"YulFunctionCall","src":"902:53:4"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"892:6:4"}]}]}]},"name":"abi_decode_tuple_t_addresst_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"610:9:4","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"621:7:4","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"633:6:4","type":""},{"name":"value1","nodeType":"YulTypedName","src":"641:6:4","type":""}],"src":"565:407:4"},{"body":{"nodeType":"YulBlock","src":"1078:452:4","statements":[{"body":{"nodeType":"YulBlock","src":"1124:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1133:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1136:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1126:6:4"},"nodeType":"YulFunctionCall","src":"1126:12:4"},"nodeType":"YulExpressionStatement","src":"1126:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1099:7:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"1108:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1095:3:4"},"nodeType":"YulFunctionCall","src":"1095:23:4"},{"kind":"number","nodeType":"YulLiteral","src":"1120:2:4","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1091:3:4"},"nodeType":"YulFunctionCall","src":"1091:32:4"},"nodeType":"YulIf","src":"1088:2:4"},{"nodeType":"YulBlock","src":"1150:117:4","statements":[{"nodeType":"YulVariableDeclaration","src":"1165:15:4","value":{"kind":"number","nodeType":"YulLiteral","src":"1179:1:4","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1169:6:4","type":""}]},{"nodeType":"YulAssignment","src":"1194:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1229:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"1240:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1225:3:4"},"nodeType":"YulFunctionCall","src":"1225:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1249:7:4"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"1204:20:4"},"nodeType":"YulFunctionCall","src":"1204:53:4"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1194:6:4"}]}]},{"nodeType":"YulBlock","src":"1277:118:4","statements":[{"nodeType":"YulVariableDeclaration","src":"1292:16:4","value":{"kind":"number","nodeType":"YulLiteral","src":"1306:2:4","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1296:6:4","type":""}]},{"nodeType":"YulAssignment","src":"1322:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1357:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"1368:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1353:3:4"},"nodeType":"YulFunctionCall","src":"1353:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1377:7:4"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"1332:20:4"},"nodeType":"YulFunctionCall","src":"1332:53:4"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1322:6:4"}]}]},{"nodeType":"YulBlock","src":"1405:118:4","statements":[{"nodeType":"YulVariableDeclaration","src":"1420:16:4","value":{"kind":"number","nodeType":"YulLiteral","src":"1434:2:4","type":"","value":"64"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1424:6:4","type":""}]},{"nodeType":"YulAssignment","src":"1450:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1485:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"1496:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1481:3:4"},"nodeType":"YulFunctionCall","src":"1481:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1505:7:4"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"1460:20:4"},"nodeType":"YulFunctionCall","src":"1460:53:4"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"1450:6:4"}]}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1032:9:4","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1043:7:4","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1055:6:4","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1063:6:4","type":""},{"name":"value2","nodeType":"YulTypedName","src":"1071:6:4","type":""}],"src":"978:552:4"},{"body":{"nodeType":"YulBlock","src":"1619:324:4","statements":[{"body":{"nodeType":"YulBlock","src":"1665:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1674:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1677:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1667:6:4"},"nodeType":"YulFunctionCall","src":"1667:12:4"},"nodeType":"YulExpressionStatement","src":"1667:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1640:7:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"1649:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1636:3:4"},"nodeType":"YulFunctionCall","src":"1636:23:4"},{"kind":"number","nodeType":"YulLiteral","src":"1661:2:4","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1632:3:4"},"nodeType":"YulFunctionCall","src":"1632:32:4"},"nodeType":"YulIf","src":"1629:2:4"},{"nodeType":"YulBlock","src":"1691:117:4","statements":[{"nodeType":"YulVariableDeclaration","src":"1706:15:4","value":{"kind":"number","nodeType":"YulLiteral","src":"1720:1:4","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1710:6:4","type":""}]},{"nodeType":"YulAssignment","src":"1735:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1770:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"1781:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1766:3:4"},"nodeType":"YulFunctionCall","src":"1766:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1790:7:4"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"1745:20:4"},"nodeType":"YulFunctionCall","src":"1745:53:4"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1735:6:4"}]}]},{"nodeType":"YulBlock","src":"1818:118:4","statements":[{"nodeType":"YulVariableDeclaration","src":"1833:16:4","value":{"kind":"number","nodeType":"YulLiteral","src":"1847:2:4","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1837:6:4","type":""}]},{"nodeType":"YulAssignment","src":"1863:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1898:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"1909:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1894:3:4"},"nodeType":"YulFunctionCall","src":"1894:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1918:7:4"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"1873:20:4"},"nodeType":"YulFunctionCall","src":"1873:53:4"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1863:6:4"}]}]}]},"name":"abi_decode_tuple_t_addresst_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1581:9:4","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1592:7:4","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1604:6:4","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1612:6:4","type":""}],"src":"1536:407:4"},{"body":{"nodeType":"YulBlock","src":"2008:50:4","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2025:3:4"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2045:5:4"}],"functionName":{"name":"cleanup_t_bool","nodeType":"YulIdentifier","src":"2030:14:4"},"nodeType":"YulFunctionCall","src":"2030:21:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2018:6:4"},"nodeType":"YulFunctionCall","src":"2018:34:4"},"nodeType":"YulExpressionStatement","src":"2018:34:4"}]},"name":"abi_encode_t_bool_to_t_bool_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1996:5:4","type":""},{"name":"pos","nodeType":"YulTypedName","src":"2003:3:4","type":""}],"src":"1949:109:4"},{"body":{"nodeType":"YulBlock","src":"2156:272:4","statements":[{"nodeType":"YulVariableDeclaration","src":"2166:53:4","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2213:5:4"}],"functionName":{"name":"array_length_t_string_memory_ptr","nodeType":"YulIdentifier","src":"2180:32:4"},"nodeType":"YulFunctionCall","src":"2180:39:4"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"2170:6:4","type":""}]},{"nodeType":"YulAssignment","src":"2228:78:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2294:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"2299:6:4"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"2235:58:4"},"nodeType":"YulFunctionCall","src":"2235:71:4"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"2228:3:4"}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2341:5:4"},{"kind":"number","nodeType":"YulLiteral","src":"2348:4:4","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2337:3:4"},"nodeType":"YulFunctionCall","src":"2337:16:4"},{"name":"pos","nodeType":"YulIdentifier","src":"2355:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"2360:6:4"}],"functionName":{"name":"copy_memory_to_memory","nodeType":"YulIdentifier","src":"2315:21:4"},"nodeType":"YulFunctionCall","src":"2315:52:4"},"nodeType":"YulExpressionStatement","src":"2315:52:4"},{"nodeType":"YulAssignment","src":"2376:46:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2387:3:4"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"2414:6:4"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"2392:21:4"},"nodeType":"YulFunctionCall","src":"2392:29:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2383:3:4"},"nodeType":"YulFunctionCall","src":"2383:39:4"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"2376:3:4"}]}]},"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"2137:5:4","type":""},{"name":"pos","nodeType":"YulTypedName","src":"2144:3:4","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"2152:3:4","type":""}],"src":"2064:364:4"},{"body":{"nodeType":"YulBlock","src":"2580:220:4","statements":[{"nodeType":"YulAssignment","src":"2590:74:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2656:3:4"},{"kind":"number","nodeType":"YulLiteral","src":"2661:2:4","type":"","value":"22"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"2597:58:4"},"nodeType":"YulFunctionCall","src":"2597:67:4"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"2590:3:4"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2762:3:4"}],"functionName":{"name":"store_literal_in_memory_45e3d26e36c3151c7f92a1eee9add9658cbb8e14605ee2452ec007389b9744bc","nodeType":"YulIdentifier","src":"2673:88:4"},"nodeType":"YulFunctionCall","src":"2673:93:4"},"nodeType":"YulExpressionStatement","src":"2673:93:4"},{"nodeType":"YulAssignment","src":"2775:19:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2786:3:4"},{"kind":"number","nodeType":"YulLiteral","src":"2791:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2782:3:4"},"nodeType":"YulFunctionCall","src":"2782:12:4"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"2775:3:4"}]}]},"name":"abi_encode_t_stringliteral_45e3d26e36c3151c7f92a1eee9add9658cbb8e14605ee2452ec007389b9744bc_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"2568:3:4","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"2576:3:4","type":""}],"src":"2434:366:4"},{"body":{"nodeType":"YulBlock","src":"2952:220:4","statements":[{"nodeType":"YulAssignment","src":"2962:74:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3028:3:4"},{"kind":"number","nodeType":"YulLiteral","src":"3033:2:4","type":"","value":"25"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"2969:58:4"},"nodeType":"YulFunctionCall","src":"2969:67:4"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"2962:3:4"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3134:3:4"}],"functionName":{"name":"store_literal_in_memory_4ca3cd75a1831a94a24913bfd2c9b9d35acbb11ac3447f65bb0682cf14f63f5c","nodeType":"YulIdentifier","src":"3045:88:4"},"nodeType":"YulFunctionCall","src":"3045:93:4"},"nodeType":"YulExpressionStatement","src":"3045:93:4"},{"nodeType":"YulAssignment","src":"3147:19:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3158:3:4"},{"kind":"number","nodeType":"YulLiteral","src":"3163:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3154:3:4"},"nodeType":"YulFunctionCall","src":"3154:12:4"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"3147:3:4"}]}]},"name":"abi_encode_t_stringliteral_4ca3cd75a1831a94a24913bfd2c9b9d35acbb11ac3447f65bb0682cf14f63f5c_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"2940:3:4","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"2948:3:4","type":""}],"src":"2806:366:4"},{"body":{"nodeType":"YulBlock","src":"3243:53:4","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3260:3:4"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3283:5:4"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"3265:17:4"},"nodeType":"YulFunctionCall","src":"3265:24:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3253:6:4"},"nodeType":"YulFunctionCall","src":"3253:37:4"},"nodeType":"YulExpressionStatement","src":"3253:37:4"}]},"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"3231:5:4","type":""},{"name":"pos","nodeType":"YulTypedName","src":"3238:3:4","type":""}],"src":"3178:118:4"},{"body":{"nodeType":"YulBlock","src":"3394:118:4","statements":[{"nodeType":"YulAssignment","src":"3404:26:4","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3416:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"3427:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3412:3:4"},"nodeType":"YulFunctionCall","src":"3412:18:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3404:4:4"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3478:6:4"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3491:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"3502:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3487:3:4"},"nodeType":"YulFunctionCall","src":"3487:17:4"}],"functionName":{"name":"abi_encode_t_bool_to_t_bool_fromStack","nodeType":"YulIdentifier","src":"3440:37:4"},"nodeType":"YulFunctionCall","src":"3440:65:4"},"nodeType":"YulExpressionStatement","src":"3440:65:4"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3366:9:4","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3378:6:4","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3389:4:4","type":""}],"src":"3302:210:4"},{"body":{"nodeType":"YulBlock","src":"3636:195:4","statements":[{"nodeType":"YulAssignment","src":"3646:26:4","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3658:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"3669:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3654:3:4"},"nodeType":"YulFunctionCall","src":"3654:18:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3646:4:4"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3693:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"3704:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3689:3:4"},"nodeType":"YulFunctionCall","src":"3689:17:4"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"3712:4:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"3718:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3708:3:4"},"nodeType":"YulFunctionCall","src":"3708:20:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3682:6:4"},"nodeType":"YulFunctionCall","src":"3682:47:4"},"nodeType":"YulExpressionStatement","src":"3682:47:4"},{"nodeType":"YulAssignment","src":"3738:86:4","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3810:6:4"},{"name":"tail","nodeType":"YulIdentifier","src":"3819:4:4"}],"functionName":{"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"3746:63:4"},"nodeType":"YulFunctionCall","src":"3746:78:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3738:4:4"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3608:9:4","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3620:6:4","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3631:4:4","type":""}],"src":"3518:313:4"},{"body":{"nodeType":"YulBlock","src":"4008:248:4","statements":[{"nodeType":"YulAssignment","src":"4018:26:4","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4030:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"4041:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4026:3:4"},"nodeType":"YulFunctionCall","src":"4026:18:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4018:4:4"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4065:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"4076:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4061:3:4"},"nodeType":"YulFunctionCall","src":"4061:17:4"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"4084:4:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"4090:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4080:3:4"},"nodeType":"YulFunctionCall","src":"4080:20:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4054:6:4"},"nodeType":"YulFunctionCall","src":"4054:47:4"},"nodeType":"YulExpressionStatement","src":"4054:47:4"},{"nodeType":"YulAssignment","src":"4110:139:4","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"4244:4:4"}],"functionName":{"name":"abi_encode_t_stringliteral_45e3d26e36c3151c7f92a1eee9add9658cbb8e14605ee2452ec007389b9744bc_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"4118:124:4"},"nodeType":"YulFunctionCall","src":"4118:131:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4110:4:4"}]}]},"name":"abi_encode_tuple_t_stringliteral_45e3d26e36c3151c7f92a1eee9add9658cbb8e14605ee2452ec007389b9744bc__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3988:9:4","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4003:4:4","type":""}],"src":"3837:419:4"},{"body":{"nodeType":"YulBlock","src":"4433:248:4","statements":[{"nodeType":"YulAssignment","src":"4443:26:4","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4455:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"4466:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4451:3:4"},"nodeType":"YulFunctionCall","src":"4451:18:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4443:4:4"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4490:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"4501:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4486:3:4"},"nodeType":"YulFunctionCall","src":"4486:17:4"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"4509:4:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"4515:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4505:3:4"},"nodeType":"YulFunctionCall","src":"4505:20:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4479:6:4"},"nodeType":"YulFunctionCall","src":"4479:47:4"},"nodeType":"YulExpressionStatement","src":"4479:47:4"},{"nodeType":"YulAssignment","src":"4535:139:4","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"4669:4:4"}],"functionName":{"name":"abi_encode_t_stringliteral_4ca3cd75a1831a94a24913bfd2c9b9d35acbb11ac3447f65bb0682cf14f63f5c_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"4543:124:4"},"nodeType":"YulFunctionCall","src":"4543:131:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4535:4:4"}]}]},"name":"abi_encode_tuple_t_stringliteral_4ca3cd75a1831a94a24913bfd2c9b9d35acbb11ac3447f65bb0682cf14f63f5c__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4413:9:4","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4428:4:4","type":""}],"src":"4262:419:4"},{"body":{"nodeType":"YulBlock","src":"4785:124:4","statements":[{"nodeType":"YulAssignment","src":"4795:26:4","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4807:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"4818:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4803:3:4"},"nodeType":"YulFunctionCall","src":"4803:18:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4795:4:4"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4875:6:4"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4888:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"4899:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4884:3:4"},"nodeType":"YulFunctionCall","src":"4884:17:4"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"4831:43:4"},"nodeType":"YulFunctionCall","src":"4831:71:4"},"nodeType":"YulExpressionStatement","src":"4831:71:4"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4757:9:4","type":""},{"name":"value0","nodeType":"YulTypedName","src":"4769:6:4","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4780:4:4","type":""}],"src":"4687:222:4"},{"body":{"nodeType":"YulBlock","src":"4974:40:4","statements":[{"nodeType":"YulAssignment","src":"4985:22:4","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5001:5:4"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4995:5:4"},"nodeType":"YulFunctionCall","src":"4995:12:4"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"4985:6:4"}]}]},"name":"array_length_t_string_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"4957:5:4","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"4967:6:4","type":""}],"src":"4915:99:4"},{"body":{"nodeType":"YulBlock","src":"5116:73:4","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5133:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"5138:6:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5126:6:4"},"nodeType":"YulFunctionCall","src":"5126:19:4"},"nodeType":"YulExpressionStatement","src":"5126:19:4"},{"nodeType":"YulAssignment","src":"5154:29:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5173:3:4"},{"kind":"number","nodeType":"YulLiteral","src":"5178:4:4","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5169:3:4"},"nodeType":"YulFunctionCall","src":"5169:14:4"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"5154:11:4"}]}]},"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"5088:3:4","type":""},{"name":"length","nodeType":"YulTypedName","src":"5093:6:4","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"5104:11:4","type":""}],"src":"5020:169:4"},{"body":{"nodeType":"YulBlock","src":"5239:261:4","statements":[{"nodeType":"YulAssignment","src":"5249:25:4","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"5272:1:4"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"5254:17:4"},"nodeType":"YulFunctionCall","src":"5254:20:4"},"variableNames":[{"name":"x","nodeType":"YulIdentifier","src":"5249:1:4"}]},{"nodeType":"YulAssignment","src":"5283:25:4","value":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"5306:1:4"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"5288:17:4"},"nodeType":"YulFunctionCall","src":"5288:20:4"},"variableNames":[{"name":"y","nodeType":"YulIdentifier","src":"5283:1:4"}]},{"body":{"nodeType":"YulBlock","src":"5446:22:4","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"5448:16:4"},"nodeType":"YulFunctionCall","src":"5448:18:4"},"nodeType":"YulExpressionStatement","src":"5448:18:4"}]},"condition":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"5367:1:4"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5374:66:4","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"},{"name":"y","nodeType":"YulIdentifier","src":"5442:1:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5370:3:4"},"nodeType":"YulFunctionCall","src":"5370:74:4"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5364:2:4"},"nodeType":"YulFunctionCall","src":"5364:81:4"},"nodeType":"YulIf","src":"5361:2:4"},{"nodeType":"YulAssignment","src":"5478:16:4","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"5489:1:4"},{"name":"y","nodeType":"YulIdentifier","src":"5492:1:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5485:3:4"},"nodeType":"YulFunctionCall","src":"5485:9:4"},"variableNames":[{"name":"sum","nodeType":"YulIdentifier","src":"5478:3:4"}]}]},"name":"checked_add_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"5226:1:4","type":""},{"name":"y","nodeType":"YulTypedName","src":"5229:1:4","type":""}],"returnVariables":[{"name":"sum","nodeType":"YulTypedName","src":"5235:3:4","type":""}],"src":"5195:305:4"},{"body":{"nodeType":"YulBlock","src":"5551:146:4","statements":[{"nodeType":"YulAssignment","src":"5561:25:4","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"5584:1:4"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"5566:17:4"},"nodeType":"YulFunctionCall","src":"5566:20:4"},"variableNames":[{"name":"x","nodeType":"YulIdentifier","src":"5561:1:4"}]},{"nodeType":"YulAssignment","src":"5595:25:4","value":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"5618:1:4"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"5600:17:4"},"nodeType":"YulFunctionCall","src":"5600:20:4"},"variableNames":[{"name":"y","nodeType":"YulIdentifier","src":"5595:1:4"}]},{"body":{"nodeType":"YulBlock","src":"5642:22:4","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"5644:16:4"},"nodeType":"YulFunctionCall","src":"5644:18:4"},"nodeType":"YulExpressionStatement","src":"5644:18:4"}]},"condition":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"5636:1:4"},{"name":"y","nodeType":"YulIdentifier","src":"5639:1:4"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"5633:2:4"},"nodeType":"YulFunctionCall","src":"5633:8:4"},"nodeType":"YulIf","src":"5630:2:4"},{"nodeType":"YulAssignment","src":"5674:17:4","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"5686:1:4"},{"name":"y","nodeType":"YulIdentifier","src":"5689:1:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5682:3:4"},"nodeType":"YulFunctionCall","src":"5682:9:4"},"variableNames":[{"name":"diff","nodeType":"YulIdentifier","src":"5674:4:4"}]}]},"name":"checked_sub_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"5537:1:4","type":""},{"name":"y","nodeType":"YulTypedName","src":"5540:1:4","type":""}],"returnVariables":[{"name":"diff","nodeType":"YulTypedName","src":"5546:4:4","type":""}],"src":"5506:191:4"},{"body":{"nodeType":"YulBlock","src":"5748:51:4","statements":[{"nodeType":"YulAssignment","src":"5758:35:4","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5787:5:4"}],"functionName":{"name":"cleanup_t_uint160","nodeType":"YulIdentifier","src":"5769:17:4"},"nodeType":"YulFunctionCall","src":"5769:24:4"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"5758:7:4"}]}]},"name":"cleanup_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"5730:5:4","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"5740:7:4","type":""}],"src":"5703:96:4"},{"body":{"nodeType":"YulBlock","src":"5847:48:4","statements":[{"nodeType":"YulAssignment","src":"5857:32:4","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5882:5:4"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"5875:6:4"},"nodeType":"YulFunctionCall","src":"5875:13:4"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"5868:6:4"},"nodeType":"YulFunctionCall","src":"5868:21:4"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"5857:7:4"}]}]},"name":"cleanup_t_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"5829:5:4","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"5839:7:4","type":""}],"src":"5805:90:4"},{"body":{"nodeType":"YulBlock","src":"5946:81:4","statements":[{"nodeType":"YulAssignment","src":"5956:65:4","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5971:5:4"},{"kind":"number","nodeType":"YulLiteral","src":"5978:42:4","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5967:3:4"},"nodeType":"YulFunctionCall","src":"5967:54:4"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"5956:7:4"}]}]},"name":"cleanup_t_uint160","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"5928:5:4","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"5938:7:4","type":""}],"src":"5901:126:4"},{"body":{"nodeType":"YulBlock","src":"6078:32:4","statements":[{"nodeType":"YulAssignment","src":"6088:16:4","value":{"name":"value","nodeType":"YulIdentifier","src":"6099:5:4"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"6088:7:4"}]}]},"name":"cleanup_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"6060:5:4","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"6070:7:4","type":""}],"src":"6033:77:4"},{"body":{"nodeType":"YulBlock","src":"6165:258:4","statements":[{"nodeType":"YulVariableDeclaration","src":"6175:10:4","value":{"kind":"number","nodeType":"YulLiteral","src":"6184:1:4","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"6179:1:4","type":""}]},{"body":{"nodeType":"YulBlock","src":"6244:63:4","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"6269:3:4"},{"name":"i","nodeType":"YulIdentifier","src":"6274:1:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6265:3:4"},"nodeType":"YulFunctionCall","src":"6265:11:4"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"6288:3:4"},{"name":"i","nodeType":"YulIdentifier","src":"6293:1:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6284:3:4"},"nodeType":"YulFunctionCall","src":"6284:11:4"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6278:5:4"},"nodeType":"YulFunctionCall","src":"6278:18:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6258:6:4"},"nodeType":"YulFunctionCall","src":"6258:39:4"},"nodeType":"YulExpressionStatement","src":"6258:39:4"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"6205:1:4"},{"name":"length","nodeType":"YulIdentifier","src":"6208:6:4"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"6202:2:4"},"nodeType":"YulFunctionCall","src":"6202:13:4"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"6216:19:4","statements":[{"nodeType":"YulAssignment","src":"6218:15:4","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"6227:1:4"},{"kind":"number","nodeType":"YulLiteral","src":"6230:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6223:3:4"},"nodeType":"YulFunctionCall","src":"6223:10:4"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"6218:1:4"}]}]},"pre":{"nodeType":"YulBlock","src":"6198:3:4","statements":[]},"src":"6194:113:4"},{"body":{"nodeType":"YulBlock","src":"6341:76:4","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"6391:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"6396:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6387:3:4"},"nodeType":"YulFunctionCall","src":"6387:16:4"},{"kind":"number","nodeType":"YulLiteral","src":"6405:1:4","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6380:6:4"},"nodeType":"YulFunctionCall","src":"6380:27:4"},"nodeType":"YulExpressionStatement","src":"6380:27:4"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"6322:1:4"},{"name":"length","nodeType":"YulIdentifier","src":"6325:6:4"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"6319:2:4"},"nodeType":"YulFunctionCall","src":"6319:13:4"},"nodeType":"YulIf","src":"6316:2:4"}]},"name":"copy_memory_to_memory","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"6147:3:4","type":""},{"name":"dst","nodeType":"YulTypedName","src":"6152:3:4","type":""},{"name":"length","nodeType":"YulTypedName","src":"6157:6:4","type":""}],"src":"6116:307:4"},{"body":{"nodeType":"YulBlock","src":"6480:269:4","statements":[{"nodeType":"YulAssignment","src":"6490:22:4","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"6504:4:4"},{"kind":"number","nodeType":"YulLiteral","src":"6510:1:4","type":"","value":"2"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"6500:3:4"},"nodeType":"YulFunctionCall","src":"6500:12:4"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"6490:6:4"}]},{"nodeType":"YulVariableDeclaration","src":"6521:38:4","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"6551:4:4"},{"kind":"number","nodeType":"YulLiteral","src":"6557:1:4","type":"","value":"1"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"6547:3:4"},"nodeType":"YulFunctionCall","src":"6547:12:4"},"variables":[{"name":"outOfPlaceEncoding","nodeType":"YulTypedName","src":"6525:18:4","type":""}]},{"body":{"nodeType":"YulBlock","src":"6598:51:4","statements":[{"nodeType":"YulAssignment","src":"6612:27:4","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"6626:6:4"},{"kind":"number","nodeType":"YulLiteral","src":"6634:4:4","type":"","value":"0x7f"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"6622:3:4"},"nodeType":"YulFunctionCall","src":"6622:17:4"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"6612:6:4"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"6578:18:4"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"6571:6:4"},"nodeType":"YulFunctionCall","src":"6571:26:4"},"nodeType":"YulIf","src":"6568:2:4"},{"body":{"nodeType":"YulBlock","src":"6701:42:4","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x22","nodeType":"YulIdentifier","src":"6715:16:4"},"nodeType":"YulFunctionCall","src":"6715:18:4"},"nodeType":"YulExpressionStatement","src":"6715:18:4"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"6665:18:4"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"6688:6:4"},{"kind":"number","nodeType":"YulLiteral","src":"6696:2:4","type":"","value":"32"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"6685:2:4"},"nodeType":"YulFunctionCall","src":"6685:14:4"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"6662:2:4"},"nodeType":"YulFunctionCall","src":"6662:38:4"},"nodeType":"YulIf","src":"6659:2:4"}]},"name":"extract_byte_array_length","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"6464:4:4","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"6473:6:4","type":""}],"src":"6429:320:4"},{"body":{"nodeType":"YulBlock","src":"6783:152:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6800:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6803:77:4","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6793:6:4"},"nodeType":"YulFunctionCall","src":"6793:88:4"},"nodeType":"YulExpressionStatement","src":"6793:88:4"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6897:1:4","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"6900:4:4","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6890:6:4"},"nodeType":"YulFunctionCall","src":"6890:15:4"},"nodeType":"YulExpressionStatement","src":"6890:15:4"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6921:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6924:4:4","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6914:6:4"},"nodeType":"YulFunctionCall","src":"6914:15:4"},"nodeType":"YulExpressionStatement","src":"6914:15:4"}]},"name":"panic_error_0x11","nodeType":"YulFunctionDefinition","src":"6755:180:4"},{"body":{"nodeType":"YulBlock","src":"6969:152:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6986:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6989:77:4","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6979:6:4"},"nodeType":"YulFunctionCall","src":"6979:88:4"},"nodeType":"YulExpressionStatement","src":"6979:88:4"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7083:1:4","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"7086:4:4","type":"","value":"0x22"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7076:6:4"},"nodeType":"YulFunctionCall","src":"7076:15:4"},"nodeType":"YulExpressionStatement","src":"7076:15:4"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7107:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7110:4:4","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7100:6:4"},"nodeType":"YulFunctionCall","src":"7100:15:4"},"nodeType":"YulExpressionStatement","src":"7100:15:4"}]},"name":"panic_error_0x22","nodeType":"YulFunctionDefinition","src":"6941:180:4"},{"body":{"nodeType":"YulBlock","src":"7175:54:4","statements":[{"nodeType":"YulAssignment","src":"7185:38:4","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"7203:5:4"},{"kind":"number","nodeType":"YulLiteral","src":"7210:2:4","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7199:3:4"},"nodeType":"YulFunctionCall","src":"7199:14:4"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7219:2:4","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"7215:3:4"},"nodeType":"YulFunctionCall","src":"7215:7:4"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7195:3:4"},"nodeType":"YulFunctionCall","src":"7195:28:4"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"7185:6:4"}]}]},"name":"round_up_to_mul_of_32","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"7158:5:4","type":""}],"returnVariables":[{"name":"result","nodeType":"YulTypedName","src":"7168:6:4","type":""}],"src":"7127:102:4"},{"body":{"nodeType":"YulBlock","src":"7341:66:4","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7363:6:4"},{"kind":"number","nodeType":"YulLiteral","src":"7371:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7359:3:4"},"nodeType":"YulFunctionCall","src":"7359:14:4"},{"kind":"string","nodeType":"YulLiteral","src":"7375:24:4","type":"","value":"Insufficient allowance"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7352:6:4"},"nodeType":"YulFunctionCall","src":"7352:48:4"},"nodeType":"YulExpressionStatement","src":"7352:48:4"}]},"name":"store_literal_in_memory_45e3d26e36c3151c7f92a1eee9add9658cbb8e14605ee2452ec007389b9744bc","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"7333:6:4","type":""}],"src":"7235:172:4"},{"body":{"nodeType":"YulBlock","src":"7519:69:4","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7541:6:4"},{"kind":"number","nodeType":"YulLiteral","src":"7549:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7537:3:4"},"nodeType":"YulFunctionCall","src":"7537:14:4"},{"kind":"string","nodeType":"YulLiteral","src":"7553:27:4","type":"","value":"Transferred value is zero"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7530:6:4"},"nodeType":"YulFunctionCall","src":"7530:51:4"},"nodeType":"YulExpressionStatement","src":"7530:51:4"}]},"name":"store_literal_in_memory_4ca3cd75a1831a94a24913bfd2c9b9d35acbb11ac3447f65bb0682cf14f63f5c","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"7511:6:4","type":""}],"src":"7413:175:4"},{"body":{"nodeType":"YulBlock","src":"7637:79:4","statements":[{"body":{"nodeType":"YulBlock","src":"7694:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7703:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7706:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7696:6:4"},"nodeType":"YulFunctionCall","src":"7696:12:4"},"nodeType":"YulExpressionStatement","src":"7696:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"7660:5:4"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"7685:5:4"}],"functionName":{"name":"cleanup_t_address","nodeType":"YulIdentifier","src":"7667:17:4"},"nodeType":"YulFunctionCall","src":"7667:24:4"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"7657:2:4"},"nodeType":"YulFunctionCall","src":"7657:35:4"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"7650:6:4"},"nodeType":"YulFunctionCall","src":"7650:43:4"},"nodeType":"YulIf","src":"7647:2:4"}]},"name":"validator_revert_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"7630:5:4","type":""}],"src":"7594:122:4"},{"body":{"nodeType":"YulBlock","src":"7765:79:4","statements":[{"body":{"nodeType":"YulBlock","src":"7822:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7831:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7834:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7824:6:4"},"nodeType":"YulFunctionCall","src":"7824:12:4"},"nodeType":"YulExpressionStatement","src":"7824:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"7788:5:4"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"7813:5:4"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"7795:17:4"},"nodeType":"YulFunctionCall","src":"7795:24:4"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"7785:2:4"},"nodeType":"YulFunctionCall","src":"7785:35:4"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"7778:6:4"},"nodeType":"YulFunctionCall","src":"7778:43:4"},"nodeType":"YulIf","src":"7775:2:4"}]},"name":"validator_revert_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"7758:5:4","type":""}],"src":"7722:122:4"}]},"contents":"{\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_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_addresst_address(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(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2 {\n if slt(sub(dataEnd, headStart), 96) { 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 let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_addresst_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(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_encode_t_bool_to_t_bool_fromStack(value, pos) {\n mstore(pos, cleanup_t_bool(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_45e3d26e36c3151c7f92a1eee9add9658cbb8e14605ee2452ec007389b9744bc_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 22)\n store_literal_in_memory_45e3d26e36c3151c7f92a1eee9add9658cbb8e14605ee2452ec007389b9744bc(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_t_stringliteral_4ca3cd75a1831a94a24913bfd2c9b9d35acbb11ac3447f65bb0682cf14f63f5c_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 25)\n store_literal_in_memory_4ca3cd75a1831a94a24913bfd2c9b9d35acbb11ac3447f65bb0682cf14f63f5c(pos)\n end := add(pos, 32)\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_bool__to_t_bool__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_bool_to_t_bool_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_45e3d26e36c3151c7f92a1eee9add9658cbb8e14605ee2452ec007389b9744bc__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_45e3d26e36c3151c7f92a1eee9add9658cbb8e14605ee2452ec007389b9744bc_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function abi_encode_tuple_t_stringliteral_4ca3cd75a1831a94a24913bfd2c9b9d35acbb11ac3447f65bb0682cf14f63f5c__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_4ca3cd75a1831a94a24913bfd2c9b9d35acbb11ac3447f65bb0682cf14f63f5c_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 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_bool(value) -> cleaned {\n cleaned := iszero(iszero(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_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 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 round_up_to_mul_of_32(value) -> result {\n result := and(add(value, 31), not(31))\n }\n\n function store_literal_in_memory_45e3d26e36c3151c7f92a1eee9add9658cbb8e14605ee2452ec007389b9744bc(memPtr) {\n\n mstore(add(memPtr, 0), \"Insufficient allowance\")\n\n }\n\n function store_literal_in_memory_4ca3cd75a1831a94a24913bfd2c9b9d35acbb11ac3447f65bb0682cf14f63f5c(memPtr) {\n\n mstore(add(memPtr, 0), \"Transferred value is zero\")\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_uint256(value) {\n if iszero(eq(value, cleanup_t_uint256(value))) { revert(0, 0) }\n }\n\n}\n","id":4,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100935760003560e01c8063313ce56711610066578063313ce5671461013457806370a082311461015257806395d89b4114610182578063a9059cbb146101a0578063dd62ed3e146101d057610093565b806306fdde0314610098578063095ea7b3146100b657806318160ddd146100e657806323b872dd14610104575b600080fd5b6100a0610200565b6040516100ad91906108b8565b60405180910390f35b6100d060048036038101906100cb91906107c4565b61028e565b6040516100dd919061089d565b60405180910390f35b6100ee61031b565b6040516100fb919061091a565b60405180910390f35b61011e60048036038101906101199190610775565b610321565b60405161012b919061089d565b60405180910390f35b61013c6104b9565b604051610149919061091a565b60405180910390f35b61016c60048036038101906101679190610710565b6104bf565b604051610179919061091a565b60405180910390f35b61018a6104d7565b60405161019791906108b8565b60405180910390f35b6101ba60048036038101906101b591906107c4565b610565565b6040516101c7919061089d565b60405180910390f35b6101ea60048036038101906101e59190610739565b61065f565b6040516101f7919061091a565b60405180910390f35b6004805461020d90610a56565b80601f016020809104026020016040519081016040528092919081815260200182805461023990610a56565b80156102865780601f1061025b57610100808354040283529160200191610286565b820191906000526020600020905b81548152906001019060200180831161026957829003601f168201915b505050505081565b600081600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001905092915050565b60015481565b60008161032e853361065f565b101561036f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610366906108da565b60405180910390fd5b81600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546103fb91906109a7565b9250508190555081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461045191906109a7565b9250508190555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546104a79190610951565b92505081905550600190509392505050565b60005481565b60026020528060005260406000206000915090505481565b600580546104e490610a56565b80601f016020809104026020016040519081016040528092919081815260200182805461051090610a56565b801561055d5780601f106105325761010080835404028352916020019161055d565b820191906000526020600020905b81548152906001019060200180831161054057829003601f168201915b505050505081565b60008082116105a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105a0906108fa565b60405180910390fd5b81600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546105f891906109a7565b9250508190555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461064e9190610951565b925050819055506001905092915050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000813590506106f581610b49565b92915050565b60008135905061070a81610b60565b92915050565b60006020828403121561072257600080fd5b6000610730848285016106e6565b91505092915050565b6000806040838503121561074c57600080fd5b600061075a858286016106e6565b925050602061076b858286016106e6565b9150509250929050565b60008060006060848603121561078a57600080fd5b6000610798868287016106e6565b93505060206107a9868287016106e6565b92505060406107ba868287016106fb565b9150509250925092565b600080604083850312156107d757600080fd5b60006107e5858286016106e6565b92505060206107f6858286016106fb565b9150509250929050565b610809816109ed565b82525050565b600061081a82610935565b6108248185610940565b9350610834818560208601610a23565b61083d81610ae6565b840191505092915050565b6000610855601683610940565b915061086082610af7565b602082019050919050565b6000610878601983610940565b915061088382610b20565b602082019050919050565b61089781610a19565b82525050565b60006020820190506108b26000830184610800565b92915050565b600060208201905081810360008301526108d2818461080f565b905092915050565b600060208201905081810360008301526108f381610848565b9050919050565b600060208201905081810360008301526109138161086b565b9050919050565b600060208201905061092f600083018461088e565b92915050565b600081519050919050565b600082825260208201905092915050565b600061095c82610a19565b915061096783610a19565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561099c5761099b610a88565b5b828201905092915050565b60006109b282610a19565b91506109bd83610a19565b9250828210156109d0576109cf610a88565b5b828203905092915050565b60006109e6826109f9565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b83811015610a41578082015181840152602081019050610a26565b83811115610a50576000848401525b50505050565b60006002820490506001821680610a6e57607f821691505b60208210811415610a8257610a81610ab7565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f496e73756666696369656e7420616c6c6f77616e636500000000000000000000600082015250565b7f5472616e736665727265642076616c7565206973207a65726f00000000000000600082015250565b610b52816109db565b8114610b5d57600080fd5b50565b610b6981610a19565b8114610b7457600080fd5b5056fea26469706673582212208ce961870c9d6cd505270df5da0c70d49a8f6cb7e04d5a03b16637783be136e764736f6c63430008040033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x93 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x313CE567 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x134 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x152 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x182 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x1A0 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x1D0 JUMPI PUSH2 0x93 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x98 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0xB6 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0xE6 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x104 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA0 PUSH2 0x200 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xAD SWAP2 SWAP1 PUSH2 0x8B8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xD0 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xCB SWAP2 SWAP1 PUSH2 0x7C4 JUMP JUMPDEST PUSH2 0x28E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xDD SWAP2 SWAP1 PUSH2 0x89D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xEE PUSH2 0x31B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xFB SWAP2 SWAP1 PUSH2 0x91A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x11E PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x119 SWAP2 SWAP1 PUSH2 0x775 JUMP JUMPDEST PUSH2 0x321 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x12B SWAP2 SWAP1 PUSH2 0x89D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x13C PUSH2 0x4B9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x149 SWAP2 SWAP1 PUSH2 0x91A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x16C PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x167 SWAP2 SWAP1 PUSH2 0x710 JUMP JUMPDEST PUSH2 0x4BF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x179 SWAP2 SWAP1 PUSH2 0x91A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x18A PUSH2 0x4D7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x197 SWAP2 SWAP1 PUSH2 0x8B8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1BA PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1B5 SWAP2 SWAP1 PUSH2 0x7C4 JUMP JUMPDEST PUSH2 0x565 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1C7 SWAP2 SWAP1 PUSH2 0x89D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1EA PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1E5 SWAP2 SWAP1 PUSH2 0x739 JUMP JUMPDEST PUSH2 0x65F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1F7 SWAP2 SWAP1 PUSH2 0x91A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH2 0x20D SWAP1 PUSH2 0xA56 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 0x239 SWAP1 PUSH2 0xA56 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x286 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x25B JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x286 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 0x269 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x3 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 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP PUSH1 0x1 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x32E DUP6 CALLER PUSH2 0x65F JUMP JUMPDEST LT ISZERO PUSH2 0x36F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x366 SWAP1 PUSH2 0x8DA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 PUSH1 0x3 PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 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 0x3FB SWAP2 SWAP1 PUSH2 0x9A7 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x2 PUSH1 0x0 DUP7 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 0x451 SWAP2 SWAP1 PUSH2 0x9A7 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x2 PUSH1 0x0 DUP6 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 0x4A7 SWAP2 SWAP1 PUSH2 0x951 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH1 0x1 SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD 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 0x5 DUP1 SLOAD PUSH2 0x4E4 SWAP1 PUSH2 0xA56 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 0x510 SWAP1 PUSH2 0xA56 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x55D JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x532 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x55D 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 0x540 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 GT PUSH2 0x5A9 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5A0 SWAP1 PUSH2 0x8FA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 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 0x5F8 SWAP2 SWAP1 PUSH2 0x9A7 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x2 PUSH1 0x0 DUP6 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 0x64E SWAP2 SWAP1 PUSH2 0x951 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH1 0x1 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x3 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x6F5 DUP2 PUSH2 0xB49 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x70A DUP2 PUSH2 0xB60 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x722 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x730 DUP5 DUP3 DUP6 ADD PUSH2 0x6E6 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x74C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x75A DUP6 DUP3 DUP7 ADD PUSH2 0x6E6 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x76B DUP6 DUP3 DUP7 ADD PUSH2 0x6E6 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x78A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x798 DUP7 DUP3 DUP8 ADD PUSH2 0x6E6 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x7A9 DUP7 DUP3 DUP8 ADD PUSH2 0x6E6 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x7BA DUP7 DUP3 DUP8 ADD PUSH2 0x6FB JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x7D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x7E5 DUP6 DUP3 DUP7 ADD PUSH2 0x6E6 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x7F6 DUP6 DUP3 DUP7 ADD PUSH2 0x6FB JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH2 0x809 DUP2 PUSH2 0x9ED JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x81A DUP3 PUSH2 0x935 JUMP JUMPDEST PUSH2 0x824 DUP2 DUP6 PUSH2 0x940 JUMP JUMPDEST SWAP4 POP PUSH2 0x834 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0xA23 JUMP JUMPDEST PUSH2 0x83D DUP2 PUSH2 0xAE6 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x855 PUSH1 0x16 DUP4 PUSH2 0x940 JUMP JUMPDEST SWAP2 POP PUSH2 0x860 DUP3 PUSH2 0xAF7 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x878 PUSH1 0x19 DUP4 PUSH2 0x940 JUMP JUMPDEST SWAP2 POP PUSH2 0x883 DUP3 PUSH2 0xB20 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x897 DUP2 PUSH2 0xA19 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x8B2 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x800 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 0x8D2 DUP2 DUP5 PUSH2 0x80F 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 0x8F3 DUP2 PUSH2 0x848 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 0x913 DUP2 PUSH2 0x86B JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x92F PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x88E JUMP JUMPDEST SWAP3 SWAP2 POP 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 0x95C DUP3 PUSH2 0xA19 JUMP JUMPDEST SWAP2 POP PUSH2 0x967 DUP4 PUSH2 0xA19 JUMP JUMPDEST SWAP3 POP DUP3 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SUB DUP3 GT ISZERO PUSH2 0x99C JUMPI PUSH2 0x99B PUSH2 0xA88 JUMP JUMPDEST JUMPDEST DUP3 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9B2 DUP3 PUSH2 0xA19 JUMP JUMPDEST SWAP2 POP PUSH2 0x9BD DUP4 PUSH2 0xA19 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 LT ISZERO PUSH2 0x9D0 JUMPI PUSH2 0x9CF PUSH2 0xA88 JUMP JUMPDEST JUMPDEST DUP3 DUP3 SUB SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9E6 DUP3 PUSH2 0x9F9 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO ISZERO 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 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xA41 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0xA26 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0xA50 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 0xA6E JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 EQ ISZERO PUSH2 0xA82 JUMPI PUSH2 0xA81 PUSH2 0xAB7 JUMP JUMPDEST JUMPDEST POP SWAP2 SWAP1 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 PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x496E73756666696369656E7420616C6C6F77616E636500000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH32 0x5472616E736665727265642076616C7565206973207A65726F00000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH2 0xB52 DUP2 PUSH2 0x9DB JUMP JUMPDEST DUP2 EQ PUSH2 0xB5D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0xB69 DUP2 PUSH2 0xA19 JUMP JUMPDEST DUP2 EQ PUSH2 0xB74 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP13 0xE9 PUSH2 0x870C SWAP14 PUSH13 0xD505270DF5DA0C70D49A8F6CB7 0xE0 0x4D GAS SUB 0xB1 PUSH7 0x37783BE136E764 PUSH20 0x6F6C634300080400330000000000000000000000 ","sourceMap":"1241:119:3:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1293:32;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;703:146;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;125:23;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;853:287;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;96:24;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;152:41;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1329:28;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;355:205;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;564:135;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1293:32;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;703:146::-;768:12;822:5;788:10;:22;799:10;788:22;;;;;;;;;;;;;;;:31;811:7;788:31;;;;;;;;;;;;;;;:39;;;;840:4;833:11;;703:146;;;;:::o;125:23::-;;;;:::o;853:287::-;932:4;983:5;952:27;962:4;968:10;952:9;:27::i;:::-;:36;;944:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;1054:5;1022:10;:16;1033:4;1022:16;;;;;;;;;;;;;;;:28;1039:10;1022:28;;;;;;;;;;;;;;;;:37;;;;;;;:::i;:::-;;;;;;;;1084:5;1065:9;:15;1075:4;1065:15;;;;;;;;;;;;;;;;:24;;;;;;;:::i;:::-;;;;;;;;1112:5;1095:9;:13;1105:2;1095:13;;;;;;;;;;;;;;;;:22;;;;;;;:::i;:::-;;;;;;;;1131:4;1124:11;;853:287;;;;;:::o;96:24::-;;;;:::o;152:41::-;;;;;;;;;;;;;;;;;:::o;1329:28::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;355:205::-;413:4;441:1;433:5;:9;425:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;504:5;479:9;:21;489:10;479:21;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;532:5;515:9;:13;525:2;515:13;;;;;;;;;;;;;;;;:22;;;;;;;:::i;:::-;;;;;;;;551:4;544:11;;355:205;;;;:::o;564:135::-;636:17;668:10;:17;679:5;668:17;;;;;;;;;;;;;;;:26;686:7;668:26;;;;;;;;;;;;;;;;661:33;;564:135;;;;:::o;7:139:4:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:139::-;198:5;236:6;223:20;214:29;;252:33;279:5;252:33;:::i;:::-;204:87;;;;:::o;297:262::-;356:6;405:2;393:9;384:7;380:23;376:32;373:2;;;421:1;418;411:12;373:2;464:1;489:53;534:7;525:6;514:9;510:22;489:53;:::i;:::-;479:63;;435:117;363:196;;;;:::o;565:407::-;633:6;641;690:2;678:9;669:7;665:23;661:32;658:2;;;706:1;703;696:12;658:2;749:1;774:53;819:7;810:6;799:9;795:22;774:53;:::i;:::-;764:63;;720:117;876:2;902:53;947:7;938:6;927:9;923:22;902:53;:::i;:::-;892:63;;847:118;648:324;;;;;:::o;978:552::-;1055:6;1063;1071;1120:2;1108:9;1099:7;1095:23;1091:32;1088:2;;;1136:1;1133;1126:12;1088:2;1179:1;1204:53;1249:7;1240:6;1229:9;1225:22;1204:53;:::i;:::-;1194:63;;1150:117;1306:2;1332:53;1377:7;1368:6;1357:9;1353:22;1332:53;:::i;:::-;1322:63;;1277:118;1434:2;1460:53;1505:7;1496:6;1485:9;1481:22;1460:53;:::i;:::-;1450:63;;1405:118;1078:452;;;;;:::o;1536:407::-;1604:6;1612;1661:2;1649:9;1640:7;1636:23;1632:32;1629:2;;;1677:1;1674;1667:12;1629:2;1720:1;1745:53;1790:7;1781:6;1770:9;1766:22;1745:53;:::i;:::-;1735:63;;1691:117;1847:2;1873:53;1918:7;1909:6;1898:9;1894:22;1873:53;:::i;:::-;1863:63;;1818:118;1619:324;;;;;:::o;1949:109::-;2030:21;2045:5;2030:21;:::i;:::-;2025:3;2018:34;2008:50;;:::o;2064:364::-;2152:3;2180:39;2213:5;2180:39;:::i;:::-;2235:71;2299:6;2294:3;2235:71;:::i;:::-;2228:78;;2315:52;2360:6;2355:3;2348:4;2341:5;2337:16;2315:52;:::i;:::-;2392:29;2414:6;2392:29;:::i;:::-;2387:3;2383:39;2376:46;;2156:272;;;;;:::o;2434:366::-;2576:3;2597:67;2661:2;2656:3;2597:67;:::i;:::-;2590:74;;2673:93;2762:3;2673:93;:::i;:::-;2791:2;2786:3;2782:12;2775:19;;2580:220;;;:::o;2806:366::-;2948:3;2969:67;3033:2;3028:3;2969:67;:::i;:::-;2962:74;;3045:93;3134:3;3045:93;:::i;:::-;3163:2;3158:3;3154:12;3147:19;;2952:220;;;:::o;3178:118::-;3265:24;3283:5;3265:24;:::i;:::-;3260:3;3253:37;3243:53;;:::o;3302:210::-;3389:4;3427:2;3416:9;3412:18;3404:26;;3440:65;3502:1;3491:9;3487:17;3478:6;3440:65;:::i;:::-;3394:118;;;;:::o;3518:313::-;3631:4;3669:2;3658:9;3654:18;3646:26;;3718:9;3712:4;3708:20;3704:1;3693:9;3689:17;3682:47;3746:78;3819:4;3810:6;3746:78;:::i;:::-;3738:86;;3636:195;;;;:::o;3837:419::-;4003:4;4041:2;4030:9;4026:18;4018:26;;4090:9;4084:4;4080:20;4076:1;4065:9;4061:17;4054:47;4118:131;4244:4;4118:131;:::i;:::-;4110:139;;4008:248;;;:::o;4262:419::-;4428:4;4466:2;4455:9;4451:18;4443:26;;4515:9;4509:4;4505:20;4501:1;4490:9;4486:17;4479:47;4543:131;4669:4;4543:131;:::i;:::-;4535:139;;4433:248;;;:::o;4687:222::-;4780:4;4818:2;4807:9;4803:18;4795:26;;4831:71;4899:1;4888:9;4884:17;4875:6;4831:71;:::i;:::-;4785:124;;;;:::o;4915:99::-;4967:6;5001:5;4995:12;4985:22;;4974:40;;;:::o;5020:169::-;5104:11;5138:6;5133:3;5126:19;5178:4;5173:3;5169:14;5154:29;;5116:73;;;;:::o;5195:305::-;5235:3;5254:20;5272:1;5254:20;:::i;:::-;5249:25;;5288:20;5306:1;5288:20;:::i;:::-;5283:25;;5442:1;5374:66;5370:74;5367:1;5364:81;5361:2;;;5448:18;;:::i;:::-;5361:2;5492:1;5489;5485:9;5478:16;;5239:261;;;;:::o;5506:191::-;5546:4;5566:20;5584:1;5566:20;:::i;:::-;5561:25;;5600:20;5618:1;5600:20;:::i;:::-;5595:25;;5639:1;5636;5633:8;5630:2;;;5644:18;;:::i;:::-;5630:2;5689:1;5686;5682:9;5674:17;;5551:146;;;;:::o;5703:96::-;5740:7;5769:24;5787:5;5769:24;:::i;:::-;5758:35;;5748:51;;;:::o;5805:90::-;5839:7;5882:5;5875:13;5868:21;5857:32;;5847:48;;;:::o;5901:126::-;5938:7;5978:42;5971:5;5967:54;5956:65;;5946:81;;;:::o;6033:77::-;6070:7;6099:5;6088:16;;6078:32;;;:::o;6116:307::-;6184:1;6194:113;6208:6;6205:1;6202:13;6194:113;;;6293:1;6288:3;6284:11;6278:18;6274:1;6269:3;6265:11;6258:39;6230:2;6227:1;6223:10;6218:15;;6194:113;;;6325:6;6322:1;6319:13;6316:2;;;6405:1;6396:6;6391:3;6387:16;6380:27;6316:2;6165:258;;;;:::o;6429:320::-;6473:6;6510:1;6504:4;6500:12;6490:22;;6557:1;6551:4;6547:12;6578:18;6568:2;;6634:4;6626:6;6622:17;6612:27;;6568:2;6696;6688:6;6685:14;6665:18;6662:38;6659:2;;;6715:18;;:::i;:::-;6659:2;6480:269;;;;:::o;6755:180::-;6803:77;6800:1;6793:88;6900:4;6897:1;6890:15;6924:4;6921:1;6914:15;6941:180;6989:77;6986:1;6979:88;7086:4;7083:1;7076:15;7110:4;7107:1;7100:15;7127:102;7168:6;7219:2;7215:7;7210:2;7203:5;7199:14;7195:28;7185:38;;7175:54;;;:::o;7235:172::-;7375:24;7371:1;7363:6;7359:14;7352:48;7341:66;:::o;7413:175::-;7553:27;7549:1;7541:6;7537:14;7530:51;7519:69;:::o;7594:122::-;7667:24;7685:5;7667:24;:::i;:::-;7660:5;7657:35;7647:2;;7706:1;7703;7696:12;7647:2;7637:79;:::o;7722:122::-;7795:24;7813:5;7795:24;:::i;:::-;7788:5;7785:35;7775:2;;7834:1;7831;7824:12;7775:2;7765:79;:::o"},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","name()":"06fdde03","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.4+commit.c7e474f2\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"remaining\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/Token.sol\":\"MockToken\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/Token.sol\":{\"keccak256\":\"0x3c98df2a7295115a107e950c40733f37ce5384cf18a0b5efb948ccf6d1acaa59\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://21c0d9ad7fee4c50e057a477ec0c151985566e51e1df46d3dc42f4320eceeccf\",\"dweb:/ipfs/QmSVvnCWd9MH3F93atgJGuwbHMJpifnoMLSosQsZUKUrZ8\"]}},\"version\":1}"},"NotAToken":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"6080604052348015600f57600080fd5b50603f80601d6000396000f3fe6080604052600080fdfea26469706673582212209449725821c33b87347a40f451b2c6483bf5505349fe39bcd25604669e50f33364736f6c63430008040033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x3F DUP1 PUSH1 0x1D PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP5 0x49 PUSH19 0x5821C33B87347A40F451B2C6483BF5505349FE CODECOPY 0xBC 0xD2 JUMP DIV PUSH7 0x9E50F33364736F PUSH13 0x63430008040033000000000000 ","sourceMap":"1362:21:3:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"6080604052600080fdfea26469706673582212209449725821c33b87347a40f451b2c6483bf5505349fe39bcd25604669e50f33364736f6c63430008040033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP5 0x49 PUSH19 0x5821C33B87347A40F451B2C6483BF5505349FE CODECOPY 0xBC 0xD2 JUMP DIV PUSH7 0x9E50F33364736F PUSH13 0x63430008040033000000000000 ","sourceMap":"1362:21:3:-:0;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.4+commit.c7e474f2\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/Token.sol\":\"NotAToken\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/Token.sol\":{\"keccak256\":\"0x3c98df2a7295115a107e950c40733f37ce5384cf18a0b5efb948ccf6d1acaa59\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://21c0d9ad7fee4c50e057a477ec0c151985566e51e1df46d3dc42f4320eceeccf\",\"dweb:/ipfs/QmSVvnCWd9MH3F93atgJGuwbHMJpifnoMLSosQsZUKUrZ8\"]}},\"version\":1}"},"TokenWithOnlyName":{"abi":[{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"remaining","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:516:4","statements":[{"body":{"nodeType":"YulBlock","src":"58:269:4","statements":[{"nodeType":"YulAssignment","src":"68:22:4","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"82:4:4"},{"kind":"number","nodeType":"YulLiteral","src":"88:1:4","type":"","value":"2"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"78:3:4"},"nodeType":"YulFunctionCall","src":"78:12:4"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"68:6:4"}]},{"nodeType":"YulVariableDeclaration","src":"99:38:4","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"129:4:4"},{"kind":"number","nodeType":"YulLiteral","src":"135:1:4","type":"","value":"1"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"125:3:4"},"nodeType":"YulFunctionCall","src":"125:12:4"},"variables":[{"name":"outOfPlaceEncoding","nodeType":"YulTypedName","src":"103:18:4","type":""}]},{"body":{"nodeType":"YulBlock","src":"176:51:4","statements":[{"nodeType":"YulAssignment","src":"190:27:4","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"204:6:4"},{"kind":"number","nodeType":"YulLiteral","src":"212:4:4","type":"","value":"0x7f"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"200:3:4"},"nodeType":"YulFunctionCall","src":"200:17:4"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"190:6:4"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"156:18:4"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"149:6:4"},"nodeType":"YulFunctionCall","src":"149:26:4"},"nodeType":"YulIf","src":"146:2:4"},{"body":{"nodeType":"YulBlock","src":"279:42:4","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x22","nodeType":"YulIdentifier","src":"293:16:4"},"nodeType":"YulFunctionCall","src":"293:18:4"},"nodeType":"YulExpressionStatement","src":"293:18:4"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"243:18:4"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"266:6:4"},{"kind":"number","nodeType":"YulLiteral","src":"274:2:4","type":"","value":"32"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"263:2:4"},"nodeType":"YulFunctionCall","src":"263:14:4"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"240:2:4"},"nodeType":"YulFunctionCall","src":"240:38:4"},"nodeType":"YulIf","src":"237:2:4"}]},"name":"extract_byte_array_length","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"42:4:4","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"51:6:4","type":""}],"src":"7:320:4"},{"body":{"nodeType":"YulBlock","src":"361:152:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"378:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"381:77:4","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"371:6:4"},"nodeType":"YulFunctionCall","src":"371:88:4"},"nodeType":"YulExpressionStatement","src":"371:88:4"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"475:1:4","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"478:4:4","type":"","value":"0x22"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"468:6:4"},"nodeType":"YulFunctionCall","src":"468:15:4"},"nodeType":"YulExpressionStatement","src":"468:15:4"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"499:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"502:4:4","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"492:6:4"},"nodeType":"YulFunctionCall","src":"492:15:4"},"nodeType":"YulExpressionStatement","src":"492:15:4"}]},"name":"panic_error_0x22","nodeType":"YulFunctionDefinition","src":"333:180:4"}]},"contents":"{\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 panic_error_0x22() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n\n}\n","id":4,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"608060405260016000556040518060400160405280600981526020017f4d6f636b546f6b656e0000000000000000000000000000000000000000000000815250600490805190602001906100549291906100b8565b5034801561006157600080fd5b50633b9aca00600181905550600154600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506101bc565b8280546100c49061015b565b90600052602060002090601f0160209004810192826100e6576000855561012d565b82601f106100ff57805160ff191683800117855561012d565b8280016001018555821561012d579182015b8281111561012c578251825591602001919060010190610111565b5b50905061013a919061013e565b5090565b5b8082111561015757600081600090555060010161013f565b5090565b6000600282049050600182168061017357607f821691505b602082108114156101875761018661018d565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b610af6806101cb6000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063313ce5671161005b578063313ce5671461012957806370a0823114610147578063a9059cbb14610177578063dd62ed3e146101a757610088565b806306fdde031461008d578063095ea7b3146100ab57806318160ddd146100db57806323b872dd146100f9575b600080fd5b6100956101d7565b6040516100a29190610801565b60405180910390f35b6100c560048036038101906100c0919061070d565b610265565b6040516100d291906107e6565b60405180910390f35b6100e36102f2565b6040516100f09190610863565b60405180910390f35b610113600480360381019061010e91906106be565b6102f8565b60405161012091906107e6565b60405180910390f35b610131610490565b60405161013e9190610863565b60405180910390f35b610161600480360381019061015c9190610659565b610496565b60405161016e9190610863565b60405180910390f35b610191600480360381019061018c919061070d565b6104ae565b60405161019e91906107e6565b60405180910390f35b6101c160048036038101906101bc9190610682565b6105a8565b6040516101ce9190610863565b60405180910390f35b600480546101e49061099f565b80601f01602080910402602001604051908101604052809291908181526020018280546102109061099f565b801561025d5780601f106102325761010080835404028352916020019161025d565b820191906000526020600020905b81548152906001019060200180831161024057829003601f168201915b505050505081565b600081600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001905092915050565b60015481565b60008161030585336105a8565b1015610346576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161033d90610823565b60405180910390fd5b81600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546103d291906108f0565b9250508190555081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461042891906108f0565b9250508190555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461047e919061089a565b92505081905550600190509392505050565b60005481565b60026020528060005260406000206000915090505481565b60008082116104f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104e990610843565b60405180910390fd5b81600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461054191906108f0565b9250508190555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610597919061089a565b925050819055506001905092915050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008135905061063e81610a92565b92915050565b60008135905061065381610aa9565b92915050565b60006020828403121561066b57600080fd5b60006106798482850161062f565b91505092915050565b6000806040838503121561069557600080fd5b60006106a38582860161062f565b92505060206106b48582860161062f565b9150509250929050565b6000806000606084860312156106d357600080fd5b60006106e18682870161062f565b93505060206106f28682870161062f565b925050604061070386828701610644565b9150509250925092565b6000806040838503121561072057600080fd5b600061072e8582860161062f565b925050602061073f85828601610644565b9150509250929050565b61075281610936565b82525050565b60006107638261087e565b61076d8185610889565b935061077d81856020860161096c565b61078681610a2f565b840191505092915050565b600061079e601683610889565b91506107a982610a40565b602082019050919050565b60006107c1601983610889565b91506107cc82610a69565b602082019050919050565b6107e081610962565b82525050565b60006020820190506107fb6000830184610749565b92915050565b6000602082019050818103600083015261081b8184610758565b905092915050565b6000602082019050818103600083015261083c81610791565b9050919050565b6000602082019050818103600083015261085c816107b4565b9050919050565b600060208201905061087860008301846107d7565b92915050565b600081519050919050565b600082825260208201905092915050565b60006108a582610962565b91506108b083610962565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156108e5576108e46109d1565b5b828201905092915050565b60006108fb82610962565b915061090683610962565b925082821015610919576109186109d1565b5b828203905092915050565b600061092f82610942565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b8381101561098a57808201518184015260208101905061096f565b83811115610999576000848401525b50505050565b600060028204905060018216806109b757607f821691505b602082108114156109cb576109ca610a00565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f496e73756666696369656e7420616c6c6f77616e636500000000000000000000600082015250565b7f5472616e736665727265642076616c7565206973207a65726f00000000000000600082015250565b610a9b81610924565b8114610aa657600080fd5b50565b610ab281610962565b8114610abd57600080fd5b5056fea2646970667358221220a6fcd04aa893368d0e3e9a004a848844c520623183d6b2111fbc6f837204d0fa64736f6c63430008040033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x1 PUSH1 0x0 SSTORE PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x9 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x4D6F636B546F6B656E0000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x4 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0x54 SWAP3 SWAP2 SWAP1 PUSH2 0xB8 JUMP JUMPDEST POP CALLVALUE DUP1 ISZERO PUSH2 0x61 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH4 0x3B9ACA00 PUSH1 0x1 DUP2 SWAP1 SSTORE POP PUSH1 0x1 SLOAD 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 DUP2 SWAP1 SSTORE POP PUSH2 0x1BC JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH2 0xC4 SWAP1 PUSH2 0x15B JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH2 0xE6 JUMPI PUSH1 0x0 DUP6 SSTORE PUSH2 0x12D JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH2 0xFF JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x12D JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x12D JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x12C JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x111 JUMP JUMPDEST JUMPDEST POP SWAP1 POP PUSH2 0x13A SWAP2 SWAP1 PUSH2 0x13E JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x157 JUMPI PUSH1 0x0 DUP2 PUSH1 0x0 SWAP1 SSTORE POP PUSH1 0x1 ADD PUSH2 0x13F JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x2 DUP3 DIV SWAP1 POP PUSH1 0x1 DUP3 AND DUP1 PUSH2 0x173 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 EQ ISZERO PUSH2 0x187 JUMPI PUSH2 0x186 PUSH2 0x18D JUMP JUMPDEST JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH2 0xAF6 DUP1 PUSH2 0x1CB PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x88 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x313CE567 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x129 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x147 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x177 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x1A7 JUMPI PUSH2 0x88 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x8D JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0xAB JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0xDB JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0xF9 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x95 PUSH2 0x1D7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xA2 SWAP2 SWAP1 PUSH2 0x801 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xC5 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xC0 SWAP2 SWAP1 PUSH2 0x70D JUMP JUMPDEST PUSH2 0x265 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xD2 SWAP2 SWAP1 PUSH2 0x7E6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xE3 PUSH2 0x2F2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xF0 SWAP2 SWAP1 PUSH2 0x863 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x113 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x10E SWAP2 SWAP1 PUSH2 0x6BE JUMP JUMPDEST PUSH2 0x2F8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x120 SWAP2 SWAP1 PUSH2 0x7E6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x131 PUSH2 0x490 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x13E SWAP2 SWAP1 PUSH2 0x863 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x161 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x15C SWAP2 SWAP1 PUSH2 0x659 JUMP JUMPDEST PUSH2 0x496 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x16E SWAP2 SWAP1 PUSH2 0x863 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x191 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x18C SWAP2 SWAP1 PUSH2 0x70D JUMP JUMPDEST PUSH2 0x4AE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x19E SWAP2 SWAP1 PUSH2 0x7E6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1C1 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1BC SWAP2 SWAP1 PUSH2 0x682 JUMP JUMPDEST PUSH2 0x5A8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1CE SWAP2 SWAP1 PUSH2 0x863 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH2 0x1E4 SWAP1 PUSH2 0x99F 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 0x210 SWAP1 PUSH2 0x99F JUMP JUMPDEST DUP1 ISZERO PUSH2 0x25D JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x232 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x25D 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 0x240 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x3 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 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP PUSH1 0x1 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x305 DUP6 CALLER PUSH2 0x5A8 JUMP JUMPDEST LT ISZERO PUSH2 0x346 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x33D SWAP1 PUSH2 0x823 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 PUSH1 0x3 PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 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 0x3D2 SWAP2 SWAP1 PUSH2 0x8F0 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x2 PUSH1 0x0 DUP7 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 0x428 SWAP2 SWAP1 PUSH2 0x8F0 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x2 PUSH1 0x0 DUP6 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 0x47E SWAP2 SWAP1 PUSH2 0x89A JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH1 0x1 SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD 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 DUP3 GT PUSH2 0x4F2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4E9 SWAP1 PUSH2 0x843 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 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 0x541 SWAP2 SWAP1 PUSH2 0x8F0 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x2 PUSH1 0x0 DUP6 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 0x597 SWAP2 SWAP1 PUSH2 0x89A JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH1 0x1 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x3 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x63E DUP2 PUSH2 0xA92 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x653 DUP2 PUSH2 0xAA9 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x66B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x679 DUP5 DUP3 DUP6 ADD PUSH2 0x62F JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x695 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x6A3 DUP6 DUP3 DUP7 ADD PUSH2 0x62F JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x6B4 DUP6 DUP3 DUP7 ADD PUSH2 0x62F JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x6D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x6E1 DUP7 DUP3 DUP8 ADD PUSH2 0x62F JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x6F2 DUP7 DUP3 DUP8 ADD PUSH2 0x62F JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x703 DUP7 DUP3 DUP8 ADD PUSH2 0x644 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x720 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x72E DUP6 DUP3 DUP7 ADD PUSH2 0x62F JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x73F DUP6 DUP3 DUP7 ADD PUSH2 0x644 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH2 0x752 DUP2 PUSH2 0x936 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x763 DUP3 PUSH2 0x87E JUMP JUMPDEST PUSH2 0x76D DUP2 DUP6 PUSH2 0x889 JUMP JUMPDEST SWAP4 POP PUSH2 0x77D DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x96C JUMP JUMPDEST PUSH2 0x786 DUP2 PUSH2 0xA2F JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x79E PUSH1 0x16 DUP4 PUSH2 0x889 JUMP JUMPDEST SWAP2 POP PUSH2 0x7A9 DUP3 PUSH2 0xA40 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7C1 PUSH1 0x19 DUP4 PUSH2 0x889 JUMP JUMPDEST SWAP2 POP PUSH2 0x7CC DUP3 PUSH2 0xA69 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x7E0 DUP2 PUSH2 0x962 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x7FB PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x749 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 0x81B DUP2 DUP5 PUSH2 0x758 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 0x83C DUP2 PUSH2 0x791 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 0x85C DUP2 PUSH2 0x7B4 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x878 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x7D7 JUMP JUMPDEST SWAP3 SWAP2 POP 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 0x8A5 DUP3 PUSH2 0x962 JUMP JUMPDEST SWAP2 POP PUSH2 0x8B0 DUP4 PUSH2 0x962 JUMP JUMPDEST SWAP3 POP DUP3 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SUB DUP3 GT ISZERO PUSH2 0x8E5 JUMPI PUSH2 0x8E4 PUSH2 0x9D1 JUMP JUMPDEST JUMPDEST DUP3 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8FB DUP3 PUSH2 0x962 JUMP JUMPDEST SWAP2 POP PUSH2 0x906 DUP4 PUSH2 0x962 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 LT ISZERO PUSH2 0x919 JUMPI PUSH2 0x918 PUSH2 0x9D1 JUMP JUMPDEST JUMPDEST DUP3 DUP3 SUB SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x92F DUP3 PUSH2 0x942 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO ISZERO 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 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x98A JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x96F JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x999 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 0x9B7 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 EQ ISZERO PUSH2 0x9CB JUMPI PUSH2 0x9CA PUSH2 0xA00 JUMP JUMPDEST JUMPDEST POP SWAP2 SWAP1 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 PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x496E73756666696369656E7420616C6C6F77616E636500000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH32 0x5472616E736665727265642076616C7565206973207A65726F00000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH2 0xA9B DUP2 PUSH2 0x924 JUMP JUMPDEST DUP2 EQ PUSH2 0xAA6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0xAB2 DUP2 PUSH2 0x962 JUMP JUMPDEST DUP2 EQ PUSH2 0xABD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xA6 0xFC 0xD0 0x4A 0xA8 SWAP4 CALLDATASIZE DUP14 0xE RETURNDATACOPY SWAP11 STOP 0x4A DUP5 DUP9 DIFFICULTY 0xC5 KECCAK256 PUSH3 0x3183D6 0xB2 GT 0x1F 0xBC PUSH16 0x837204D0FA64736F6C63430008040033 ","sourceMap":"1144:95:3:-:0;;;119:1;96:24;;1204:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1144:95;;;;;;;;;;292:13;278:11;:27;;;;335:11;;311:9;:21;321:10;311:21;;;;;;;;;;;;;;;:35;;;;1144:95;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;7:320:4:-;51:6;88:1;82:4;78:12;68:22;;135:1;129:4;125:12;156:18;146:2;;212:4;204:6;200:17;190:27;;146:2;274;266:6;263:14;243:18;240:38;237:2;;;293:18;;:::i;:::-;237:2;58:269;;;;:::o;333:180::-;381:77;378:1;371:88;478:4;475:1;468:15;502:4;499:1;492:15;1144:95:3;;;;;;;"},"deployedBytecode":{"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:7847:4","statements":[{"body":{"nodeType":"YulBlock","src":"59:87:4","statements":[{"nodeType":"YulAssignment","src":"69:29:4","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"91:6:4"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"78:12:4"},"nodeType":"YulFunctionCall","src":"78:20:4"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"69:5:4"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"134:5:4"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"107:26:4"},"nodeType":"YulFunctionCall","src":"107:33:4"},"nodeType":"YulExpressionStatement","src":"107:33:4"}]},"name":"abi_decode_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"37:6:4","type":""},{"name":"end","nodeType":"YulTypedName","src":"45:3:4","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"53:5:4","type":""}],"src":"7:139:4"},{"body":{"nodeType":"YulBlock","src":"204:87:4","statements":[{"nodeType":"YulAssignment","src":"214:29:4","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"236:6:4"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"223:12:4"},"nodeType":"YulFunctionCall","src":"223:20:4"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"214:5:4"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"279:5:4"}],"functionName":{"name":"validator_revert_t_uint256","nodeType":"YulIdentifier","src":"252:26:4"},"nodeType":"YulFunctionCall","src":"252:33:4"},"nodeType":"YulExpressionStatement","src":"252:33:4"}]},"name":"abi_decode_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"182:6:4","type":""},{"name":"end","nodeType":"YulTypedName","src":"190:3:4","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"198:5:4","type":""}],"src":"152:139:4"},{"body":{"nodeType":"YulBlock","src":"363:196:4","statements":[{"body":{"nodeType":"YulBlock","src":"409:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"418:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"421:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"411:6:4"},"nodeType":"YulFunctionCall","src":"411:12:4"},"nodeType":"YulExpressionStatement","src":"411:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"384:7:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"393:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"380:3:4"},"nodeType":"YulFunctionCall","src":"380:23:4"},{"kind":"number","nodeType":"YulLiteral","src":"405:2:4","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"376:3:4"},"nodeType":"YulFunctionCall","src":"376:32:4"},"nodeType":"YulIf","src":"373:2:4"},{"nodeType":"YulBlock","src":"435:117:4","statements":[{"nodeType":"YulVariableDeclaration","src":"450:15:4","value":{"kind":"number","nodeType":"YulLiteral","src":"464:1:4","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"454:6:4","type":""}]},{"nodeType":"YulAssignment","src":"479:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"514:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"525:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"510:3:4"},"nodeType":"YulFunctionCall","src":"510:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"534:7:4"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"489:20:4"},"nodeType":"YulFunctionCall","src":"489:53:4"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"479:6:4"}]}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"333:9:4","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"344:7:4","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"356:6:4","type":""}],"src":"297:262:4"},{"body":{"nodeType":"YulBlock","src":"648:324:4","statements":[{"body":{"nodeType":"YulBlock","src":"694:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"703:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"706:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"696:6:4"},"nodeType":"YulFunctionCall","src":"696:12:4"},"nodeType":"YulExpressionStatement","src":"696:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"669:7:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"678:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"665:3:4"},"nodeType":"YulFunctionCall","src":"665:23:4"},{"kind":"number","nodeType":"YulLiteral","src":"690:2:4","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"661:3:4"},"nodeType":"YulFunctionCall","src":"661:32:4"},"nodeType":"YulIf","src":"658:2:4"},{"nodeType":"YulBlock","src":"720:117:4","statements":[{"nodeType":"YulVariableDeclaration","src":"735:15:4","value":{"kind":"number","nodeType":"YulLiteral","src":"749:1:4","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"739:6:4","type":""}]},{"nodeType":"YulAssignment","src":"764:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"799:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"810:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"795:3:4"},"nodeType":"YulFunctionCall","src":"795:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"819:7:4"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"774:20:4"},"nodeType":"YulFunctionCall","src":"774:53:4"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"764:6:4"}]}]},{"nodeType":"YulBlock","src":"847:118:4","statements":[{"nodeType":"YulVariableDeclaration","src":"862:16:4","value":{"kind":"number","nodeType":"YulLiteral","src":"876:2:4","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"866:6:4","type":""}]},{"nodeType":"YulAssignment","src":"892:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"927:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"938:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"923:3:4"},"nodeType":"YulFunctionCall","src":"923:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"947:7:4"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"902:20:4"},"nodeType":"YulFunctionCall","src":"902:53:4"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"892:6:4"}]}]}]},"name":"abi_decode_tuple_t_addresst_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"610:9:4","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"621:7:4","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"633:6:4","type":""},{"name":"value1","nodeType":"YulTypedName","src":"641:6:4","type":""}],"src":"565:407:4"},{"body":{"nodeType":"YulBlock","src":"1078:452:4","statements":[{"body":{"nodeType":"YulBlock","src":"1124:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1133:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1136:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1126:6:4"},"nodeType":"YulFunctionCall","src":"1126:12:4"},"nodeType":"YulExpressionStatement","src":"1126:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1099:7:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"1108:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1095:3:4"},"nodeType":"YulFunctionCall","src":"1095:23:4"},{"kind":"number","nodeType":"YulLiteral","src":"1120:2:4","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1091:3:4"},"nodeType":"YulFunctionCall","src":"1091:32:4"},"nodeType":"YulIf","src":"1088:2:4"},{"nodeType":"YulBlock","src":"1150:117:4","statements":[{"nodeType":"YulVariableDeclaration","src":"1165:15:4","value":{"kind":"number","nodeType":"YulLiteral","src":"1179:1:4","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1169:6:4","type":""}]},{"nodeType":"YulAssignment","src":"1194:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1229:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"1240:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1225:3:4"},"nodeType":"YulFunctionCall","src":"1225:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1249:7:4"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"1204:20:4"},"nodeType":"YulFunctionCall","src":"1204:53:4"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1194:6:4"}]}]},{"nodeType":"YulBlock","src":"1277:118:4","statements":[{"nodeType":"YulVariableDeclaration","src":"1292:16:4","value":{"kind":"number","nodeType":"YulLiteral","src":"1306:2:4","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1296:6:4","type":""}]},{"nodeType":"YulAssignment","src":"1322:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1357:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"1368:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1353:3:4"},"nodeType":"YulFunctionCall","src":"1353:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1377:7:4"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"1332:20:4"},"nodeType":"YulFunctionCall","src":"1332:53:4"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1322:6:4"}]}]},{"nodeType":"YulBlock","src":"1405:118:4","statements":[{"nodeType":"YulVariableDeclaration","src":"1420:16:4","value":{"kind":"number","nodeType":"YulLiteral","src":"1434:2:4","type":"","value":"64"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1424:6:4","type":""}]},{"nodeType":"YulAssignment","src":"1450:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1485:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"1496:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1481:3:4"},"nodeType":"YulFunctionCall","src":"1481:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1505:7:4"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"1460:20:4"},"nodeType":"YulFunctionCall","src":"1460:53:4"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"1450:6:4"}]}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1032:9:4","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1043:7:4","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1055:6:4","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1063:6:4","type":""},{"name":"value2","nodeType":"YulTypedName","src":"1071:6:4","type":""}],"src":"978:552:4"},{"body":{"nodeType":"YulBlock","src":"1619:324:4","statements":[{"body":{"nodeType":"YulBlock","src":"1665:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1674:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1677:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1667:6:4"},"nodeType":"YulFunctionCall","src":"1667:12:4"},"nodeType":"YulExpressionStatement","src":"1667:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1640:7:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"1649:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1636:3:4"},"nodeType":"YulFunctionCall","src":"1636:23:4"},{"kind":"number","nodeType":"YulLiteral","src":"1661:2:4","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1632:3:4"},"nodeType":"YulFunctionCall","src":"1632:32:4"},"nodeType":"YulIf","src":"1629:2:4"},{"nodeType":"YulBlock","src":"1691:117:4","statements":[{"nodeType":"YulVariableDeclaration","src":"1706:15:4","value":{"kind":"number","nodeType":"YulLiteral","src":"1720:1:4","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1710:6:4","type":""}]},{"nodeType":"YulAssignment","src":"1735:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1770:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"1781:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1766:3:4"},"nodeType":"YulFunctionCall","src":"1766:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1790:7:4"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"1745:20:4"},"nodeType":"YulFunctionCall","src":"1745:53:4"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1735:6:4"}]}]},{"nodeType":"YulBlock","src":"1818:118:4","statements":[{"nodeType":"YulVariableDeclaration","src":"1833:16:4","value":{"kind":"number","nodeType":"YulLiteral","src":"1847:2:4","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1837:6:4","type":""}]},{"nodeType":"YulAssignment","src":"1863:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1898:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"1909:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1894:3:4"},"nodeType":"YulFunctionCall","src":"1894:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1918:7:4"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"1873:20:4"},"nodeType":"YulFunctionCall","src":"1873:53:4"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1863:6:4"}]}]}]},"name":"abi_decode_tuple_t_addresst_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1581:9:4","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1592:7:4","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1604:6:4","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1612:6:4","type":""}],"src":"1536:407:4"},{"body":{"nodeType":"YulBlock","src":"2008:50:4","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2025:3:4"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2045:5:4"}],"functionName":{"name":"cleanup_t_bool","nodeType":"YulIdentifier","src":"2030:14:4"},"nodeType":"YulFunctionCall","src":"2030:21:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2018:6:4"},"nodeType":"YulFunctionCall","src":"2018:34:4"},"nodeType":"YulExpressionStatement","src":"2018:34:4"}]},"name":"abi_encode_t_bool_to_t_bool_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1996:5:4","type":""},{"name":"pos","nodeType":"YulTypedName","src":"2003:3:4","type":""}],"src":"1949:109:4"},{"body":{"nodeType":"YulBlock","src":"2156:272:4","statements":[{"nodeType":"YulVariableDeclaration","src":"2166:53:4","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2213:5:4"}],"functionName":{"name":"array_length_t_string_memory_ptr","nodeType":"YulIdentifier","src":"2180:32:4"},"nodeType":"YulFunctionCall","src":"2180:39:4"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"2170:6:4","type":""}]},{"nodeType":"YulAssignment","src":"2228:78:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2294:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"2299:6:4"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"2235:58:4"},"nodeType":"YulFunctionCall","src":"2235:71:4"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"2228:3:4"}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2341:5:4"},{"kind":"number","nodeType":"YulLiteral","src":"2348:4:4","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2337:3:4"},"nodeType":"YulFunctionCall","src":"2337:16:4"},{"name":"pos","nodeType":"YulIdentifier","src":"2355:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"2360:6:4"}],"functionName":{"name":"copy_memory_to_memory","nodeType":"YulIdentifier","src":"2315:21:4"},"nodeType":"YulFunctionCall","src":"2315:52:4"},"nodeType":"YulExpressionStatement","src":"2315:52:4"},{"nodeType":"YulAssignment","src":"2376:46:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2387:3:4"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"2414:6:4"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"2392:21:4"},"nodeType":"YulFunctionCall","src":"2392:29:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2383:3:4"},"nodeType":"YulFunctionCall","src":"2383:39:4"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"2376:3:4"}]}]},"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"2137:5:4","type":""},{"name":"pos","nodeType":"YulTypedName","src":"2144:3:4","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"2152:3:4","type":""}],"src":"2064:364:4"},{"body":{"nodeType":"YulBlock","src":"2580:220:4","statements":[{"nodeType":"YulAssignment","src":"2590:74:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2656:3:4"},{"kind":"number","nodeType":"YulLiteral","src":"2661:2:4","type":"","value":"22"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"2597:58:4"},"nodeType":"YulFunctionCall","src":"2597:67:4"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"2590:3:4"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2762:3:4"}],"functionName":{"name":"store_literal_in_memory_45e3d26e36c3151c7f92a1eee9add9658cbb8e14605ee2452ec007389b9744bc","nodeType":"YulIdentifier","src":"2673:88:4"},"nodeType":"YulFunctionCall","src":"2673:93:4"},"nodeType":"YulExpressionStatement","src":"2673:93:4"},{"nodeType":"YulAssignment","src":"2775:19:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2786:3:4"},{"kind":"number","nodeType":"YulLiteral","src":"2791:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2782:3:4"},"nodeType":"YulFunctionCall","src":"2782:12:4"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"2775:3:4"}]}]},"name":"abi_encode_t_stringliteral_45e3d26e36c3151c7f92a1eee9add9658cbb8e14605ee2452ec007389b9744bc_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"2568:3:4","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"2576:3:4","type":""}],"src":"2434:366:4"},{"body":{"nodeType":"YulBlock","src":"2952:220:4","statements":[{"nodeType":"YulAssignment","src":"2962:74:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3028:3:4"},{"kind":"number","nodeType":"YulLiteral","src":"3033:2:4","type":"","value":"25"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"2969:58:4"},"nodeType":"YulFunctionCall","src":"2969:67:4"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"2962:3:4"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3134:3:4"}],"functionName":{"name":"store_literal_in_memory_4ca3cd75a1831a94a24913bfd2c9b9d35acbb11ac3447f65bb0682cf14f63f5c","nodeType":"YulIdentifier","src":"3045:88:4"},"nodeType":"YulFunctionCall","src":"3045:93:4"},"nodeType":"YulExpressionStatement","src":"3045:93:4"},{"nodeType":"YulAssignment","src":"3147:19:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3158:3:4"},{"kind":"number","nodeType":"YulLiteral","src":"3163:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3154:3:4"},"nodeType":"YulFunctionCall","src":"3154:12:4"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"3147:3:4"}]}]},"name":"abi_encode_t_stringliteral_4ca3cd75a1831a94a24913bfd2c9b9d35acbb11ac3447f65bb0682cf14f63f5c_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"2940:3:4","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"2948:3:4","type":""}],"src":"2806:366:4"},{"body":{"nodeType":"YulBlock","src":"3243:53:4","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3260:3:4"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3283:5:4"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"3265:17:4"},"nodeType":"YulFunctionCall","src":"3265:24:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3253:6:4"},"nodeType":"YulFunctionCall","src":"3253:37:4"},"nodeType":"YulExpressionStatement","src":"3253:37:4"}]},"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"3231:5:4","type":""},{"name":"pos","nodeType":"YulTypedName","src":"3238:3:4","type":""}],"src":"3178:118:4"},{"body":{"nodeType":"YulBlock","src":"3394:118:4","statements":[{"nodeType":"YulAssignment","src":"3404:26:4","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3416:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"3427:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3412:3:4"},"nodeType":"YulFunctionCall","src":"3412:18:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3404:4:4"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3478:6:4"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3491:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"3502:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3487:3:4"},"nodeType":"YulFunctionCall","src":"3487:17:4"}],"functionName":{"name":"abi_encode_t_bool_to_t_bool_fromStack","nodeType":"YulIdentifier","src":"3440:37:4"},"nodeType":"YulFunctionCall","src":"3440:65:4"},"nodeType":"YulExpressionStatement","src":"3440:65:4"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3366:9:4","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3378:6:4","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3389:4:4","type":""}],"src":"3302:210:4"},{"body":{"nodeType":"YulBlock","src":"3636:195:4","statements":[{"nodeType":"YulAssignment","src":"3646:26:4","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3658:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"3669:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3654:3:4"},"nodeType":"YulFunctionCall","src":"3654:18:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3646:4:4"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3693:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"3704:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3689:3:4"},"nodeType":"YulFunctionCall","src":"3689:17:4"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"3712:4:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"3718:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3708:3:4"},"nodeType":"YulFunctionCall","src":"3708:20:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3682:6:4"},"nodeType":"YulFunctionCall","src":"3682:47:4"},"nodeType":"YulExpressionStatement","src":"3682:47:4"},{"nodeType":"YulAssignment","src":"3738:86:4","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3810:6:4"},{"name":"tail","nodeType":"YulIdentifier","src":"3819:4:4"}],"functionName":{"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"3746:63:4"},"nodeType":"YulFunctionCall","src":"3746:78:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3738:4:4"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3608:9:4","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3620:6:4","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3631:4:4","type":""}],"src":"3518:313:4"},{"body":{"nodeType":"YulBlock","src":"4008:248:4","statements":[{"nodeType":"YulAssignment","src":"4018:26:4","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4030:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"4041:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4026:3:4"},"nodeType":"YulFunctionCall","src":"4026:18:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4018:4:4"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4065:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"4076:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4061:3:4"},"nodeType":"YulFunctionCall","src":"4061:17:4"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"4084:4:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"4090:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4080:3:4"},"nodeType":"YulFunctionCall","src":"4080:20:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4054:6:4"},"nodeType":"YulFunctionCall","src":"4054:47:4"},"nodeType":"YulExpressionStatement","src":"4054:47:4"},{"nodeType":"YulAssignment","src":"4110:139:4","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"4244:4:4"}],"functionName":{"name":"abi_encode_t_stringliteral_45e3d26e36c3151c7f92a1eee9add9658cbb8e14605ee2452ec007389b9744bc_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"4118:124:4"},"nodeType":"YulFunctionCall","src":"4118:131:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4110:4:4"}]}]},"name":"abi_encode_tuple_t_stringliteral_45e3d26e36c3151c7f92a1eee9add9658cbb8e14605ee2452ec007389b9744bc__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3988:9:4","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4003:4:4","type":""}],"src":"3837:419:4"},{"body":{"nodeType":"YulBlock","src":"4433:248:4","statements":[{"nodeType":"YulAssignment","src":"4443:26:4","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4455:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"4466:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4451:3:4"},"nodeType":"YulFunctionCall","src":"4451:18:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4443:4:4"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4490:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"4501:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4486:3:4"},"nodeType":"YulFunctionCall","src":"4486:17:4"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"4509:4:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"4515:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4505:3:4"},"nodeType":"YulFunctionCall","src":"4505:20:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4479:6:4"},"nodeType":"YulFunctionCall","src":"4479:47:4"},"nodeType":"YulExpressionStatement","src":"4479:47:4"},{"nodeType":"YulAssignment","src":"4535:139:4","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"4669:4:4"}],"functionName":{"name":"abi_encode_t_stringliteral_4ca3cd75a1831a94a24913bfd2c9b9d35acbb11ac3447f65bb0682cf14f63f5c_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"4543:124:4"},"nodeType":"YulFunctionCall","src":"4543:131:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4535:4:4"}]}]},"name":"abi_encode_tuple_t_stringliteral_4ca3cd75a1831a94a24913bfd2c9b9d35acbb11ac3447f65bb0682cf14f63f5c__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4413:9:4","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4428:4:4","type":""}],"src":"4262:419:4"},{"body":{"nodeType":"YulBlock","src":"4785:124:4","statements":[{"nodeType":"YulAssignment","src":"4795:26:4","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4807:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"4818:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4803:3:4"},"nodeType":"YulFunctionCall","src":"4803:18:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4795:4:4"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4875:6:4"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4888:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"4899:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4884:3:4"},"nodeType":"YulFunctionCall","src":"4884:17:4"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"4831:43:4"},"nodeType":"YulFunctionCall","src":"4831:71:4"},"nodeType":"YulExpressionStatement","src":"4831:71:4"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4757:9:4","type":""},{"name":"value0","nodeType":"YulTypedName","src":"4769:6:4","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4780:4:4","type":""}],"src":"4687:222:4"},{"body":{"nodeType":"YulBlock","src":"4974:40:4","statements":[{"nodeType":"YulAssignment","src":"4985:22:4","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5001:5:4"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4995:5:4"},"nodeType":"YulFunctionCall","src":"4995:12:4"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"4985:6:4"}]}]},"name":"array_length_t_string_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"4957:5:4","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"4967:6:4","type":""}],"src":"4915:99:4"},{"body":{"nodeType":"YulBlock","src":"5116:73:4","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5133:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"5138:6:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5126:6:4"},"nodeType":"YulFunctionCall","src":"5126:19:4"},"nodeType":"YulExpressionStatement","src":"5126:19:4"},{"nodeType":"YulAssignment","src":"5154:29:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5173:3:4"},{"kind":"number","nodeType":"YulLiteral","src":"5178:4:4","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5169:3:4"},"nodeType":"YulFunctionCall","src":"5169:14:4"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"5154:11:4"}]}]},"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"5088:3:4","type":""},{"name":"length","nodeType":"YulTypedName","src":"5093:6:4","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"5104:11:4","type":""}],"src":"5020:169:4"},{"body":{"nodeType":"YulBlock","src":"5239:261:4","statements":[{"nodeType":"YulAssignment","src":"5249:25:4","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"5272:1:4"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"5254:17:4"},"nodeType":"YulFunctionCall","src":"5254:20:4"},"variableNames":[{"name":"x","nodeType":"YulIdentifier","src":"5249:1:4"}]},{"nodeType":"YulAssignment","src":"5283:25:4","value":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"5306:1:4"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"5288:17:4"},"nodeType":"YulFunctionCall","src":"5288:20:4"},"variableNames":[{"name":"y","nodeType":"YulIdentifier","src":"5283:1:4"}]},{"body":{"nodeType":"YulBlock","src":"5446:22:4","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"5448:16:4"},"nodeType":"YulFunctionCall","src":"5448:18:4"},"nodeType":"YulExpressionStatement","src":"5448:18:4"}]},"condition":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"5367:1:4"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5374:66:4","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"},{"name":"y","nodeType":"YulIdentifier","src":"5442:1:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5370:3:4"},"nodeType":"YulFunctionCall","src":"5370:74:4"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5364:2:4"},"nodeType":"YulFunctionCall","src":"5364:81:4"},"nodeType":"YulIf","src":"5361:2:4"},{"nodeType":"YulAssignment","src":"5478:16:4","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"5489:1:4"},{"name":"y","nodeType":"YulIdentifier","src":"5492:1:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5485:3:4"},"nodeType":"YulFunctionCall","src":"5485:9:4"},"variableNames":[{"name":"sum","nodeType":"YulIdentifier","src":"5478:3:4"}]}]},"name":"checked_add_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"5226:1:4","type":""},{"name":"y","nodeType":"YulTypedName","src":"5229:1:4","type":""}],"returnVariables":[{"name":"sum","nodeType":"YulTypedName","src":"5235:3:4","type":""}],"src":"5195:305:4"},{"body":{"nodeType":"YulBlock","src":"5551:146:4","statements":[{"nodeType":"YulAssignment","src":"5561:25:4","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"5584:1:4"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"5566:17:4"},"nodeType":"YulFunctionCall","src":"5566:20:4"},"variableNames":[{"name":"x","nodeType":"YulIdentifier","src":"5561:1:4"}]},{"nodeType":"YulAssignment","src":"5595:25:4","value":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"5618:1:4"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"5600:17:4"},"nodeType":"YulFunctionCall","src":"5600:20:4"},"variableNames":[{"name":"y","nodeType":"YulIdentifier","src":"5595:1:4"}]},{"body":{"nodeType":"YulBlock","src":"5642:22:4","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"5644:16:4"},"nodeType":"YulFunctionCall","src":"5644:18:4"},"nodeType":"YulExpressionStatement","src":"5644:18:4"}]},"condition":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"5636:1:4"},{"name":"y","nodeType":"YulIdentifier","src":"5639:1:4"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"5633:2:4"},"nodeType":"YulFunctionCall","src":"5633:8:4"},"nodeType":"YulIf","src":"5630:2:4"},{"nodeType":"YulAssignment","src":"5674:17:4","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"5686:1:4"},{"name":"y","nodeType":"YulIdentifier","src":"5689:1:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5682:3:4"},"nodeType":"YulFunctionCall","src":"5682:9:4"},"variableNames":[{"name":"diff","nodeType":"YulIdentifier","src":"5674:4:4"}]}]},"name":"checked_sub_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"5537:1:4","type":""},{"name":"y","nodeType":"YulTypedName","src":"5540:1:4","type":""}],"returnVariables":[{"name":"diff","nodeType":"YulTypedName","src":"5546:4:4","type":""}],"src":"5506:191:4"},{"body":{"nodeType":"YulBlock","src":"5748:51:4","statements":[{"nodeType":"YulAssignment","src":"5758:35:4","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5787:5:4"}],"functionName":{"name":"cleanup_t_uint160","nodeType":"YulIdentifier","src":"5769:17:4"},"nodeType":"YulFunctionCall","src":"5769:24:4"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"5758:7:4"}]}]},"name":"cleanup_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"5730:5:4","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"5740:7:4","type":""}],"src":"5703:96:4"},{"body":{"nodeType":"YulBlock","src":"5847:48:4","statements":[{"nodeType":"YulAssignment","src":"5857:32:4","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5882:5:4"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"5875:6:4"},"nodeType":"YulFunctionCall","src":"5875:13:4"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"5868:6:4"},"nodeType":"YulFunctionCall","src":"5868:21:4"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"5857:7:4"}]}]},"name":"cleanup_t_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"5829:5:4","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"5839:7:4","type":""}],"src":"5805:90:4"},{"body":{"nodeType":"YulBlock","src":"5946:81:4","statements":[{"nodeType":"YulAssignment","src":"5956:65:4","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5971:5:4"},{"kind":"number","nodeType":"YulLiteral","src":"5978:42:4","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5967:3:4"},"nodeType":"YulFunctionCall","src":"5967:54:4"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"5956:7:4"}]}]},"name":"cleanup_t_uint160","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"5928:5:4","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"5938:7:4","type":""}],"src":"5901:126:4"},{"body":{"nodeType":"YulBlock","src":"6078:32:4","statements":[{"nodeType":"YulAssignment","src":"6088:16:4","value":{"name":"value","nodeType":"YulIdentifier","src":"6099:5:4"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"6088:7:4"}]}]},"name":"cleanup_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"6060:5:4","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"6070:7:4","type":""}],"src":"6033:77:4"},{"body":{"nodeType":"YulBlock","src":"6165:258:4","statements":[{"nodeType":"YulVariableDeclaration","src":"6175:10:4","value":{"kind":"number","nodeType":"YulLiteral","src":"6184:1:4","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"6179:1:4","type":""}]},{"body":{"nodeType":"YulBlock","src":"6244:63:4","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"6269:3:4"},{"name":"i","nodeType":"YulIdentifier","src":"6274:1:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6265:3:4"},"nodeType":"YulFunctionCall","src":"6265:11:4"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"6288:3:4"},{"name":"i","nodeType":"YulIdentifier","src":"6293:1:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6284:3:4"},"nodeType":"YulFunctionCall","src":"6284:11:4"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6278:5:4"},"nodeType":"YulFunctionCall","src":"6278:18:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6258:6:4"},"nodeType":"YulFunctionCall","src":"6258:39:4"},"nodeType":"YulExpressionStatement","src":"6258:39:4"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"6205:1:4"},{"name":"length","nodeType":"YulIdentifier","src":"6208:6:4"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"6202:2:4"},"nodeType":"YulFunctionCall","src":"6202:13:4"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"6216:19:4","statements":[{"nodeType":"YulAssignment","src":"6218:15:4","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"6227:1:4"},{"kind":"number","nodeType":"YulLiteral","src":"6230:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6223:3:4"},"nodeType":"YulFunctionCall","src":"6223:10:4"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"6218:1:4"}]}]},"pre":{"nodeType":"YulBlock","src":"6198:3:4","statements":[]},"src":"6194:113:4"},{"body":{"nodeType":"YulBlock","src":"6341:76:4","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"6391:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"6396:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6387:3:4"},"nodeType":"YulFunctionCall","src":"6387:16:4"},{"kind":"number","nodeType":"YulLiteral","src":"6405:1:4","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6380:6:4"},"nodeType":"YulFunctionCall","src":"6380:27:4"},"nodeType":"YulExpressionStatement","src":"6380:27:4"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"6322:1:4"},{"name":"length","nodeType":"YulIdentifier","src":"6325:6:4"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"6319:2:4"},"nodeType":"YulFunctionCall","src":"6319:13:4"},"nodeType":"YulIf","src":"6316:2:4"}]},"name":"copy_memory_to_memory","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"6147:3:4","type":""},{"name":"dst","nodeType":"YulTypedName","src":"6152:3:4","type":""},{"name":"length","nodeType":"YulTypedName","src":"6157:6:4","type":""}],"src":"6116:307:4"},{"body":{"nodeType":"YulBlock","src":"6480:269:4","statements":[{"nodeType":"YulAssignment","src":"6490:22:4","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"6504:4:4"},{"kind":"number","nodeType":"YulLiteral","src":"6510:1:4","type":"","value":"2"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"6500:3:4"},"nodeType":"YulFunctionCall","src":"6500:12:4"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"6490:6:4"}]},{"nodeType":"YulVariableDeclaration","src":"6521:38:4","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"6551:4:4"},{"kind":"number","nodeType":"YulLiteral","src":"6557:1:4","type":"","value":"1"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"6547:3:4"},"nodeType":"YulFunctionCall","src":"6547:12:4"},"variables":[{"name":"outOfPlaceEncoding","nodeType":"YulTypedName","src":"6525:18:4","type":""}]},{"body":{"nodeType":"YulBlock","src":"6598:51:4","statements":[{"nodeType":"YulAssignment","src":"6612:27:4","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"6626:6:4"},{"kind":"number","nodeType":"YulLiteral","src":"6634:4:4","type":"","value":"0x7f"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"6622:3:4"},"nodeType":"YulFunctionCall","src":"6622:17:4"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"6612:6:4"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"6578:18:4"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"6571:6:4"},"nodeType":"YulFunctionCall","src":"6571:26:4"},"nodeType":"YulIf","src":"6568:2:4"},{"body":{"nodeType":"YulBlock","src":"6701:42:4","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x22","nodeType":"YulIdentifier","src":"6715:16:4"},"nodeType":"YulFunctionCall","src":"6715:18:4"},"nodeType":"YulExpressionStatement","src":"6715:18:4"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"6665:18:4"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"6688:6:4"},{"kind":"number","nodeType":"YulLiteral","src":"6696:2:4","type":"","value":"32"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"6685:2:4"},"nodeType":"YulFunctionCall","src":"6685:14:4"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"6662:2:4"},"nodeType":"YulFunctionCall","src":"6662:38:4"},"nodeType":"YulIf","src":"6659:2:4"}]},"name":"extract_byte_array_length","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"6464:4:4","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"6473:6:4","type":""}],"src":"6429:320:4"},{"body":{"nodeType":"YulBlock","src":"6783:152:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6800:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6803:77:4","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6793:6:4"},"nodeType":"YulFunctionCall","src":"6793:88:4"},"nodeType":"YulExpressionStatement","src":"6793:88:4"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6897:1:4","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"6900:4:4","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6890:6:4"},"nodeType":"YulFunctionCall","src":"6890:15:4"},"nodeType":"YulExpressionStatement","src":"6890:15:4"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6921:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6924:4:4","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6914:6:4"},"nodeType":"YulFunctionCall","src":"6914:15:4"},"nodeType":"YulExpressionStatement","src":"6914:15:4"}]},"name":"panic_error_0x11","nodeType":"YulFunctionDefinition","src":"6755:180:4"},{"body":{"nodeType":"YulBlock","src":"6969:152:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6986:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6989:77:4","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6979:6:4"},"nodeType":"YulFunctionCall","src":"6979:88:4"},"nodeType":"YulExpressionStatement","src":"6979:88:4"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7083:1:4","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"7086:4:4","type":"","value":"0x22"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7076:6:4"},"nodeType":"YulFunctionCall","src":"7076:15:4"},"nodeType":"YulExpressionStatement","src":"7076:15:4"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7107:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7110:4:4","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7100:6:4"},"nodeType":"YulFunctionCall","src":"7100:15:4"},"nodeType":"YulExpressionStatement","src":"7100:15:4"}]},"name":"panic_error_0x22","nodeType":"YulFunctionDefinition","src":"6941:180:4"},{"body":{"nodeType":"YulBlock","src":"7175:54:4","statements":[{"nodeType":"YulAssignment","src":"7185:38:4","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"7203:5:4"},{"kind":"number","nodeType":"YulLiteral","src":"7210:2:4","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7199:3:4"},"nodeType":"YulFunctionCall","src":"7199:14:4"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7219:2:4","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"7215:3:4"},"nodeType":"YulFunctionCall","src":"7215:7:4"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7195:3:4"},"nodeType":"YulFunctionCall","src":"7195:28:4"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"7185:6:4"}]}]},"name":"round_up_to_mul_of_32","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"7158:5:4","type":""}],"returnVariables":[{"name":"result","nodeType":"YulTypedName","src":"7168:6:4","type":""}],"src":"7127:102:4"},{"body":{"nodeType":"YulBlock","src":"7341:66:4","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7363:6:4"},{"kind":"number","nodeType":"YulLiteral","src":"7371:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7359:3:4"},"nodeType":"YulFunctionCall","src":"7359:14:4"},{"kind":"string","nodeType":"YulLiteral","src":"7375:24:4","type":"","value":"Insufficient allowance"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7352:6:4"},"nodeType":"YulFunctionCall","src":"7352:48:4"},"nodeType":"YulExpressionStatement","src":"7352:48:4"}]},"name":"store_literal_in_memory_45e3d26e36c3151c7f92a1eee9add9658cbb8e14605ee2452ec007389b9744bc","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"7333:6:4","type":""}],"src":"7235:172:4"},{"body":{"nodeType":"YulBlock","src":"7519:69:4","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7541:6:4"},{"kind":"number","nodeType":"YulLiteral","src":"7549:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7537:3:4"},"nodeType":"YulFunctionCall","src":"7537:14:4"},{"kind":"string","nodeType":"YulLiteral","src":"7553:27:4","type":"","value":"Transferred value is zero"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7530:6:4"},"nodeType":"YulFunctionCall","src":"7530:51:4"},"nodeType":"YulExpressionStatement","src":"7530:51:4"}]},"name":"store_literal_in_memory_4ca3cd75a1831a94a24913bfd2c9b9d35acbb11ac3447f65bb0682cf14f63f5c","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"7511:6:4","type":""}],"src":"7413:175:4"},{"body":{"nodeType":"YulBlock","src":"7637:79:4","statements":[{"body":{"nodeType":"YulBlock","src":"7694:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7703:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7706:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7696:6:4"},"nodeType":"YulFunctionCall","src":"7696:12:4"},"nodeType":"YulExpressionStatement","src":"7696:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"7660:5:4"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"7685:5:4"}],"functionName":{"name":"cleanup_t_address","nodeType":"YulIdentifier","src":"7667:17:4"},"nodeType":"YulFunctionCall","src":"7667:24:4"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"7657:2:4"},"nodeType":"YulFunctionCall","src":"7657:35:4"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"7650:6:4"},"nodeType":"YulFunctionCall","src":"7650:43:4"},"nodeType":"YulIf","src":"7647:2:4"}]},"name":"validator_revert_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"7630:5:4","type":""}],"src":"7594:122:4"},{"body":{"nodeType":"YulBlock","src":"7765:79:4","statements":[{"body":{"nodeType":"YulBlock","src":"7822:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7831:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7834:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7824:6:4"},"nodeType":"YulFunctionCall","src":"7824:12:4"},"nodeType":"YulExpressionStatement","src":"7824:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"7788:5:4"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"7813:5:4"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"7795:17:4"},"nodeType":"YulFunctionCall","src":"7795:24:4"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"7785:2:4"},"nodeType":"YulFunctionCall","src":"7785:35:4"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"7778:6:4"},"nodeType":"YulFunctionCall","src":"7778:43:4"},"nodeType":"YulIf","src":"7775:2:4"}]},"name":"validator_revert_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"7758:5:4","type":""}],"src":"7722:122:4"}]},"contents":"{\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_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_addresst_address(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(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2 {\n if slt(sub(dataEnd, headStart), 96) { 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 let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_addresst_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(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_encode_t_bool_to_t_bool_fromStack(value, pos) {\n mstore(pos, cleanup_t_bool(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_45e3d26e36c3151c7f92a1eee9add9658cbb8e14605ee2452ec007389b9744bc_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 22)\n store_literal_in_memory_45e3d26e36c3151c7f92a1eee9add9658cbb8e14605ee2452ec007389b9744bc(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_t_stringliteral_4ca3cd75a1831a94a24913bfd2c9b9d35acbb11ac3447f65bb0682cf14f63f5c_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 25)\n store_literal_in_memory_4ca3cd75a1831a94a24913bfd2c9b9d35acbb11ac3447f65bb0682cf14f63f5c(pos)\n end := add(pos, 32)\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_bool__to_t_bool__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_bool_to_t_bool_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_45e3d26e36c3151c7f92a1eee9add9658cbb8e14605ee2452ec007389b9744bc__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_45e3d26e36c3151c7f92a1eee9add9658cbb8e14605ee2452ec007389b9744bc_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function abi_encode_tuple_t_stringliteral_4ca3cd75a1831a94a24913bfd2c9b9d35acbb11ac3447f65bb0682cf14f63f5c__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_4ca3cd75a1831a94a24913bfd2c9b9d35acbb11ac3447f65bb0682cf14f63f5c_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 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_bool(value) -> cleaned {\n cleaned := iszero(iszero(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_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 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 round_up_to_mul_of_32(value) -> result {\n result := and(add(value, 31), not(31))\n }\n\n function store_literal_in_memory_45e3d26e36c3151c7f92a1eee9add9658cbb8e14605ee2452ec007389b9744bc(memPtr) {\n\n mstore(add(memPtr, 0), \"Insufficient allowance\")\n\n }\n\n function store_literal_in_memory_4ca3cd75a1831a94a24913bfd2c9b9d35acbb11ac3447f65bb0682cf14f63f5c(memPtr) {\n\n mstore(add(memPtr, 0), \"Transferred value is zero\")\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_uint256(value) {\n if iszero(eq(value, cleanup_t_uint256(value))) { revert(0, 0) }\n }\n\n}\n","id":4,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100885760003560e01c8063313ce5671161005b578063313ce5671461012957806370a0823114610147578063a9059cbb14610177578063dd62ed3e146101a757610088565b806306fdde031461008d578063095ea7b3146100ab57806318160ddd146100db57806323b872dd146100f9575b600080fd5b6100956101d7565b6040516100a29190610801565b60405180910390f35b6100c560048036038101906100c0919061070d565b610265565b6040516100d291906107e6565b60405180910390f35b6100e36102f2565b6040516100f09190610863565b60405180910390f35b610113600480360381019061010e91906106be565b6102f8565b60405161012091906107e6565b60405180910390f35b610131610490565b60405161013e9190610863565b60405180910390f35b610161600480360381019061015c9190610659565b610496565b60405161016e9190610863565b60405180910390f35b610191600480360381019061018c919061070d565b6104ae565b60405161019e91906107e6565b60405180910390f35b6101c160048036038101906101bc9190610682565b6105a8565b6040516101ce9190610863565b60405180910390f35b600480546101e49061099f565b80601f01602080910402602001604051908101604052809291908181526020018280546102109061099f565b801561025d5780601f106102325761010080835404028352916020019161025d565b820191906000526020600020905b81548152906001019060200180831161024057829003601f168201915b505050505081565b600081600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001905092915050565b60015481565b60008161030585336105a8565b1015610346576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161033d90610823565b60405180910390fd5b81600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546103d291906108f0565b9250508190555081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461042891906108f0565b9250508190555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461047e919061089a565b92505081905550600190509392505050565b60005481565b60026020528060005260406000206000915090505481565b60008082116104f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104e990610843565b60405180910390fd5b81600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461054191906108f0565b9250508190555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610597919061089a565b925050819055506001905092915050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008135905061063e81610a92565b92915050565b60008135905061065381610aa9565b92915050565b60006020828403121561066b57600080fd5b60006106798482850161062f565b91505092915050565b6000806040838503121561069557600080fd5b60006106a38582860161062f565b92505060206106b48582860161062f565b9150509250929050565b6000806000606084860312156106d357600080fd5b60006106e18682870161062f565b93505060206106f28682870161062f565b925050604061070386828701610644565b9150509250925092565b6000806040838503121561072057600080fd5b600061072e8582860161062f565b925050602061073f85828601610644565b9150509250929050565b61075281610936565b82525050565b60006107638261087e565b61076d8185610889565b935061077d81856020860161096c565b61078681610a2f565b840191505092915050565b600061079e601683610889565b91506107a982610a40565b602082019050919050565b60006107c1601983610889565b91506107cc82610a69565b602082019050919050565b6107e081610962565b82525050565b60006020820190506107fb6000830184610749565b92915050565b6000602082019050818103600083015261081b8184610758565b905092915050565b6000602082019050818103600083015261083c81610791565b9050919050565b6000602082019050818103600083015261085c816107b4565b9050919050565b600060208201905061087860008301846107d7565b92915050565b600081519050919050565b600082825260208201905092915050565b60006108a582610962565b91506108b083610962565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156108e5576108e46109d1565b5b828201905092915050565b60006108fb82610962565b915061090683610962565b925082821015610919576109186109d1565b5b828203905092915050565b600061092f82610942565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b8381101561098a57808201518184015260208101905061096f565b83811115610999576000848401525b50505050565b600060028204905060018216806109b757607f821691505b602082108114156109cb576109ca610a00565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f496e73756666696369656e7420616c6c6f77616e636500000000000000000000600082015250565b7f5472616e736665727265642076616c7565206973207a65726f00000000000000600082015250565b610a9b81610924565b8114610aa657600080fd5b50565b610ab281610962565b8114610abd57600080fd5b5056fea2646970667358221220a6fcd04aa893368d0e3e9a004a848844c520623183d6b2111fbc6f837204d0fa64736f6c63430008040033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x88 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x313CE567 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x129 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x147 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x177 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x1A7 JUMPI PUSH2 0x88 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x8D JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0xAB JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0xDB JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0xF9 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x95 PUSH2 0x1D7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xA2 SWAP2 SWAP1 PUSH2 0x801 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xC5 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xC0 SWAP2 SWAP1 PUSH2 0x70D JUMP JUMPDEST PUSH2 0x265 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xD2 SWAP2 SWAP1 PUSH2 0x7E6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xE3 PUSH2 0x2F2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xF0 SWAP2 SWAP1 PUSH2 0x863 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x113 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x10E SWAP2 SWAP1 PUSH2 0x6BE JUMP JUMPDEST PUSH2 0x2F8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x120 SWAP2 SWAP1 PUSH2 0x7E6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x131 PUSH2 0x490 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x13E SWAP2 SWAP1 PUSH2 0x863 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x161 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x15C SWAP2 SWAP1 PUSH2 0x659 JUMP JUMPDEST PUSH2 0x496 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x16E SWAP2 SWAP1 PUSH2 0x863 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x191 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x18C SWAP2 SWAP1 PUSH2 0x70D JUMP JUMPDEST PUSH2 0x4AE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x19E SWAP2 SWAP1 PUSH2 0x7E6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1C1 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1BC SWAP2 SWAP1 PUSH2 0x682 JUMP JUMPDEST PUSH2 0x5A8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1CE SWAP2 SWAP1 PUSH2 0x863 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH2 0x1E4 SWAP1 PUSH2 0x99F 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 0x210 SWAP1 PUSH2 0x99F JUMP JUMPDEST DUP1 ISZERO PUSH2 0x25D JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x232 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x25D 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 0x240 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x3 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 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP PUSH1 0x1 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x305 DUP6 CALLER PUSH2 0x5A8 JUMP JUMPDEST LT ISZERO PUSH2 0x346 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x33D SWAP1 PUSH2 0x823 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 PUSH1 0x3 PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 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 0x3D2 SWAP2 SWAP1 PUSH2 0x8F0 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x2 PUSH1 0x0 DUP7 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 0x428 SWAP2 SWAP1 PUSH2 0x8F0 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x2 PUSH1 0x0 DUP6 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 0x47E SWAP2 SWAP1 PUSH2 0x89A JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH1 0x1 SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD 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 DUP3 GT PUSH2 0x4F2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4E9 SWAP1 PUSH2 0x843 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 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 0x541 SWAP2 SWAP1 PUSH2 0x8F0 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x2 PUSH1 0x0 DUP6 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 0x597 SWAP2 SWAP1 PUSH2 0x89A JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH1 0x1 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x3 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x63E DUP2 PUSH2 0xA92 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x653 DUP2 PUSH2 0xAA9 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x66B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x679 DUP5 DUP3 DUP6 ADD PUSH2 0x62F JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x695 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x6A3 DUP6 DUP3 DUP7 ADD PUSH2 0x62F JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x6B4 DUP6 DUP3 DUP7 ADD PUSH2 0x62F JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x6D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x6E1 DUP7 DUP3 DUP8 ADD PUSH2 0x62F JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x6F2 DUP7 DUP3 DUP8 ADD PUSH2 0x62F JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x703 DUP7 DUP3 DUP8 ADD PUSH2 0x644 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x720 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x72E DUP6 DUP3 DUP7 ADD PUSH2 0x62F JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x73F DUP6 DUP3 DUP7 ADD PUSH2 0x644 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH2 0x752 DUP2 PUSH2 0x936 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x763 DUP3 PUSH2 0x87E JUMP JUMPDEST PUSH2 0x76D DUP2 DUP6 PUSH2 0x889 JUMP JUMPDEST SWAP4 POP PUSH2 0x77D DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x96C JUMP JUMPDEST PUSH2 0x786 DUP2 PUSH2 0xA2F JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x79E PUSH1 0x16 DUP4 PUSH2 0x889 JUMP JUMPDEST SWAP2 POP PUSH2 0x7A9 DUP3 PUSH2 0xA40 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7C1 PUSH1 0x19 DUP4 PUSH2 0x889 JUMP JUMPDEST SWAP2 POP PUSH2 0x7CC DUP3 PUSH2 0xA69 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x7E0 DUP2 PUSH2 0x962 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x7FB PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x749 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 0x81B DUP2 DUP5 PUSH2 0x758 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 0x83C DUP2 PUSH2 0x791 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 0x85C DUP2 PUSH2 0x7B4 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x878 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x7D7 JUMP JUMPDEST SWAP3 SWAP2 POP 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 0x8A5 DUP3 PUSH2 0x962 JUMP JUMPDEST SWAP2 POP PUSH2 0x8B0 DUP4 PUSH2 0x962 JUMP JUMPDEST SWAP3 POP DUP3 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SUB DUP3 GT ISZERO PUSH2 0x8E5 JUMPI PUSH2 0x8E4 PUSH2 0x9D1 JUMP JUMPDEST JUMPDEST DUP3 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8FB DUP3 PUSH2 0x962 JUMP JUMPDEST SWAP2 POP PUSH2 0x906 DUP4 PUSH2 0x962 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 LT ISZERO PUSH2 0x919 JUMPI PUSH2 0x918 PUSH2 0x9D1 JUMP JUMPDEST JUMPDEST DUP3 DUP3 SUB SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x92F DUP3 PUSH2 0x942 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO ISZERO 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 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x98A JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x96F JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x999 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 0x9B7 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 EQ ISZERO PUSH2 0x9CB JUMPI PUSH2 0x9CA PUSH2 0xA00 JUMP JUMPDEST JUMPDEST POP SWAP2 SWAP1 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 PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x496E73756666696369656E7420616C6C6F77616E636500000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH32 0x5472616E736665727265642076616C7565206973207A65726F00000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH2 0xA9B DUP2 PUSH2 0x924 JUMP JUMPDEST DUP2 EQ PUSH2 0xAA6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0xAB2 DUP2 PUSH2 0x962 JUMP JUMPDEST DUP2 EQ PUSH2 0xABD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xA6 0xFC 0xD0 0x4A 0xA8 SWAP4 CALLDATASIZE DUP14 0xE RETURNDATACOPY SWAP11 STOP 0x4A DUP5 DUP9 DIFFICULTY 0xC5 KECCAK256 PUSH3 0x3183D6 0xB2 GT 0x1F 0xBC PUSH16 0x837204D0FA64736F6C63430008040033 ","sourceMap":"1144:95:3:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1204:32;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;703:146;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;125:23;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;853:287;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;96:24;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;152:41;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;355:205;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;564:135;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1204:32;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;703:146::-;768:12;822:5;788:10;:22;799:10;788:22;;;;;;;;;;;;;;;:31;811:7;788:31;;;;;;;;;;;;;;;:39;;;;840:4;833:11;;703:146;;;;:::o;125:23::-;;;;:::o;853:287::-;932:4;983:5;952:27;962:4;968:10;952:9;:27::i;:::-;:36;;944:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;1054:5;1022:10;:16;1033:4;1022:16;;;;;;;;;;;;;;;:28;1039:10;1022:28;;;;;;;;;;;;;;;;:37;;;;;;;:::i;:::-;;;;;;;;1084:5;1065:9;:15;1075:4;1065:15;;;;;;;;;;;;;;;;:24;;;;;;;:::i;:::-;;;;;;;;1112:5;1095:9;:13;1105:2;1095:13;;;;;;;;;;;;;;;;:22;;;;;;;:::i;:::-;;;;;;;;1131:4;1124:11;;853:287;;;;;:::o;96:24::-;;;;:::o;152:41::-;;;;;;;;;;;;;;;;;:::o;355:205::-;413:4;441:1;433:5;:9;425:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;504:5;479:9;:21;489:10;479:21;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;532:5;515:9;:13;525:2;515:13;;;;;;;;;;;;;;;;:22;;;;;;;:::i;:::-;;;;;;;;551:4;544:11;;355:205;;;;:::o;564:135::-;636:17;668:10;:17;679:5;668:17;;;;;;;;;;;;;;;:26;686:7;668:26;;;;;;;;;;;;;;;;661:33;;564:135;;;;:::o;7:139:4:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:139::-;198:5;236:6;223:20;214:29;;252:33;279:5;252:33;:::i;:::-;204:87;;;;:::o;297:262::-;356:6;405:2;393:9;384:7;380:23;376:32;373:2;;;421:1;418;411:12;373:2;464:1;489:53;534:7;525:6;514:9;510:22;489:53;:::i;:::-;479:63;;435:117;363:196;;;;:::o;565:407::-;633:6;641;690:2;678:9;669:7;665:23;661:32;658:2;;;706:1;703;696:12;658:2;749:1;774:53;819:7;810:6;799:9;795:22;774:53;:::i;:::-;764:63;;720:117;876:2;902:53;947:7;938:6;927:9;923:22;902:53;:::i;:::-;892:63;;847:118;648:324;;;;;:::o;978:552::-;1055:6;1063;1071;1120:2;1108:9;1099:7;1095:23;1091:32;1088:2;;;1136:1;1133;1126:12;1088:2;1179:1;1204:53;1249:7;1240:6;1229:9;1225:22;1204:53;:::i;:::-;1194:63;;1150:117;1306:2;1332:53;1377:7;1368:6;1357:9;1353:22;1332:53;:::i;:::-;1322:63;;1277:118;1434:2;1460:53;1505:7;1496:6;1485:9;1481:22;1460:53;:::i;:::-;1450:63;;1405:118;1078:452;;;;;:::o;1536:407::-;1604:6;1612;1661:2;1649:9;1640:7;1636:23;1632:32;1629:2;;;1677:1;1674;1667:12;1629:2;1720:1;1745:53;1790:7;1781:6;1770:9;1766:22;1745:53;:::i;:::-;1735:63;;1691:117;1847:2;1873:53;1918:7;1909:6;1898:9;1894:22;1873:53;:::i;:::-;1863:63;;1818:118;1619:324;;;;;:::o;1949:109::-;2030:21;2045:5;2030:21;:::i;:::-;2025:3;2018:34;2008:50;;:::o;2064:364::-;2152:3;2180:39;2213:5;2180:39;:::i;:::-;2235:71;2299:6;2294:3;2235:71;:::i;:::-;2228:78;;2315:52;2360:6;2355:3;2348:4;2341:5;2337:16;2315:52;:::i;:::-;2392:29;2414:6;2392:29;:::i;:::-;2387:3;2383:39;2376:46;;2156:272;;;;;:::o;2434:366::-;2576:3;2597:67;2661:2;2656:3;2597:67;:::i;:::-;2590:74;;2673:93;2762:3;2673:93;:::i;:::-;2791:2;2786:3;2782:12;2775:19;;2580:220;;;:::o;2806:366::-;2948:3;2969:67;3033:2;3028:3;2969:67;:::i;:::-;2962:74;;3045:93;3134:3;3045:93;:::i;:::-;3163:2;3158:3;3154:12;3147:19;;2952:220;;;:::o;3178:118::-;3265:24;3283:5;3265:24;:::i;:::-;3260:3;3253:37;3243:53;;:::o;3302:210::-;3389:4;3427:2;3416:9;3412:18;3404:26;;3440:65;3502:1;3491:9;3487:17;3478:6;3440:65;:::i;:::-;3394:118;;;;:::o;3518:313::-;3631:4;3669:2;3658:9;3654:18;3646:26;;3718:9;3712:4;3708:20;3704:1;3693:9;3689:17;3682:47;3746:78;3819:4;3810:6;3746:78;:::i;:::-;3738:86;;3636:195;;;;:::o;3837:419::-;4003:4;4041:2;4030:9;4026:18;4018:26;;4090:9;4084:4;4080:20;4076:1;4065:9;4061:17;4054:47;4118:131;4244:4;4118:131;:::i;:::-;4110:139;;4008:248;;;:::o;4262:419::-;4428:4;4466:2;4455:9;4451:18;4443:26;;4515:9;4509:4;4505:20;4501:1;4490:9;4486:17;4479:47;4543:131;4669:4;4543:131;:::i;:::-;4535:139;;4433:248;;;:::o;4687:222::-;4780:4;4818:2;4807:9;4803:18;4795:26;;4831:71;4899:1;4888:9;4884:17;4875:6;4831:71;:::i;:::-;4785:124;;;;:::o;4915:99::-;4967:6;5001:5;4995:12;4985:22;;4974:40;;;:::o;5020:169::-;5104:11;5138:6;5133:3;5126:19;5178:4;5173:3;5169:14;5154:29;;5116:73;;;;:::o;5195:305::-;5235:3;5254:20;5272:1;5254:20;:::i;:::-;5249:25;;5288:20;5306:1;5288:20;:::i;:::-;5283:25;;5442:1;5374:66;5370:74;5367:1;5364:81;5361:2;;;5448:18;;:::i;:::-;5361:2;5492:1;5489;5485:9;5478:16;;5239:261;;;;:::o;5506:191::-;5546:4;5566:20;5584:1;5566:20;:::i;:::-;5561:25;;5600:20;5618:1;5600:20;:::i;:::-;5595:25;;5639:1;5636;5633:8;5630:2;;;5644:18;;:::i;:::-;5630:2;5689:1;5686;5682:9;5674:17;;5551:146;;;;:::o;5703:96::-;5740:7;5769:24;5787:5;5769:24;:::i;:::-;5758:35;;5748:51;;;:::o;5805:90::-;5839:7;5882:5;5875:13;5868:21;5857:32;;5847:48;;;:::o;5901:126::-;5938:7;5978:42;5971:5;5967:54;5956:65;;5946:81;;;:::o;6033:77::-;6070:7;6099:5;6088:16;;6078:32;;;:::o;6116:307::-;6184:1;6194:113;6208:6;6205:1;6202:13;6194:113;;;6293:1;6288:3;6284:11;6278:18;6274:1;6269:3;6265:11;6258:39;6230:2;6227:1;6223:10;6218:15;;6194:113;;;6325:6;6322:1;6319:13;6316:2;;;6405:1;6396:6;6391:3;6387:16;6380:27;6316:2;6165:258;;;;:::o;6429:320::-;6473:6;6510:1;6504:4;6500:12;6490:22;;6557:1;6551:4;6547:12;6578:18;6568:2;;6634:4;6626:6;6622:17;6612:27;;6568:2;6696;6688:6;6685:14;6665:18;6662:38;6659:2;;;6715:18;;:::i;:::-;6659:2;6480:269;;;;:::o;6755:180::-;6803:77;6800:1;6793:88;6900:4;6897:1;6890:15;6924:4;6921:1;6914:15;6941:180;6989:77;6986:1;6979:88;7086:4;7083:1;7076:15;7110:4;7107:1;7100:15;7127:102;7168:6;7219:2;7215:7;7210:2;7203:5;7199:14;7195:28;7185:38;;7175:54;;;:::o;7235:172::-;7375:24;7371:1;7363:6;7359:14;7352:48;7341:66;:::o;7413:175::-;7553:27;7549:1;7541:6;7537:14;7530:51;7519:69;:::o;7594:122::-;7667:24;7685:5;7667:24;:::i;:::-;7660:5;7657:35;7647:2;;7706:1;7703;7696:12;7647:2;7637:79;:::o;7722:122::-;7795:24;7813:5;7795:24;:::i;:::-;7788:5;7785:35;7775:2;;7834:1;7831;7824:12;7775:2;7765:79;:::o"},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","name()":"06fdde03","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.4+commit.c7e474f2\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"remaining\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/Token.sol\":\"TokenWithOnlyName\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/Token.sol\":{\"keccak256\":\"0x3c98df2a7295115a107e950c40733f37ce5384cf18a0b5efb948ccf6d1acaa59\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://21c0d9ad7fee4c50e057a477ec0c151985566e51e1df46d3dc42f4320eceeccf\",\"dweb:/ipfs/QmSVvnCWd9MH3F93atgJGuwbHMJpifnoMLSosQsZUKUrZ8\"]}},\"version\":1}"},"TokenWithoutNameNorSymbol":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"remaining","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"6080604052600160005534801561001557600080fd5b50633b9aca00600181905550600154600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610934806100766000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c8063313ce5671161005b578063313ce5671461010057806370a082311461011e578063a9059cbb1461014e578063dd62ed3e1461017e5761007d565b8063095ea7b31461008257806318160ddd146100b257806323b872dd146100d0575b600080fd5b61009c60048036038101906100979190610656565b6101ae565b6040516100a991906106f6565b60405180910390f35b6100ba61023b565b6040516100c79190610751565b60405180910390f35b6100ea60048036038101906100e59190610607565b610241565b6040516100f791906106f6565b60405180910390f35b6101086103d9565b6040516101159190610751565b60405180910390f35b610138600480360381019061013391906105a2565b6103df565b6040516101459190610751565b60405180910390f35b61016860048036038101906101639190610656565b6103f7565b60405161017591906106f6565b60405180910390f35b610198600480360381019061019391906105cb565b6104f1565b6040516101a59190610751565b60405180910390f35b600081600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001905092915050565b60015481565b60008161024e85336104f1565b101561028f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161028690610711565b60405180910390fd5b81600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461031b91906107d3565b9250508190555081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461037191906107d3565b9250508190555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546103c7919061077d565b92505081905550600190509392505050565b60005481565b60026020528060005260406000206000915090505481565b600080821161043b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043290610731565b60405180910390fd5b81600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461048a91906107d3565b9250508190555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546104e0919061077d565b925050819055506001905092915050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600081359050610587816108d0565b92915050565b60008135905061059c816108e7565b92915050565b6000602082840312156105b457600080fd5b60006105c284828501610578565b91505092915050565b600080604083850312156105de57600080fd5b60006105ec85828601610578565b92505060206105fd85828601610578565b9150509250929050565b60008060006060848603121561061c57600080fd5b600061062a86828701610578565b935050602061063b86828701610578565b925050604061064c8682870161058d565b9150509250925092565b6000806040838503121561066957600080fd5b600061067785828601610578565b92505060206106888582860161058d565b9150509250929050565b61069b81610819565b82525050565b60006106ae60168361076c565b91506106b98261087e565b602082019050919050565b60006106d160198361076c565b91506106dc826108a7565b602082019050919050565b6106f081610845565b82525050565b600060208201905061070b6000830184610692565b92915050565b6000602082019050818103600083015261072a816106a1565b9050919050565b6000602082019050818103600083015261074a816106c4565b9050919050565b600060208201905061076660008301846106e7565b92915050565b600082825260208201905092915050565b600061078882610845565b915061079383610845565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156107c8576107c761084f565b5b828201905092915050565b60006107de82610845565b91506107e983610845565b9250828210156107fc576107fb61084f565b5b828203905092915050565b600061081282610825565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f496e73756666696369656e7420616c6c6f77616e636500000000000000000000600082015250565b7f5472616e736665727265642076616c7565206973207a65726f00000000000000600082015250565b6108d981610807565b81146108e457600080fd5b50565b6108f081610845565b81146108fb57600080fd5b5056fea2646970667358221220a8a6918adf2af132e4e49a96a108a2d9c62cfb74de3e267b6c8af323b87f6ec964736f6c63430008040033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x1 PUSH1 0x0 SSTORE CALLVALUE DUP1 ISZERO PUSH2 0x15 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH4 0x3B9ACA00 PUSH1 0x1 DUP2 SWAP1 SSTORE POP PUSH1 0x1 SLOAD 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 DUP2 SWAP1 SSTORE POP PUSH2 0x934 DUP1 PUSH2 0x76 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x7D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x313CE567 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x100 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x11E JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x14E JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x17E JUMPI PUSH2 0x7D JUMP JUMPDEST DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x82 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0xB2 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0xD0 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9C PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x97 SWAP2 SWAP1 PUSH2 0x656 JUMP JUMPDEST PUSH2 0x1AE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xA9 SWAP2 SWAP1 PUSH2 0x6F6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xBA PUSH2 0x23B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xC7 SWAP2 SWAP1 PUSH2 0x751 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xEA PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xE5 SWAP2 SWAP1 PUSH2 0x607 JUMP JUMPDEST PUSH2 0x241 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xF7 SWAP2 SWAP1 PUSH2 0x6F6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x108 PUSH2 0x3D9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x115 SWAP2 SWAP1 PUSH2 0x751 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x138 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x133 SWAP2 SWAP1 PUSH2 0x5A2 JUMP JUMPDEST PUSH2 0x3DF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x145 SWAP2 SWAP1 PUSH2 0x751 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x168 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x163 SWAP2 SWAP1 PUSH2 0x656 JUMP JUMPDEST PUSH2 0x3F7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x175 SWAP2 SWAP1 PUSH2 0x6F6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x198 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x193 SWAP2 SWAP1 PUSH2 0x5CB JUMP JUMPDEST PUSH2 0x4F1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1A5 SWAP2 SWAP1 PUSH2 0x751 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x3 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 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP PUSH1 0x1 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x24E DUP6 CALLER PUSH2 0x4F1 JUMP JUMPDEST LT ISZERO PUSH2 0x28F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x286 SWAP1 PUSH2 0x711 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 PUSH1 0x3 PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 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 0x31B SWAP2 SWAP1 PUSH2 0x7D3 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x2 PUSH1 0x0 DUP7 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 0x371 SWAP2 SWAP1 PUSH2 0x7D3 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x2 PUSH1 0x0 DUP6 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 0x3C7 SWAP2 SWAP1 PUSH2 0x77D JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH1 0x1 SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD 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 DUP3 GT PUSH2 0x43B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x432 SWAP1 PUSH2 0x731 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 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 0x48A SWAP2 SWAP1 PUSH2 0x7D3 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x2 PUSH1 0x0 DUP6 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 0x4E0 SWAP2 SWAP1 PUSH2 0x77D JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH1 0x1 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x3 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x587 DUP2 PUSH2 0x8D0 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x59C DUP2 PUSH2 0x8E7 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x5B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x5C2 DUP5 DUP3 DUP6 ADD PUSH2 0x578 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x5DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x5EC DUP6 DUP3 DUP7 ADD PUSH2 0x578 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x5FD DUP6 DUP3 DUP7 ADD PUSH2 0x578 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x61C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x62A DUP7 DUP3 DUP8 ADD PUSH2 0x578 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x63B DUP7 DUP3 DUP8 ADD PUSH2 0x578 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x64C DUP7 DUP3 DUP8 ADD PUSH2 0x58D JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x669 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x677 DUP6 DUP3 DUP7 ADD PUSH2 0x578 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x688 DUP6 DUP3 DUP7 ADD PUSH2 0x58D JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH2 0x69B DUP2 PUSH2 0x819 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6AE PUSH1 0x16 DUP4 PUSH2 0x76C JUMP JUMPDEST SWAP2 POP PUSH2 0x6B9 DUP3 PUSH2 0x87E JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6D1 PUSH1 0x19 DUP4 PUSH2 0x76C JUMP JUMPDEST SWAP2 POP PUSH2 0x6DC DUP3 PUSH2 0x8A7 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x6F0 DUP2 PUSH2 0x845 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x70B PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x692 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 0x72A DUP2 PUSH2 0x6A1 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 0x74A DUP2 PUSH2 0x6C4 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x766 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x6E7 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x788 DUP3 PUSH2 0x845 JUMP JUMPDEST SWAP2 POP PUSH2 0x793 DUP4 PUSH2 0x845 JUMP JUMPDEST SWAP3 POP DUP3 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SUB DUP3 GT ISZERO PUSH2 0x7C8 JUMPI PUSH2 0x7C7 PUSH2 0x84F JUMP JUMPDEST JUMPDEST DUP3 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7DE DUP3 PUSH2 0x845 JUMP JUMPDEST SWAP2 POP PUSH2 0x7E9 DUP4 PUSH2 0x845 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 LT ISZERO PUSH2 0x7FC JUMPI PUSH2 0x7FB PUSH2 0x84F JUMP JUMPDEST JUMPDEST DUP3 DUP3 SUB SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x812 DUP3 PUSH2 0x825 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO ISZERO 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 PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x496E73756666696369656E7420616C6C6F77616E636500000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH32 0x5472616E736665727265642076616C7565206973207A65726F00000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH2 0x8D9 DUP2 PUSH2 0x807 JUMP JUMPDEST DUP2 EQ PUSH2 0x8E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x8F0 DUP2 PUSH2 0x845 JUMP JUMPDEST DUP2 EQ PUSH2 0x8FB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xA8 0xA6 SWAP2 DUP11 0xDF 0x2A CALL ORIGIN 0xE4 0xE4 SWAP11 SWAP7 LOG1 ADDMOD LOG2 0xD9 0xC6 0x2C 0xFB PUSH21 0xDE3E267B6C8AF323B87F6EC964736F6C6343000804 STOP CALLER ","sourceMap":"57:1085:3:-:0;;;119:1;96:24;;257:94;;;;;;;;;;292:13;278:11;:27;;;;335:11;;311:9;:21;321:10;311:21;;;;;;;;;;;;;;;:35;;;;57:1085;;;;;;"},"deployedBytecode":{"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:6120:4","statements":[{"body":{"nodeType":"YulBlock","src":"59:87:4","statements":[{"nodeType":"YulAssignment","src":"69:29:4","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"91:6:4"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"78:12:4"},"nodeType":"YulFunctionCall","src":"78:20:4"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"69:5:4"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"134:5:4"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"107:26:4"},"nodeType":"YulFunctionCall","src":"107:33:4"},"nodeType":"YulExpressionStatement","src":"107:33:4"}]},"name":"abi_decode_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"37:6:4","type":""},{"name":"end","nodeType":"YulTypedName","src":"45:3:4","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"53:5:4","type":""}],"src":"7:139:4"},{"body":{"nodeType":"YulBlock","src":"204:87:4","statements":[{"nodeType":"YulAssignment","src":"214:29:4","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"236:6:4"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"223:12:4"},"nodeType":"YulFunctionCall","src":"223:20:4"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"214:5:4"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"279:5:4"}],"functionName":{"name":"validator_revert_t_uint256","nodeType":"YulIdentifier","src":"252:26:4"},"nodeType":"YulFunctionCall","src":"252:33:4"},"nodeType":"YulExpressionStatement","src":"252:33:4"}]},"name":"abi_decode_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"182:6:4","type":""},{"name":"end","nodeType":"YulTypedName","src":"190:3:4","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"198:5:4","type":""}],"src":"152:139:4"},{"body":{"nodeType":"YulBlock","src":"363:196:4","statements":[{"body":{"nodeType":"YulBlock","src":"409:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"418:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"421:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"411:6:4"},"nodeType":"YulFunctionCall","src":"411:12:4"},"nodeType":"YulExpressionStatement","src":"411:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"384:7:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"393:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"380:3:4"},"nodeType":"YulFunctionCall","src":"380:23:4"},{"kind":"number","nodeType":"YulLiteral","src":"405:2:4","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"376:3:4"},"nodeType":"YulFunctionCall","src":"376:32:4"},"nodeType":"YulIf","src":"373:2:4"},{"nodeType":"YulBlock","src":"435:117:4","statements":[{"nodeType":"YulVariableDeclaration","src":"450:15:4","value":{"kind":"number","nodeType":"YulLiteral","src":"464:1:4","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"454:6:4","type":""}]},{"nodeType":"YulAssignment","src":"479:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"514:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"525:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"510:3:4"},"nodeType":"YulFunctionCall","src":"510:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"534:7:4"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"489:20:4"},"nodeType":"YulFunctionCall","src":"489:53:4"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"479:6:4"}]}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"333:9:4","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"344:7:4","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"356:6:4","type":""}],"src":"297:262:4"},{"body":{"nodeType":"YulBlock","src":"648:324:4","statements":[{"body":{"nodeType":"YulBlock","src":"694:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"703:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"706:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"696:6:4"},"nodeType":"YulFunctionCall","src":"696:12:4"},"nodeType":"YulExpressionStatement","src":"696:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"669:7:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"678:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"665:3:4"},"nodeType":"YulFunctionCall","src":"665:23:4"},{"kind":"number","nodeType":"YulLiteral","src":"690:2:4","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"661:3:4"},"nodeType":"YulFunctionCall","src":"661:32:4"},"nodeType":"YulIf","src":"658:2:4"},{"nodeType":"YulBlock","src":"720:117:4","statements":[{"nodeType":"YulVariableDeclaration","src":"735:15:4","value":{"kind":"number","nodeType":"YulLiteral","src":"749:1:4","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"739:6:4","type":""}]},{"nodeType":"YulAssignment","src":"764:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"799:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"810:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"795:3:4"},"nodeType":"YulFunctionCall","src":"795:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"819:7:4"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"774:20:4"},"nodeType":"YulFunctionCall","src":"774:53:4"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"764:6:4"}]}]},{"nodeType":"YulBlock","src":"847:118:4","statements":[{"nodeType":"YulVariableDeclaration","src":"862:16:4","value":{"kind":"number","nodeType":"YulLiteral","src":"876:2:4","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"866:6:4","type":""}]},{"nodeType":"YulAssignment","src":"892:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"927:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"938:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"923:3:4"},"nodeType":"YulFunctionCall","src":"923:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"947:7:4"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"902:20:4"},"nodeType":"YulFunctionCall","src":"902:53:4"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"892:6:4"}]}]}]},"name":"abi_decode_tuple_t_addresst_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"610:9:4","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"621:7:4","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"633:6:4","type":""},{"name":"value1","nodeType":"YulTypedName","src":"641:6:4","type":""}],"src":"565:407:4"},{"body":{"nodeType":"YulBlock","src":"1078:452:4","statements":[{"body":{"nodeType":"YulBlock","src":"1124:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1133:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1136:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1126:6:4"},"nodeType":"YulFunctionCall","src":"1126:12:4"},"nodeType":"YulExpressionStatement","src":"1126:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1099:7:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"1108:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1095:3:4"},"nodeType":"YulFunctionCall","src":"1095:23:4"},{"kind":"number","nodeType":"YulLiteral","src":"1120:2:4","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1091:3:4"},"nodeType":"YulFunctionCall","src":"1091:32:4"},"nodeType":"YulIf","src":"1088:2:4"},{"nodeType":"YulBlock","src":"1150:117:4","statements":[{"nodeType":"YulVariableDeclaration","src":"1165:15:4","value":{"kind":"number","nodeType":"YulLiteral","src":"1179:1:4","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1169:6:4","type":""}]},{"nodeType":"YulAssignment","src":"1194:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1229:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"1240:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1225:3:4"},"nodeType":"YulFunctionCall","src":"1225:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1249:7:4"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"1204:20:4"},"nodeType":"YulFunctionCall","src":"1204:53:4"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1194:6:4"}]}]},{"nodeType":"YulBlock","src":"1277:118:4","statements":[{"nodeType":"YulVariableDeclaration","src":"1292:16:4","value":{"kind":"number","nodeType":"YulLiteral","src":"1306:2:4","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1296:6:4","type":""}]},{"nodeType":"YulAssignment","src":"1322:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1357:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"1368:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1353:3:4"},"nodeType":"YulFunctionCall","src":"1353:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1377:7:4"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"1332:20:4"},"nodeType":"YulFunctionCall","src":"1332:53:4"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1322:6:4"}]}]},{"nodeType":"YulBlock","src":"1405:118:4","statements":[{"nodeType":"YulVariableDeclaration","src":"1420:16:4","value":{"kind":"number","nodeType":"YulLiteral","src":"1434:2:4","type":"","value":"64"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1424:6:4","type":""}]},{"nodeType":"YulAssignment","src":"1450:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1485:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"1496:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1481:3:4"},"nodeType":"YulFunctionCall","src":"1481:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1505:7:4"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"1460:20:4"},"nodeType":"YulFunctionCall","src":"1460:53:4"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"1450:6:4"}]}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1032:9:4","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1043:7:4","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1055:6:4","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1063:6:4","type":""},{"name":"value2","nodeType":"YulTypedName","src":"1071:6:4","type":""}],"src":"978:552:4"},{"body":{"nodeType":"YulBlock","src":"1619:324:4","statements":[{"body":{"nodeType":"YulBlock","src":"1665:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1674:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1677:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1667:6:4"},"nodeType":"YulFunctionCall","src":"1667:12:4"},"nodeType":"YulExpressionStatement","src":"1667:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1640:7:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"1649:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1636:3:4"},"nodeType":"YulFunctionCall","src":"1636:23:4"},{"kind":"number","nodeType":"YulLiteral","src":"1661:2:4","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1632:3:4"},"nodeType":"YulFunctionCall","src":"1632:32:4"},"nodeType":"YulIf","src":"1629:2:4"},{"nodeType":"YulBlock","src":"1691:117:4","statements":[{"nodeType":"YulVariableDeclaration","src":"1706:15:4","value":{"kind":"number","nodeType":"YulLiteral","src":"1720:1:4","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1710:6:4","type":""}]},{"nodeType":"YulAssignment","src":"1735:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1770:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"1781:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1766:3:4"},"nodeType":"YulFunctionCall","src":"1766:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1790:7:4"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"1745:20:4"},"nodeType":"YulFunctionCall","src":"1745:53:4"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1735:6:4"}]}]},{"nodeType":"YulBlock","src":"1818:118:4","statements":[{"nodeType":"YulVariableDeclaration","src":"1833:16:4","value":{"kind":"number","nodeType":"YulLiteral","src":"1847:2:4","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1837:6:4","type":""}]},{"nodeType":"YulAssignment","src":"1863:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1898:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"1909:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1894:3:4"},"nodeType":"YulFunctionCall","src":"1894:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1918:7:4"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"1873:20:4"},"nodeType":"YulFunctionCall","src":"1873:53:4"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1863:6:4"}]}]}]},"name":"abi_decode_tuple_t_addresst_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1581:9:4","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1592:7:4","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1604:6:4","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1612:6:4","type":""}],"src":"1536:407:4"},{"body":{"nodeType":"YulBlock","src":"2008:50:4","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2025:3:4"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2045:5:4"}],"functionName":{"name":"cleanup_t_bool","nodeType":"YulIdentifier","src":"2030:14:4"},"nodeType":"YulFunctionCall","src":"2030:21:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2018:6:4"},"nodeType":"YulFunctionCall","src":"2018:34:4"},"nodeType":"YulExpressionStatement","src":"2018:34:4"}]},"name":"abi_encode_t_bool_to_t_bool_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1996:5:4","type":""},{"name":"pos","nodeType":"YulTypedName","src":"2003:3:4","type":""}],"src":"1949:109:4"},{"body":{"nodeType":"YulBlock","src":"2210:220:4","statements":[{"nodeType":"YulAssignment","src":"2220:74:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2286:3:4"},{"kind":"number","nodeType":"YulLiteral","src":"2291:2:4","type":"","value":"22"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"2227:58:4"},"nodeType":"YulFunctionCall","src":"2227:67:4"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"2220:3:4"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2392:3:4"}],"functionName":{"name":"store_literal_in_memory_45e3d26e36c3151c7f92a1eee9add9658cbb8e14605ee2452ec007389b9744bc","nodeType":"YulIdentifier","src":"2303:88:4"},"nodeType":"YulFunctionCall","src":"2303:93:4"},"nodeType":"YulExpressionStatement","src":"2303:93:4"},{"nodeType":"YulAssignment","src":"2405:19:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2416:3:4"},{"kind":"number","nodeType":"YulLiteral","src":"2421:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2412:3:4"},"nodeType":"YulFunctionCall","src":"2412:12:4"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"2405:3:4"}]}]},"name":"abi_encode_t_stringliteral_45e3d26e36c3151c7f92a1eee9add9658cbb8e14605ee2452ec007389b9744bc_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"2198:3:4","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"2206:3:4","type":""}],"src":"2064:366:4"},{"body":{"nodeType":"YulBlock","src":"2582:220:4","statements":[{"nodeType":"YulAssignment","src":"2592:74:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2658:3:4"},{"kind":"number","nodeType":"YulLiteral","src":"2663:2:4","type":"","value":"25"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"2599:58:4"},"nodeType":"YulFunctionCall","src":"2599:67:4"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"2592:3:4"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2764:3:4"}],"functionName":{"name":"store_literal_in_memory_4ca3cd75a1831a94a24913bfd2c9b9d35acbb11ac3447f65bb0682cf14f63f5c","nodeType":"YulIdentifier","src":"2675:88:4"},"nodeType":"YulFunctionCall","src":"2675:93:4"},"nodeType":"YulExpressionStatement","src":"2675:93:4"},{"nodeType":"YulAssignment","src":"2777:19:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2788:3:4"},{"kind":"number","nodeType":"YulLiteral","src":"2793:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2784:3:4"},"nodeType":"YulFunctionCall","src":"2784:12:4"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"2777:3:4"}]}]},"name":"abi_encode_t_stringliteral_4ca3cd75a1831a94a24913bfd2c9b9d35acbb11ac3447f65bb0682cf14f63f5c_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"2570:3:4","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"2578:3:4","type":""}],"src":"2436:366:4"},{"body":{"nodeType":"YulBlock","src":"2873:53:4","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2890:3:4"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2913:5:4"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"2895:17:4"},"nodeType":"YulFunctionCall","src":"2895:24:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2883:6:4"},"nodeType":"YulFunctionCall","src":"2883:37:4"},"nodeType":"YulExpressionStatement","src":"2883:37:4"}]},"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"2861:5:4","type":""},{"name":"pos","nodeType":"YulTypedName","src":"2868:3:4","type":""}],"src":"2808:118:4"},{"body":{"nodeType":"YulBlock","src":"3024:118:4","statements":[{"nodeType":"YulAssignment","src":"3034:26:4","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3046:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"3057:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3042:3:4"},"nodeType":"YulFunctionCall","src":"3042:18:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3034:4:4"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3108:6:4"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3121:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"3132:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3117:3:4"},"nodeType":"YulFunctionCall","src":"3117:17:4"}],"functionName":{"name":"abi_encode_t_bool_to_t_bool_fromStack","nodeType":"YulIdentifier","src":"3070:37:4"},"nodeType":"YulFunctionCall","src":"3070:65:4"},"nodeType":"YulExpressionStatement","src":"3070:65:4"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2996:9:4","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3008:6:4","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3019:4:4","type":""}],"src":"2932:210:4"},{"body":{"nodeType":"YulBlock","src":"3319:248:4","statements":[{"nodeType":"YulAssignment","src":"3329:26:4","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3341:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"3352:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3337:3:4"},"nodeType":"YulFunctionCall","src":"3337:18:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3329:4:4"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3376:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"3387:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3372:3:4"},"nodeType":"YulFunctionCall","src":"3372:17:4"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"3395:4:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"3401:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3391:3:4"},"nodeType":"YulFunctionCall","src":"3391:20:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3365:6:4"},"nodeType":"YulFunctionCall","src":"3365:47:4"},"nodeType":"YulExpressionStatement","src":"3365:47:4"},{"nodeType":"YulAssignment","src":"3421:139:4","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"3555:4:4"}],"functionName":{"name":"abi_encode_t_stringliteral_45e3d26e36c3151c7f92a1eee9add9658cbb8e14605ee2452ec007389b9744bc_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"3429:124:4"},"nodeType":"YulFunctionCall","src":"3429:131:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3421:4:4"}]}]},"name":"abi_encode_tuple_t_stringliteral_45e3d26e36c3151c7f92a1eee9add9658cbb8e14605ee2452ec007389b9744bc__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3299:9:4","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3314:4:4","type":""}],"src":"3148:419:4"},{"body":{"nodeType":"YulBlock","src":"3744:248:4","statements":[{"nodeType":"YulAssignment","src":"3754:26:4","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3766:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"3777:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3762:3:4"},"nodeType":"YulFunctionCall","src":"3762:18:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3754:4:4"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3801:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"3812:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3797:3:4"},"nodeType":"YulFunctionCall","src":"3797:17:4"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"3820:4:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"3826:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3816:3:4"},"nodeType":"YulFunctionCall","src":"3816:20:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3790:6:4"},"nodeType":"YulFunctionCall","src":"3790:47:4"},"nodeType":"YulExpressionStatement","src":"3790:47:4"},{"nodeType":"YulAssignment","src":"3846:139:4","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"3980:4:4"}],"functionName":{"name":"abi_encode_t_stringliteral_4ca3cd75a1831a94a24913bfd2c9b9d35acbb11ac3447f65bb0682cf14f63f5c_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"3854:124:4"},"nodeType":"YulFunctionCall","src":"3854:131:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3846:4:4"}]}]},"name":"abi_encode_tuple_t_stringliteral_4ca3cd75a1831a94a24913bfd2c9b9d35acbb11ac3447f65bb0682cf14f63f5c__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3724:9:4","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3739:4:4","type":""}],"src":"3573:419:4"},{"body":{"nodeType":"YulBlock","src":"4096:124:4","statements":[{"nodeType":"YulAssignment","src":"4106:26:4","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4118:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"4129:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4114:3:4"},"nodeType":"YulFunctionCall","src":"4114:18:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4106:4:4"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4186:6:4"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4199:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"4210:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4195:3:4"},"nodeType":"YulFunctionCall","src":"4195:17:4"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"4142:43:4"},"nodeType":"YulFunctionCall","src":"4142:71:4"},"nodeType":"YulExpressionStatement","src":"4142:71:4"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4068:9:4","type":""},{"name":"value0","nodeType":"YulTypedName","src":"4080:6:4","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4091:4:4","type":""}],"src":"3998:222:4"},{"body":{"nodeType":"YulBlock","src":"4322:73:4","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4339:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"4344:6:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4332:6:4"},"nodeType":"YulFunctionCall","src":"4332:19:4"},"nodeType":"YulExpressionStatement","src":"4332:19:4"},{"nodeType":"YulAssignment","src":"4360:29:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4379:3:4"},{"kind":"number","nodeType":"YulLiteral","src":"4384:4:4","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4375:3:4"},"nodeType":"YulFunctionCall","src":"4375:14:4"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"4360:11:4"}]}]},"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"4294:3:4","type":""},{"name":"length","nodeType":"YulTypedName","src":"4299:6:4","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"4310:11:4","type":""}],"src":"4226:169:4"},{"body":{"nodeType":"YulBlock","src":"4445:261:4","statements":[{"nodeType":"YulAssignment","src":"4455:25:4","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"4478:1:4"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"4460:17:4"},"nodeType":"YulFunctionCall","src":"4460:20:4"},"variableNames":[{"name":"x","nodeType":"YulIdentifier","src":"4455:1:4"}]},{"nodeType":"YulAssignment","src":"4489:25:4","value":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"4512:1:4"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"4494:17:4"},"nodeType":"YulFunctionCall","src":"4494:20:4"},"variableNames":[{"name":"y","nodeType":"YulIdentifier","src":"4489:1:4"}]},{"body":{"nodeType":"YulBlock","src":"4652:22:4","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"4654:16:4"},"nodeType":"YulFunctionCall","src":"4654:18:4"},"nodeType":"YulExpressionStatement","src":"4654:18:4"}]},"condition":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"4573:1:4"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4580:66:4","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"},{"name":"y","nodeType":"YulIdentifier","src":"4648:1:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4576:3:4"},"nodeType":"YulFunctionCall","src":"4576:74:4"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4570:2:4"},"nodeType":"YulFunctionCall","src":"4570:81:4"},"nodeType":"YulIf","src":"4567:2:4"},{"nodeType":"YulAssignment","src":"4684:16:4","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"4695:1:4"},{"name":"y","nodeType":"YulIdentifier","src":"4698:1:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4691:3:4"},"nodeType":"YulFunctionCall","src":"4691:9:4"},"variableNames":[{"name":"sum","nodeType":"YulIdentifier","src":"4684:3:4"}]}]},"name":"checked_add_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"4432:1:4","type":""},{"name":"y","nodeType":"YulTypedName","src":"4435:1:4","type":""}],"returnVariables":[{"name":"sum","nodeType":"YulTypedName","src":"4441:3:4","type":""}],"src":"4401:305:4"},{"body":{"nodeType":"YulBlock","src":"4757:146:4","statements":[{"nodeType":"YulAssignment","src":"4767:25:4","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"4790:1:4"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"4772:17:4"},"nodeType":"YulFunctionCall","src":"4772:20:4"},"variableNames":[{"name":"x","nodeType":"YulIdentifier","src":"4767:1:4"}]},{"nodeType":"YulAssignment","src":"4801:25:4","value":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"4824:1:4"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"4806:17:4"},"nodeType":"YulFunctionCall","src":"4806:20:4"},"variableNames":[{"name":"y","nodeType":"YulIdentifier","src":"4801:1:4"}]},{"body":{"nodeType":"YulBlock","src":"4848:22:4","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"4850:16:4"},"nodeType":"YulFunctionCall","src":"4850:18:4"},"nodeType":"YulExpressionStatement","src":"4850:18:4"}]},"condition":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"4842:1:4"},{"name":"y","nodeType":"YulIdentifier","src":"4845:1:4"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"4839:2:4"},"nodeType":"YulFunctionCall","src":"4839:8:4"},"nodeType":"YulIf","src":"4836:2:4"},{"nodeType":"YulAssignment","src":"4880:17:4","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"4892:1:4"},{"name":"y","nodeType":"YulIdentifier","src":"4895:1:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4888:3:4"},"nodeType":"YulFunctionCall","src":"4888:9:4"},"variableNames":[{"name":"diff","nodeType":"YulIdentifier","src":"4880:4:4"}]}]},"name":"checked_sub_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"4743:1:4","type":""},{"name":"y","nodeType":"YulTypedName","src":"4746:1:4","type":""}],"returnVariables":[{"name":"diff","nodeType":"YulTypedName","src":"4752:4:4","type":""}],"src":"4712:191:4"},{"body":{"nodeType":"YulBlock","src":"4954:51:4","statements":[{"nodeType":"YulAssignment","src":"4964:35:4","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4993:5:4"}],"functionName":{"name":"cleanup_t_uint160","nodeType":"YulIdentifier","src":"4975:17:4"},"nodeType":"YulFunctionCall","src":"4975:24:4"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"4964:7:4"}]}]},"name":"cleanup_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"4936:5:4","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"4946:7:4","type":""}],"src":"4909:96:4"},{"body":{"nodeType":"YulBlock","src":"5053:48:4","statements":[{"nodeType":"YulAssignment","src":"5063:32:4","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5088:5:4"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"5081:6:4"},"nodeType":"YulFunctionCall","src":"5081:13:4"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"5074:6:4"},"nodeType":"YulFunctionCall","src":"5074:21:4"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"5063:7:4"}]}]},"name":"cleanup_t_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"5035:5:4","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"5045:7:4","type":""}],"src":"5011:90:4"},{"body":{"nodeType":"YulBlock","src":"5152:81:4","statements":[{"nodeType":"YulAssignment","src":"5162:65:4","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5177:5:4"},{"kind":"number","nodeType":"YulLiteral","src":"5184:42:4","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5173:3:4"},"nodeType":"YulFunctionCall","src":"5173:54:4"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"5162:7:4"}]}]},"name":"cleanup_t_uint160","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"5134:5:4","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"5144:7:4","type":""}],"src":"5107:126:4"},{"body":{"nodeType":"YulBlock","src":"5284:32:4","statements":[{"nodeType":"YulAssignment","src":"5294:16:4","value":{"name":"value","nodeType":"YulIdentifier","src":"5305:5:4"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"5294:7:4"}]}]},"name":"cleanup_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"5266:5:4","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"5276:7:4","type":""}],"src":"5239:77:4"},{"body":{"nodeType":"YulBlock","src":"5350:152:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5367:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5370:77:4","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5360:6:4"},"nodeType":"YulFunctionCall","src":"5360:88:4"},"nodeType":"YulExpressionStatement","src":"5360:88:4"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5464:1:4","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"5467:4:4","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5457:6:4"},"nodeType":"YulFunctionCall","src":"5457:15:4"},"nodeType":"YulExpressionStatement","src":"5457:15:4"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5488:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5491:4:4","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5481:6:4"},"nodeType":"YulFunctionCall","src":"5481:15:4"},"nodeType":"YulExpressionStatement","src":"5481:15:4"}]},"name":"panic_error_0x11","nodeType":"YulFunctionDefinition","src":"5322:180:4"},{"body":{"nodeType":"YulBlock","src":"5614:66:4","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"5636:6:4"},{"kind":"number","nodeType":"YulLiteral","src":"5644:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5632:3:4"},"nodeType":"YulFunctionCall","src":"5632:14:4"},{"kind":"string","nodeType":"YulLiteral","src":"5648:24:4","type":"","value":"Insufficient allowance"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5625:6:4"},"nodeType":"YulFunctionCall","src":"5625:48:4"},"nodeType":"YulExpressionStatement","src":"5625:48:4"}]},"name":"store_literal_in_memory_45e3d26e36c3151c7f92a1eee9add9658cbb8e14605ee2452ec007389b9744bc","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"5606:6:4","type":""}],"src":"5508:172:4"},{"body":{"nodeType":"YulBlock","src":"5792:69:4","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"5814:6:4"},{"kind":"number","nodeType":"YulLiteral","src":"5822:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5810:3:4"},"nodeType":"YulFunctionCall","src":"5810:14:4"},{"kind":"string","nodeType":"YulLiteral","src":"5826:27:4","type":"","value":"Transferred value is zero"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5803:6:4"},"nodeType":"YulFunctionCall","src":"5803:51:4"},"nodeType":"YulExpressionStatement","src":"5803:51:4"}]},"name":"store_literal_in_memory_4ca3cd75a1831a94a24913bfd2c9b9d35acbb11ac3447f65bb0682cf14f63f5c","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"5784:6:4","type":""}],"src":"5686:175:4"},{"body":{"nodeType":"YulBlock","src":"5910:79:4","statements":[{"body":{"nodeType":"YulBlock","src":"5967:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5976:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5979:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5969:6:4"},"nodeType":"YulFunctionCall","src":"5969:12:4"},"nodeType":"YulExpressionStatement","src":"5969:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5933:5:4"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5958:5:4"}],"functionName":{"name":"cleanup_t_address","nodeType":"YulIdentifier","src":"5940:17:4"},"nodeType":"YulFunctionCall","src":"5940:24:4"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"5930:2:4"},"nodeType":"YulFunctionCall","src":"5930:35:4"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"5923:6:4"},"nodeType":"YulFunctionCall","src":"5923:43:4"},"nodeType":"YulIf","src":"5920:2:4"}]},"name":"validator_revert_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"5903:5:4","type":""}],"src":"5867:122:4"},{"body":{"nodeType":"YulBlock","src":"6038:79:4","statements":[{"body":{"nodeType":"YulBlock","src":"6095:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6104:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6107:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6097:6:4"},"nodeType":"YulFunctionCall","src":"6097:12:4"},"nodeType":"YulExpressionStatement","src":"6097:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6061:5:4"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6086:5:4"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"6068:17:4"},"nodeType":"YulFunctionCall","src":"6068:24:4"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"6058:2:4"},"nodeType":"YulFunctionCall","src":"6058:35:4"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"6051:6:4"},"nodeType":"YulFunctionCall","src":"6051:43:4"},"nodeType":"YulIf","src":"6048:2:4"}]},"name":"validator_revert_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"6031:5:4","type":""}],"src":"5995:122:4"}]},"contents":"{\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_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_addresst_address(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(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2 {\n if slt(sub(dataEnd, headStart), 96) { 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 let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_addresst_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(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_encode_t_bool_to_t_bool_fromStack(value, pos) {\n mstore(pos, cleanup_t_bool(value))\n }\n\n function abi_encode_t_stringliteral_45e3d26e36c3151c7f92a1eee9add9658cbb8e14605ee2452ec007389b9744bc_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 22)\n store_literal_in_memory_45e3d26e36c3151c7f92a1eee9add9658cbb8e14605ee2452ec007389b9744bc(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_t_stringliteral_4ca3cd75a1831a94a24913bfd2c9b9d35acbb11ac3447f65bb0682cf14f63f5c_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 25)\n store_literal_in_memory_4ca3cd75a1831a94a24913bfd2c9b9d35acbb11ac3447f65bb0682cf14f63f5c(pos)\n end := add(pos, 32)\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_bool__to_t_bool__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_bool_to_t_bool_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_encode_tuple_t_stringliteral_45e3d26e36c3151c7f92a1eee9add9658cbb8e14605ee2452ec007389b9744bc__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_45e3d26e36c3151c7f92a1eee9add9658cbb8e14605ee2452ec007389b9744bc_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function abi_encode_tuple_t_stringliteral_4ca3cd75a1831a94a24913bfd2c9b9d35acbb11ac3447f65bb0682cf14f63f5c__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_4ca3cd75a1831a94a24913bfd2c9b9d35acbb11ac3447f65bb0682cf14f63f5c_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 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_bool(value) -> cleaned {\n cleaned := iszero(iszero(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 panic_error_0x11() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n\n function store_literal_in_memory_45e3d26e36c3151c7f92a1eee9add9658cbb8e14605ee2452ec007389b9744bc(memPtr) {\n\n mstore(add(memPtr, 0), \"Insufficient allowance\")\n\n }\n\n function store_literal_in_memory_4ca3cd75a1831a94a24913bfd2c9b9d35acbb11ac3447f65bb0682cf14f63f5c(memPtr) {\n\n mstore(add(memPtr, 0), \"Transferred value is zero\")\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_uint256(value) {\n if iszero(eq(value, cleanup_t_uint256(value))) { revert(0, 0) }\n }\n\n}\n","id":4,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b506004361061007d5760003560e01c8063313ce5671161005b578063313ce5671461010057806370a082311461011e578063a9059cbb1461014e578063dd62ed3e1461017e5761007d565b8063095ea7b31461008257806318160ddd146100b257806323b872dd146100d0575b600080fd5b61009c60048036038101906100979190610656565b6101ae565b6040516100a991906106f6565b60405180910390f35b6100ba61023b565b6040516100c79190610751565b60405180910390f35b6100ea60048036038101906100e59190610607565b610241565b6040516100f791906106f6565b60405180910390f35b6101086103d9565b6040516101159190610751565b60405180910390f35b610138600480360381019061013391906105a2565b6103df565b6040516101459190610751565b60405180910390f35b61016860048036038101906101639190610656565b6103f7565b60405161017591906106f6565b60405180910390f35b610198600480360381019061019391906105cb565b6104f1565b6040516101a59190610751565b60405180910390f35b600081600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001905092915050565b60015481565b60008161024e85336104f1565b101561028f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161028690610711565b60405180910390fd5b81600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461031b91906107d3565b9250508190555081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461037191906107d3565b9250508190555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546103c7919061077d565b92505081905550600190509392505050565b60005481565b60026020528060005260406000206000915090505481565b600080821161043b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043290610731565b60405180910390fd5b81600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461048a91906107d3565b9250508190555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546104e0919061077d565b925050819055506001905092915050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600081359050610587816108d0565b92915050565b60008135905061059c816108e7565b92915050565b6000602082840312156105b457600080fd5b60006105c284828501610578565b91505092915050565b600080604083850312156105de57600080fd5b60006105ec85828601610578565b92505060206105fd85828601610578565b9150509250929050565b60008060006060848603121561061c57600080fd5b600061062a86828701610578565b935050602061063b86828701610578565b925050604061064c8682870161058d565b9150509250925092565b6000806040838503121561066957600080fd5b600061067785828601610578565b92505060206106888582860161058d565b9150509250929050565b61069b81610819565b82525050565b60006106ae60168361076c565b91506106b98261087e565b602082019050919050565b60006106d160198361076c565b91506106dc826108a7565b602082019050919050565b6106f081610845565b82525050565b600060208201905061070b6000830184610692565b92915050565b6000602082019050818103600083015261072a816106a1565b9050919050565b6000602082019050818103600083015261074a816106c4565b9050919050565b600060208201905061076660008301846106e7565b92915050565b600082825260208201905092915050565b600061078882610845565b915061079383610845565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156107c8576107c761084f565b5b828201905092915050565b60006107de82610845565b91506107e983610845565b9250828210156107fc576107fb61084f565b5b828203905092915050565b600061081282610825565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f496e73756666696369656e7420616c6c6f77616e636500000000000000000000600082015250565b7f5472616e736665727265642076616c7565206973207a65726f00000000000000600082015250565b6108d981610807565b81146108e457600080fd5b50565b6108f081610845565b81146108fb57600080fd5b5056fea2646970667358221220a8a6918adf2af132e4e49a96a108a2d9c62cfb74de3e267b6c8af323b87f6ec964736f6c63430008040033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x7D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x313CE567 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x100 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x11E JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x14E JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x17E JUMPI PUSH2 0x7D JUMP JUMPDEST DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x82 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0xB2 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0xD0 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9C PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x97 SWAP2 SWAP1 PUSH2 0x656 JUMP JUMPDEST PUSH2 0x1AE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xA9 SWAP2 SWAP1 PUSH2 0x6F6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xBA PUSH2 0x23B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xC7 SWAP2 SWAP1 PUSH2 0x751 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xEA PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xE5 SWAP2 SWAP1 PUSH2 0x607 JUMP JUMPDEST PUSH2 0x241 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xF7 SWAP2 SWAP1 PUSH2 0x6F6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x108 PUSH2 0x3D9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x115 SWAP2 SWAP1 PUSH2 0x751 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x138 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x133 SWAP2 SWAP1 PUSH2 0x5A2 JUMP JUMPDEST PUSH2 0x3DF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x145 SWAP2 SWAP1 PUSH2 0x751 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x168 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x163 SWAP2 SWAP1 PUSH2 0x656 JUMP JUMPDEST PUSH2 0x3F7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x175 SWAP2 SWAP1 PUSH2 0x6F6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x198 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x193 SWAP2 SWAP1 PUSH2 0x5CB JUMP JUMPDEST PUSH2 0x4F1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1A5 SWAP2 SWAP1 PUSH2 0x751 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x3 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 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP PUSH1 0x1 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x24E DUP6 CALLER PUSH2 0x4F1 JUMP JUMPDEST LT ISZERO PUSH2 0x28F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x286 SWAP1 PUSH2 0x711 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 PUSH1 0x3 PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 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 0x31B SWAP2 SWAP1 PUSH2 0x7D3 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x2 PUSH1 0x0 DUP7 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 0x371 SWAP2 SWAP1 PUSH2 0x7D3 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x2 PUSH1 0x0 DUP6 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 0x3C7 SWAP2 SWAP1 PUSH2 0x77D JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH1 0x1 SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD 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 DUP3 GT PUSH2 0x43B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x432 SWAP1 PUSH2 0x731 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 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 0x48A SWAP2 SWAP1 PUSH2 0x7D3 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x2 PUSH1 0x0 DUP6 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 0x4E0 SWAP2 SWAP1 PUSH2 0x77D JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH1 0x1 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x3 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x587 DUP2 PUSH2 0x8D0 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x59C DUP2 PUSH2 0x8E7 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x5B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x5C2 DUP5 DUP3 DUP6 ADD PUSH2 0x578 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x5DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x5EC DUP6 DUP3 DUP7 ADD PUSH2 0x578 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x5FD DUP6 DUP3 DUP7 ADD PUSH2 0x578 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x61C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x62A DUP7 DUP3 DUP8 ADD PUSH2 0x578 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x63B DUP7 DUP3 DUP8 ADD PUSH2 0x578 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x64C DUP7 DUP3 DUP8 ADD PUSH2 0x58D JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x669 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x677 DUP6 DUP3 DUP7 ADD PUSH2 0x578 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x688 DUP6 DUP3 DUP7 ADD PUSH2 0x58D JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH2 0x69B DUP2 PUSH2 0x819 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6AE PUSH1 0x16 DUP4 PUSH2 0x76C JUMP JUMPDEST SWAP2 POP PUSH2 0x6B9 DUP3 PUSH2 0x87E JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6D1 PUSH1 0x19 DUP4 PUSH2 0x76C JUMP JUMPDEST SWAP2 POP PUSH2 0x6DC DUP3 PUSH2 0x8A7 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x6F0 DUP2 PUSH2 0x845 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x70B PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x692 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 0x72A DUP2 PUSH2 0x6A1 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 0x74A DUP2 PUSH2 0x6C4 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x766 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x6E7 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x788 DUP3 PUSH2 0x845 JUMP JUMPDEST SWAP2 POP PUSH2 0x793 DUP4 PUSH2 0x845 JUMP JUMPDEST SWAP3 POP DUP3 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SUB DUP3 GT ISZERO PUSH2 0x7C8 JUMPI PUSH2 0x7C7 PUSH2 0x84F JUMP JUMPDEST JUMPDEST DUP3 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7DE DUP3 PUSH2 0x845 JUMP JUMPDEST SWAP2 POP PUSH2 0x7E9 DUP4 PUSH2 0x845 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 LT ISZERO PUSH2 0x7FC JUMPI PUSH2 0x7FB PUSH2 0x84F JUMP JUMPDEST JUMPDEST DUP3 DUP3 SUB SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x812 DUP3 PUSH2 0x825 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO ISZERO 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 PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x496E73756666696369656E7420616C6C6F77616E636500000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH32 0x5472616E736665727265642076616C7565206973207A65726F00000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH2 0x8D9 DUP2 PUSH2 0x807 JUMP JUMPDEST DUP2 EQ PUSH2 0x8E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x8F0 DUP2 PUSH2 0x845 JUMP JUMPDEST DUP2 EQ PUSH2 0x8FB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xA8 0xA6 SWAP2 DUP11 0xDF 0x2A CALL ORIGIN 0xE4 0xE4 SWAP11 SWAP7 LOG1 ADDMOD LOG2 0xD9 0xC6 0x2C 0xFB PUSH21 0xDE3E267B6C8AF323B87F6EC964736F6C6343000804 STOP CALLER ","sourceMap":"57:1085:3:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;703:146;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;125:23;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;853:287;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;96:24;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;152:41;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;355:205;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;564:135;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;703:146;768:12;822:5;788:10;:22;799:10;788:22;;;;;;;;;;;;;;;:31;811:7;788:31;;;;;;;;;;;;;;;:39;;;;840:4;833:11;;703:146;;;;:::o;125:23::-;;;;:::o;853:287::-;932:4;983:5;952:27;962:4;968:10;952:9;:27::i;:::-;:36;;944:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;1054:5;1022:10;:16;1033:4;1022:16;;;;;;;;;;;;;;;:28;1039:10;1022:28;;;;;;;;;;;;;;;;:37;;;;;;;:::i;:::-;;;;;;;;1084:5;1065:9;:15;1075:4;1065:15;;;;;;;;;;;;;;;;:24;;;;;;;:::i;:::-;;;;;;;;1112:5;1095:9;:13;1105:2;1095:13;;;;;;;;;;;;;;;;:22;;;;;;;:::i;:::-;;;;;;;;1131:4;1124:11;;853:287;;;;;:::o;96:24::-;;;;:::o;152:41::-;;;;;;;;;;;;;;;;;:::o;355:205::-;413:4;441:1;433:5;:9;425:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;504:5;479:9;:21;489:10;479:21;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;532:5;515:9;:13;525:2;515:13;;;;;;;;;;;;;;;;:22;;;;;;;:::i;:::-;;;;;;;;551:4;544:11;;355:205;;;;:::o;564:135::-;636:17;668:10;:17;679:5;668:17;;;;;;;;;;;;;;;:26;686:7;668:26;;;;;;;;;;;;;;;;661:33;;564:135;;;;:::o;7:139:4:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:139::-;198:5;236:6;223:20;214:29;;252:33;279:5;252:33;:::i;:::-;204:87;;;;:::o;297:262::-;356:6;405:2;393:9;384:7;380:23;376:32;373:2;;;421:1;418;411:12;373:2;464:1;489:53;534:7;525:6;514:9;510:22;489:53;:::i;:::-;479:63;;435:117;363:196;;;;:::o;565:407::-;633:6;641;690:2;678:9;669:7;665:23;661:32;658:2;;;706:1;703;696:12;658:2;749:1;774:53;819:7;810:6;799:9;795:22;774:53;:::i;:::-;764:63;;720:117;876:2;902:53;947:7;938:6;927:9;923:22;902:53;:::i;:::-;892:63;;847:118;648:324;;;;;:::o;978:552::-;1055:6;1063;1071;1120:2;1108:9;1099:7;1095:23;1091:32;1088:2;;;1136:1;1133;1126:12;1088:2;1179:1;1204:53;1249:7;1240:6;1229:9;1225:22;1204:53;:::i;:::-;1194:63;;1150:117;1306:2;1332:53;1377:7;1368:6;1357:9;1353:22;1332:53;:::i;:::-;1322:63;;1277:118;1434:2;1460:53;1505:7;1496:6;1485:9;1481:22;1460:53;:::i;:::-;1450:63;;1405:118;1078:452;;;;;:::o;1536:407::-;1604:6;1612;1661:2;1649:9;1640:7;1636:23;1632:32;1629:2;;;1677:1;1674;1667:12;1629:2;1720:1;1745:53;1790:7;1781:6;1770:9;1766:22;1745:53;:::i;:::-;1735:63;;1691:117;1847:2;1873:53;1918:7;1909:6;1898:9;1894:22;1873:53;:::i;:::-;1863:63;;1818:118;1619:324;;;;;:::o;1949:109::-;2030:21;2045:5;2030:21;:::i;:::-;2025:3;2018:34;2008:50;;:::o;2064:366::-;2206:3;2227:67;2291:2;2286:3;2227:67;:::i;:::-;2220:74;;2303:93;2392:3;2303:93;:::i;:::-;2421:2;2416:3;2412:12;2405:19;;2210:220;;;:::o;2436:366::-;2578:3;2599:67;2663:2;2658:3;2599:67;:::i;:::-;2592:74;;2675:93;2764:3;2675:93;:::i;:::-;2793:2;2788:3;2784:12;2777:19;;2582:220;;;:::o;2808:118::-;2895:24;2913:5;2895:24;:::i;:::-;2890:3;2883:37;2873:53;;:::o;2932:210::-;3019:4;3057:2;3046:9;3042:18;3034:26;;3070:65;3132:1;3121:9;3117:17;3108:6;3070:65;:::i;:::-;3024:118;;;;:::o;3148:419::-;3314:4;3352:2;3341:9;3337:18;3329:26;;3401:9;3395:4;3391:20;3387:1;3376:9;3372:17;3365:47;3429:131;3555:4;3429:131;:::i;:::-;3421:139;;3319:248;;;:::o;3573:419::-;3739:4;3777:2;3766:9;3762:18;3754:26;;3826:9;3820:4;3816:20;3812:1;3801:9;3797:17;3790:47;3854:131;3980:4;3854:131;:::i;:::-;3846:139;;3744:248;;;:::o;3998:222::-;4091:4;4129:2;4118:9;4114:18;4106:26;;4142:71;4210:1;4199:9;4195:17;4186:6;4142:71;:::i;:::-;4096:124;;;;:::o;4226:169::-;4310:11;4344:6;4339:3;4332:19;4384:4;4379:3;4375:14;4360:29;;4322:73;;;;:::o;4401:305::-;4441:3;4460:20;4478:1;4460:20;:::i;:::-;4455:25;;4494:20;4512:1;4494:20;:::i;:::-;4489:25;;4648:1;4580:66;4576:74;4573:1;4570:81;4567:2;;;4654:18;;:::i;:::-;4567:2;4698:1;4695;4691:9;4684:16;;4445:261;;;;:::o;4712:191::-;4752:4;4772:20;4790:1;4772:20;:::i;:::-;4767:25;;4806:20;4824:1;4806:20;:::i;:::-;4801:25;;4845:1;4842;4839:8;4836:2;;;4850:18;;:::i;:::-;4836:2;4895:1;4892;4888:9;4880:17;;4757:146;;;;:::o;4909:96::-;4946:7;4975:24;4993:5;4975:24;:::i;:::-;4964:35;;4954:51;;;:::o;5011:90::-;5045:7;5088:5;5081:13;5074:21;5063:32;;5053:48;;;:::o;5107:126::-;5144:7;5184:42;5177:5;5173:54;5162:65;;5152:81;;;:::o;5239:77::-;5276:7;5305:5;5294:16;;5284:32;;;:::o;5322:180::-;5370:77;5367:1;5360:88;5467:4;5464:1;5457:15;5491:4;5488:1;5481:15;5508:172;5648:24;5644:1;5636:6;5632:14;5625:48;5614:66;:::o;5686:175::-;5826:27;5822:1;5814:6;5810:14;5803:51;5792:69;:::o;5867:122::-;5940:24;5958:5;5940:24;:::i;:::-;5933:5;5930:35;5920:2;;5979:1;5976;5969:12;5920:2;5910:79;:::o;5995:122::-;6068:24;6086:5;6068:24;:::i;:::-;6061:5;6058:35;6048:2;;6107:1;6104;6097:12;6048:2;6038:79;:::o"},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.4+commit.c7e474f2\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"remaining\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/Token.sol\":\"TokenWithoutNameNorSymbol\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/Token.sol\":{\"keccak256\":\"0x3c98df2a7295115a107e950c40733f37ce5384cf18a0b5efb948ccf6d1acaa59\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://21c0d9ad7fee4c50e057a477ec0c151985566e51e1df46d3dc42f4320eceeccf\",\"dweb:/ipfs/QmSVvnCWd9MH3F93atgJGuwbHMJpifnoMLSosQsZUKUrZ8\"]}},\"version\":1}"}}}}} \ No newline at end of file diff --git a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/ChangeEtherBalance.sol/ChangeEtherBalance.dbg.json b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/ChangeEtherBalance.sol/ChangeEtherBalance.dbg.json deleted file mode 100644 index 224dfafc9c..0000000000 --- a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/ChangeEtherBalance.sol/ChangeEtherBalance.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../build-info/16efa488de3a0283218beddfadbd1423.json" -} diff --git a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/ChangeEtherBalance.sol/ChangeEtherBalance.json b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/ChangeEtherBalance.sol/ChangeEtherBalance.json deleted file mode 100644 index b533ba35a4..0000000000 --- a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/ChangeEtherBalance.sol/ChangeEtherBalance.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "ChangeEtherBalance", - "sourceName": "contracts/ChangeEtherBalance.sol", - "abi": [ - { - "inputs": [], - "name": "returnHalf", - "outputs": [], - "stateMutability": "payable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "addr", - "type": "address" - } - ], - "name": "transferTo", - "outputs": [], - "stateMutability": "payable", - "type": "function" - }, - { - "stateMutability": "payable", - "type": "receive" - } - ], - "bytecode": "0x608060405234801561001057600080fd5b50610225806100206000396000f3fe60806040526004361061002d5760003560e01c8063a03fa7e314610039578063b019946e1461005557610034565b3661003457005b600080fd5b610053600480360381019061004e9190610113565b61005f565b005b61005d6100a9565b005b8073ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f193505050501580156100a5573d6000803e3d6000fd5b5050565b3373ffffffffffffffffffffffffffffffffffffffff166108fc6002346100d0919061013c565b9081150290604051600060405180830381858888f193505050501580156100fb573d6000803e3d6000fd5b50565b60008135905061010d816101d8565b92915050565b60006020828403121561012557600080fd5b6000610133848285016100fe565b91505092915050565b60006101478261019f565b91506101528361019f565b925082610162576101616101a9565b5b828204905092915050565b60006101788261017f565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6101e18161016d565b81146101ec57600080fd5b5056fea26469706673582212208e553461507bae731d37afa0d5a2a7dae74de7a6eab682733425a78884ed60b364736f6c63430008040033", - "deployedBytecode": "0x60806040526004361061002d5760003560e01c8063a03fa7e314610039578063b019946e1461005557610034565b3661003457005b600080fd5b610053600480360381019061004e9190610113565b61005f565b005b61005d6100a9565b005b8073ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f193505050501580156100a5573d6000803e3d6000fd5b5050565b3373ffffffffffffffffffffffffffffffffffffffff166108fc6002346100d0919061013c565b9081150290604051600060405180830381858888f193505050501580156100fb573d6000803e3d6000fd5b50565b60008135905061010d816101d8565b92915050565b60006020828403121561012557600080fd5b6000610133848285016100fe565b91505092915050565b60006101478261019f565b91506101528361019f565b925082610162576101616101a9565b5b828204905092915050565b60006101788261017f565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6101e18161016d565b81146101ec57600080fd5b5056fea26469706673582212208e553461507bae731d37afa0d5a2a7dae74de7a6eab682733425a78884ed60b364736f6c63430008040033", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Events.sol/AnotherContract.dbg.json b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Events.sol/AnotherContract.dbg.json deleted file mode 100644 index 224dfafc9c..0000000000 --- a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Events.sol/AnotherContract.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../build-info/16efa488de3a0283218beddfadbd1423.json" -} diff --git a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Events.sol/AnotherContract.json b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Events.sol/AnotherContract.json deleted file mode 100644 index 495cf4c9ed..0000000000 --- a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Events.sol/AnotherContract.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "AnotherContract", - "sourceName": "contracts/Events.sol", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "u", - "type": "uint256" - } - ], - "name": "WithUintArg", - "type": "event" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "u", - "type": "uint256" - } - ], - "name": "emitUint", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - } - ], - "bytecode": "0x608060405234801561001057600080fd5b50610130806100206000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c80639194024414602d575b600080fd5b60436004803603810190603f91906090565b6045565b005b7f97535d4b4270d3f1a499c85ae918ba6798cbdcc83a26529331a25dcd2194cfce816040516072919060c3565b60405180910390a150565b600081359050608a8160e6565b92915050565b60006020828403121560a157600080fd5b600060ad84828501607d565b91505092915050565b60bd8160dc565b82525050565b600060208201905060d6600083018460b6565b92915050565b6000819050919050565b60ed8160dc565b811460f757600080fd5b5056fea264697066735822122083cb9b1ec00d6d1ec78d28771d3bf4778c5ba00b0532a2448d42cbab653355a064736f6c63430008040033", - "deployedBytecode": "0x6080604052348015600f57600080fd5b506004361060285760003560e01c80639194024414602d575b600080fd5b60436004803603810190603f91906090565b6045565b005b7f97535d4b4270d3f1a499c85ae918ba6798cbdcc83a26529331a25dcd2194cfce816040516072919060c3565b60405180910390a150565b600081359050608a8160e6565b92915050565b60006020828403121560a157600080fd5b600060ad84828501607d565b91505092915050565b60bd8160dc565b82525050565b600060208201905060d6600083018460b6565b92915050565b6000819050919050565b60ed8160dc565b811460f757600080fd5b5056fea264697066735822122083cb9b1ec00d6d1ec78d28771d3bf4778c5ba00b0532a2448d42cbab653355a064736f6c63430008040033", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Events.sol/Events.dbg.json b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Events.sol/Events.dbg.json deleted file mode 100644 index 224dfafc9c..0000000000 --- a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Events.sol/Events.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../build-info/16efa488de3a0283218beddfadbd1423.json" -} diff --git a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Events.sol/Events.json b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Events.sol/Events.json deleted file mode 100644 index 965dcb8d99..0000000000 --- a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Events.sol/Events.json +++ /dev/null @@ -1,527 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "Events", - "sourceName": "contracts/Events.sol", - "abi": [ - { - "inputs": [ - { - "internalType": "contract AnotherContract", - "name": "c", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "a", - "type": "address" - } - ], - "name": "WithAddressArg", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "bytes32", - "name": "b", - "type": "bytes32" - } - ], - "name": "WithBytes32Arg", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "bytes32[2]", - "name": "a", - "type": "bytes32[2]" - } - ], - "name": "WithBytes32Array", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "bytes", - "name": "b", - "type": "bytes" - } - ], - "name": "WithBytesArg", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "b", - "type": "bytes32" - } - ], - "name": "WithIndexedBytes32Arg", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes", - "name": "b", - "type": "bytes" - } - ], - "name": "WithIndexedBytesArg", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "string", - "name": "s", - "type": "string" - } - ], - "name": "WithIndexedStringArg", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "int256", - "name": "i", - "type": "int256" - } - ], - "name": "WithIntArg", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "string", - "name": "s", - "type": "string" - } - ], - "name": "WithStringArg", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "components": [ - { - "internalType": "uint256", - "name": "u", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "v", - "type": "uint256" - } - ], - "indexed": false, - "internalType": "struct Events.Struct", - "name": "s", - "type": "tuple" - } - ], - "name": "WithStructArg", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "string", - "name": "s", - "type": "string" - }, - { - "indexed": false, - "internalType": "string", - "name": "t", - "type": "string" - } - ], - "name": "WithTwoStringArgs", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "u", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "v", - "type": "uint256" - } - ], - "name": "WithTwoUintArgs", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "u", - "type": "uint256" - } - ], - "name": "WithUintArg", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256[2]", - "name": "a", - "type": "uint256[2]" - } - ], - "name": "WithUintArray", - "type": "event" - }, - { - "anonymous": false, - "inputs": [], - "name": "WithoutArgs", - "type": "event" - }, - { - "inputs": [], - "name": "doNotEmit", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "a", - "type": "address" - } - ], - "name": "emitAddress", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes", - "name": "b", - "type": "bytes" - } - ], - "name": "emitBytes", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "b", - "type": "bytes32" - } - ], - "name": "emitBytes32", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "b", - "type": "bytes32" - }, - { - "internalType": "bytes32", - "name": "c", - "type": "bytes32" - } - ], - "name": "emitBytes32Array", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes", - "name": "b", - "type": "bytes" - } - ], - "name": "emitIndexedBytes", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "b", - "type": "bytes32" - } - ], - "name": "emitIndexedBytes32", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "string", - "name": "s", - "type": "string" - } - ], - "name": "emitIndexedString", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "int256", - "name": "i", - "type": "int256" - } - ], - "name": "emitInt", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "u", - "type": "uint256" - } - ], - "name": "emitNestedUintFromAnotherContract", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "u", - "type": "uint256" - } - ], - "name": "emitNestedUintFromSameContract", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "string", - "name": "s", - "type": "string" - } - ], - "name": "emitString", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "u", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "v", - "type": "uint256" - } - ], - "name": "emitStruct", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "u", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "v", - "type": "uint256" - } - ], - "name": "emitTwoUints", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "u", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "v", - "type": "uint256" - }, - { - "internalType": "string", - "name": "s", - "type": "string" - }, - { - "internalType": "string", - "name": "t", - "type": "string" - } - ], - "name": "emitTwoUintsAndTwoStrings", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "u", - "type": "uint256" - } - ], - "name": "emitUint", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "u", - "type": "uint256" - }, - { - "internalType": "string", - "name": "s", - "type": "string" - } - ], - "name": "emitUintAndString", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "u", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "v", - "type": "uint256" - } - ], - "name": "emitUintArray", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "u", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "v", - "type": "uint256" - } - ], - "name": "emitUintTwice", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "emitWithoutArgs", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - } - ], - "bytecode": "0x60806040523480156200001157600080fd5b506040516200140d3803806200140d833981810160405281019062000037919062000095565b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505062000123565b6000815190506200008f8162000109565b92915050565b600060208284031215620000a857600080fd5b6000620000b8848285016200007e565b91505092915050565b6000620000ce82620000e9565b9050919050565b6000620000e282620000c1565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6200011481620000d5565b81146200012057600080fd5b50565b6112da80620001336000396000f3fe608060405234801561001057600080fd5b506004361061012c5760003560e01c80638a618191116100ad578063c76f063511610071578063c76f0635146102c3578063cc07e605146102df578063d3931e57146102fb578063db6cdf6814610317578063ec5c3ede146103215761012c565b80638a6181911461024957806390b37ea214610265578063919402441461026f5780639f31a2231461028b578063c0cd80e6146102a75761012c565b806333311ef3116100f457806333311ef3146101bd57806338393646146101d9578063443690a0146101f5578063532b9cce14610211578063813a8cf51461022d5761012c565b8063048858e5146101315780630c0c941a1461014d57806317aba537146101695780632536f127146101855780632785f8d6146101a1575b600080fd5b61014b600480360381019061014691906109f0565b61033d565b005b61016760048036038101906101629190610b7d565b61036d565b005b610183600480360381019061017e9190610b7d565b6103df565b005b61019f600480360381019061019a9190610abf565b61042e565b005b6101bb60048036038101906101b69190610b29565b610468565b005b6101d760048036038101906101d291906109f0565b6104da565b005b6101f360048036038101906101ee9190610b7d565b610514565b005b61020f600480360381019061020a9190610abf565b610551565b005b61022b60048036038101906102269190610bb9565b610596565b005b61024760048036038101906102429190610b00565b61060e565b005b610263600480360381019061025e9190610a96565b61061a565b005b61026d610654565b005b61028960048036038101906102849190610b00565b610682565b005b6102a560048036038101906102a09190610b7d565b6106bc565b005b6102c160048036038101906102bc9190610a19565b61070b565b005b6102dd60048036038101906102d89190610a55565b61075a565b005b6102f960048036038101906102f49190610a55565b610794565b005b61031560048036038101906103109190610b00565b6107d9565b005b61031f610867565b005b61033b600480360381019061033691906109c7565b610869565b005b807fb421ad092cfce88844bfbfaa9654e824ba0ee5b6b0a220f822406b62c05364c060405160405180910390a250565b7f97535d4b4270d3f1a499c85ae918ba6798cbdcc83a26529331a25dcd2194cfce8260405161039c9190610fd2565b60405180910390a17f97535d4b4270d3f1a499c85ae918ba6798cbdcc83a26529331a25dcd2194cfce816040516103d39190610fd2565b60405180910390a15050565b7f73e687a2685d698f7acf934b4929a29ae783a4bcb640d71c5d6994d74e2380ca6040518060400160405280848152602001838152506040516104229190610eeb565b60405180910390a15050565b7f9b7ddcbde8dac280e036f87acafec72f9eee31a640c08087e8439139c7e5b52a8160405161045d9190610f5e565b60405180910390a150565b7f9b7ddcbde8dac280e036f87acafec72f9eee31a640c08087e8439139c7e5b52a816040516104979190610f5e565b60405180910390a17f97535d4b4270d3f1a499c85ae918ba6798cbdcc83a26529331a25dcd2194cfce826040516104ce9190610fd2565b60405180910390a15050565b7f425517d2678bbca3c0d9d8d9fdbec34c81194e7935ed48a6a19f97db93bcef6a816040516105099190610f06565b60405180910390a150565b7f8b268bb46a33a55bece084a8b6858719c9f2985c860fa06c155a341df0b73c0e8282604051610545929190610fed565b60405180910390a15050565b8060405161055f9190610e9e565b60405180910390207fd9ca28363e2d8739e0e9c4fea1d2df98d1bd7d9d915d00e5fccbf78c0fddcdb060405160405180910390a250565b7f8b268bb46a33a55bece084a8b6858719c9f2985c860fa06c155a341df0b73c0e84846040516105c7929190610fed565b60405180910390a17f1f1a2c748505fcd8f16a719fa88d517b1b41111c4f5e07bb28311cdc4d1515388282604051610600929190610f80565b60405180910390a150505050565b61061781610682565b50565b7f39feab747bb4f579008aea963d7ebac85ad410bb83ee663a42af01464654e93f816040516106499190610f43565b60405180910390a150565b7f917b7bf7ab24d61500cb699921a3a1cc22b8833da6484fea20f262b2610604af60405160405180910390a1565b7f97535d4b4270d3f1a499c85ae918ba6798cbdcc83a26529331a25dcd2194cfce816040516106b19190610fd2565b60405180910390a150565b7fd59ab87bf64b9d737998f3dc70c649d16b135f085029c1666ca0634beb75a7736040518060400160405280848152602001838152506040516106ff9190610fb7565b60405180910390a15050565b7f15100859f3ffe92910dc3f11ed3db4e9cf32ff657c05066e44be4e69b2b488bc60405180604001604052808481526020018381525060405161074e9190610ed0565b60405180910390a15050565b7f433470edcdd53b50238be4d8e048e2baa269af5be2a4e29515c138883c745aa8816040516107899190610f21565b60405180910390a150565b806040516107a29190610e87565b60405180910390207f160e4655df40987951accf7c731d5c504f77d20c139bd73032821b91a426dd9860405160405180910390a250565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166391940244826040518263ffffffff1660e01b81526004016108329190610fd2565b600060405180830381600087803b15801561084c57600080fd5b505af1158015610860573d6000803e3d6000fd5b5050505050565b565b7f336bcd960d2e5a52cef6094ba33727f309dc2c675eebefc6d9b6b6d79abac877816040516108989190610eb5565b60405180910390a150565b60006108b66108b18461103b565b611016565b9050828152602081018484840111156108ce57600080fd5b6108d9848285611195565b509392505050565b60006108f46108ef8461106c565b611016565b90508281526020810184848401111561090c57600080fd5b610917848285611195565b509392505050565b60008135905061092e81611248565b92915050565b6000813590506109438161125f565b92915050565b600082601f83011261095a57600080fd5b813561096a8482602086016108a3565b91505092915050565b60008135905061098281611276565b92915050565b600082601f83011261099957600080fd5b81356109a98482602086016108e1565b91505092915050565b6000813590506109c18161128d565b92915050565b6000602082840312156109d957600080fd5b60006109e78482850161091f565b91505092915050565b600060208284031215610a0257600080fd5b6000610a1084828501610934565b91505092915050565b60008060408385031215610a2c57600080fd5b6000610a3a85828601610934565b9250506020610a4b85828601610934565b9150509250929050565b600060208284031215610a6757600080fd5b600082013567ffffffffffffffff811115610a8157600080fd5b610a8d84828501610949565b91505092915050565b600060208284031215610aa857600080fd5b6000610ab684828501610973565b91505092915050565b600060208284031215610ad157600080fd5b600082013567ffffffffffffffff811115610aeb57600080fd5b610af784828501610988565b91505092915050565b600060208284031215610b1257600080fd5b6000610b20848285016109b2565b91505092915050565b60008060408385031215610b3c57600080fd5b6000610b4a858286016109b2565b925050602083013567ffffffffffffffff811115610b6757600080fd5b610b7385828601610988565b9150509250929050565b60008060408385031215610b9057600080fd5b6000610b9e858286016109b2565b9250506020610baf858286016109b2565b9150509250929050565b60008060008060808587031215610bcf57600080fd5b6000610bdd878288016109b2565b9450506020610bee878288016109b2565b935050604085013567ffffffffffffffff811115610c0b57600080fd5b610c1787828801610988565b925050606085013567ffffffffffffffff811115610c3457600080fd5b610c4087828801610988565b91505092959194509250565b6000610c588383610d39565b60208301905092915050565b6000610c708383610e69565b60208301905092915050565b610c8581611145565b82525050565b610c94816110b1565b610c9e81846110f7565b9250610ca98261109d565b8060005b83811015610cda578151610cc18782610c4c565b9650610ccc836110dd565b925050600181019050610cad565b505050505050565b610ceb816110bc565b610cf58184611102565b9250610d00826110a7565b8060005b83811015610d31578151610d188782610c64565b9650610d23836110ea565b925050600181019050610d04565b505050505050565b610d4281611157565b82525050565b610d5181611157565b82525050565b6000610d62826110c7565b610d6c818561110d565b9350610d7c8185602086016111a4565b610d8581611237565b840191505092915050565b6000610d9b826110c7565b610da5818561111e565b9350610db58185602086016111a4565b80840191505092915050565b610dca81611161565b82525050565b6000610ddb826110d2565b610de58185611129565b9350610df58185602086016111a4565b610dfe81611237565b840191505092915050565b6000610e14826110d2565b610e1e818561113a565b9350610e2e8185602086016111a4565b80840191505092915050565b604082016000820151610e506000850182610e69565b506020820151610e636020850182610e69565b50505050565b610e728161118b565b82525050565b610e818161118b565b82525050565b6000610e938284610d90565b915081905092915050565b6000610eaa8284610e09565b915081905092915050565b6000602082019050610eca6000830184610c7c565b92915050565b6000604082019050610ee56000830184610c8b565b92915050565b6000604082019050610f006000830184610ce2565b92915050565b6000602082019050610f1b6000830184610d48565b92915050565b60006020820190508181036000830152610f3b8184610d57565b905092915050565b6000602082019050610f586000830184610dc1565b92915050565b60006020820190508181036000830152610f788184610dd0565b905092915050565b60006040820190508181036000830152610f9a8185610dd0565b90508181036020830152610fae8184610dd0565b90509392505050565b6000604082019050610fcc6000830184610e3a565b92915050565b6000602082019050610fe76000830184610e78565b92915050565b60006040820190506110026000830185610e78565b61100f6020830184610e78565b9392505050565b6000611020611031565b905061102c82826111d7565b919050565b6000604051905090565b600067ffffffffffffffff82111561105657611055611208565b5b61105f82611237565b9050602081019050919050565b600067ffffffffffffffff82111561108757611086611208565b5b61109082611237565b9050602081019050919050565b6000819050919050565b6000819050919050565b600060029050919050565b600060029050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b600081905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b60006111508261116b565b9050919050565b6000819050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b838110156111c25780820151818401526020810190506111a7565b838111156111d1576000848401525b50505050565b6111e082611237565b810181811067ffffffffffffffff821117156111ff576111fe611208565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b61125181611145565b811461125c57600080fd5b50565b61126881611157565b811461127357600080fd5b50565b61127f81611161565b811461128a57600080fd5b50565b6112968161118b565b81146112a157600080fd5b5056fea264697066735822122073a91a740c0de3883c5213c5981d98d2396a8b60b3cf2fb364d7e4cc826a841e64736f6c63430008040033", - "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061012c5760003560e01c80638a618191116100ad578063c76f063511610071578063c76f0635146102c3578063cc07e605146102df578063d3931e57146102fb578063db6cdf6814610317578063ec5c3ede146103215761012c565b80638a6181911461024957806390b37ea214610265578063919402441461026f5780639f31a2231461028b578063c0cd80e6146102a75761012c565b806333311ef3116100f457806333311ef3146101bd57806338393646146101d9578063443690a0146101f5578063532b9cce14610211578063813a8cf51461022d5761012c565b8063048858e5146101315780630c0c941a1461014d57806317aba537146101695780632536f127146101855780632785f8d6146101a1575b600080fd5b61014b600480360381019061014691906109f0565b61033d565b005b61016760048036038101906101629190610b7d565b61036d565b005b610183600480360381019061017e9190610b7d565b6103df565b005b61019f600480360381019061019a9190610abf565b61042e565b005b6101bb60048036038101906101b69190610b29565b610468565b005b6101d760048036038101906101d291906109f0565b6104da565b005b6101f360048036038101906101ee9190610b7d565b610514565b005b61020f600480360381019061020a9190610abf565b610551565b005b61022b60048036038101906102269190610bb9565b610596565b005b61024760048036038101906102429190610b00565b61060e565b005b610263600480360381019061025e9190610a96565b61061a565b005b61026d610654565b005b61028960048036038101906102849190610b00565b610682565b005b6102a560048036038101906102a09190610b7d565b6106bc565b005b6102c160048036038101906102bc9190610a19565b61070b565b005b6102dd60048036038101906102d89190610a55565b61075a565b005b6102f960048036038101906102f49190610a55565b610794565b005b61031560048036038101906103109190610b00565b6107d9565b005b61031f610867565b005b61033b600480360381019061033691906109c7565b610869565b005b807fb421ad092cfce88844bfbfaa9654e824ba0ee5b6b0a220f822406b62c05364c060405160405180910390a250565b7f97535d4b4270d3f1a499c85ae918ba6798cbdcc83a26529331a25dcd2194cfce8260405161039c9190610fd2565b60405180910390a17f97535d4b4270d3f1a499c85ae918ba6798cbdcc83a26529331a25dcd2194cfce816040516103d39190610fd2565b60405180910390a15050565b7f73e687a2685d698f7acf934b4929a29ae783a4bcb640d71c5d6994d74e2380ca6040518060400160405280848152602001838152506040516104229190610eeb565b60405180910390a15050565b7f9b7ddcbde8dac280e036f87acafec72f9eee31a640c08087e8439139c7e5b52a8160405161045d9190610f5e565b60405180910390a150565b7f9b7ddcbde8dac280e036f87acafec72f9eee31a640c08087e8439139c7e5b52a816040516104979190610f5e565b60405180910390a17f97535d4b4270d3f1a499c85ae918ba6798cbdcc83a26529331a25dcd2194cfce826040516104ce9190610fd2565b60405180910390a15050565b7f425517d2678bbca3c0d9d8d9fdbec34c81194e7935ed48a6a19f97db93bcef6a816040516105099190610f06565b60405180910390a150565b7f8b268bb46a33a55bece084a8b6858719c9f2985c860fa06c155a341df0b73c0e8282604051610545929190610fed565b60405180910390a15050565b8060405161055f9190610e9e565b60405180910390207fd9ca28363e2d8739e0e9c4fea1d2df98d1bd7d9d915d00e5fccbf78c0fddcdb060405160405180910390a250565b7f8b268bb46a33a55bece084a8b6858719c9f2985c860fa06c155a341df0b73c0e84846040516105c7929190610fed565b60405180910390a17f1f1a2c748505fcd8f16a719fa88d517b1b41111c4f5e07bb28311cdc4d1515388282604051610600929190610f80565b60405180910390a150505050565b61061781610682565b50565b7f39feab747bb4f579008aea963d7ebac85ad410bb83ee663a42af01464654e93f816040516106499190610f43565b60405180910390a150565b7f917b7bf7ab24d61500cb699921a3a1cc22b8833da6484fea20f262b2610604af60405160405180910390a1565b7f97535d4b4270d3f1a499c85ae918ba6798cbdcc83a26529331a25dcd2194cfce816040516106b19190610fd2565b60405180910390a150565b7fd59ab87bf64b9d737998f3dc70c649d16b135f085029c1666ca0634beb75a7736040518060400160405280848152602001838152506040516106ff9190610fb7565b60405180910390a15050565b7f15100859f3ffe92910dc3f11ed3db4e9cf32ff657c05066e44be4e69b2b488bc60405180604001604052808481526020018381525060405161074e9190610ed0565b60405180910390a15050565b7f433470edcdd53b50238be4d8e048e2baa269af5be2a4e29515c138883c745aa8816040516107899190610f21565b60405180910390a150565b806040516107a29190610e87565b60405180910390207f160e4655df40987951accf7c731d5c504f77d20c139bd73032821b91a426dd9860405160405180910390a250565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166391940244826040518263ffffffff1660e01b81526004016108329190610fd2565b600060405180830381600087803b15801561084c57600080fd5b505af1158015610860573d6000803e3d6000fd5b5050505050565b565b7f336bcd960d2e5a52cef6094ba33727f309dc2c675eebefc6d9b6b6d79abac877816040516108989190610eb5565b60405180910390a150565b60006108b66108b18461103b565b611016565b9050828152602081018484840111156108ce57600080fd5b6108d9848285611195565b509392505050565b60006108f46108ef8461106c565b611016565b90508281526020810184848401111561090c57600080fd5b610917848285611195565b509392505050565b60008135905061092e81611248565b92915050565b6000813590506109438161125f565b92915050565b600082601f83011261095a57600080fd5b813561096a8482602086016108a3565b91505092915050565b60008135905061098281611276565b92915050565b600082601f83011261099957600080fd5b81356109a98482602086016108e1565b91505092915050565b6000813590506109c18161128d565b92915050565b6000602082840312156109d957600080fd5b60006109e78482850161091f565b91505092915050565b600060208284031215610a0257600080fd5b6000610a1084828501610934565b91505092915050565b60008060408385031215610a2c57600080fd5b6000610a3a85828601610934565b9250506020610a4b85828601610934565b9150509250929050565b600060208284031215610a6757600080fd5b600082013567ffffffffffffffff811115610a8157600080fd5b610a8d84828501610949565b91505092915050565b600060208284031215610aa857600080fd5b6000610ab684828501610973565b91505092915050565b600060208284031215610ad157600080fd5b600082013567ffffffffffffffff811115610aeb57600080fd5b610af784828501610988565b91505092915050565b600060208284031215610b1257600080fd5b6000610b20848285016109b2565b91505092915050565b60008060408385031215610b3c57600080fd5b6000610b4a858286016109b2565b925050602083013567ffffffffffffffff811115610b6757600080fd5b610b7385828601610988565b9150509250929050565b60008060408385031215610b9057600080fd5b6000610b9e858286016109b2565b9250506020610baf858286016109b2565b9150509250929050565b60008060008060808587031215610bcf57600080fd5b6000610bdd878288016109b2565b9450506020610bee878288016109b2565b935050604085013567ffffffffffffffff811115610c0b57600080fd5b610c1787828801610988565b925050606085013567ffffffffffffffff811115610c3457600080fd5b610c4087828801610988565b91505092959194509250565b6000610c588383610d39565b60208301905092915050565b6000610c708383610e69565b60208301905092915050565b610c8581611145565b82525050565b610c94816110b1565b610c9e81846110f7565b9250610ca98261109d565b8060005b83811015610cda578151610cc18782610c4c565b9650610ccc836110dd565b925050600181019050610cad565b505050505050565b610ceb816110bc565b610cf58184611102565b9250610d00826110a7565b8060005b83811015610d31578151610d188782610c64565b9650610d23836110ea565b925050600181019050610d04565b505050505050565b610d4281611157565b82525050565b610d5181611157565b82525050565b6000610d62826110c7565b610d6c818561110d565b9350610d7c8185602086016111a4565b610d8581611237565b840191505092915050565b6000610d9b826110c7565b610da5818561111e565b9350610db58185602086016111a4565b80840191505092915050565b610dca81611161565b82525050565b6000610ddb826110d2565b610de58185611129565b9350610df58185602086016111a4565b610dfe81611237565b840191505092915050565b6000610e14826110d2565b610e1e818561113a565b9350610e2e8185602086016111a4565b80840191505092915050565b604082016000820151610e506000850182610e69565b506020820151610e636020850182610e69565b50505050565b610e728161118b565b82525050565b610e818161118b565b82525050565b6000610e938284610d90565b915081905092915050565b6000610eaa8284610e09565b915081905092915050565b6000602082019050610eca6000830184610c7c565b92915050565b6000604082019050610ee56000830184610c8b565b92915050565b6000604082019050610f006000830184610ce2565b92915050565b6000602082019050610f1b6000830184610d48565b92915050565b60006020820190508181036000830152610f3b8184610d57565b905092915050565b6000602082019050610f586000830184610dc1565b92915050565b60006020820190508181036000830152610f788184610dd0565b905092915050565b60006040820190508181036000830152610f9a8185610dd0565b90508181036020830152610fae8184610dd0565b90509392505050565b6000604082019050610fcc6000830184610e3a565b92915050565b6000602082019050610fe76000830184610e78565b92915050565b60006040820190506110026000830185610e78565b61100f6020830184610e78565b9392505050565b6000611020611031565b905061102c82826111d7565b919050565b6000604051905090565b600067ffffffffffffffff82111561105657611055611208565b5b61105f82611237565b9050602081019050919050565b600067ffffffffffffffff82111561108757611086611208565b5b61109082611237565b9050602081019050919050565b6000819050919050565b6000819050919050565b600060029050919050565b600060029050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b600081905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b60006111508261116b565b9050919050565b6000819050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b838110156111c25780820151818401526020810190506111a7565b838111156111d1576000848401525b50505050565b6111e082611237565b810181811067ffffffffffffffff821117156111ff576111fe611208565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b61125181611145565b811461125c57600080fd5b50565b61126881611157565b811461127357600080fd5b50565b61127f81611161565b811461128a57600080fd5b50565b6112968161118b565b81146112a157600080fd5b5056fea264697066735822122073a91a740c0de3883c5213c5981d98d2396a8b60b3cf2fb364d7e4cc826a841e64736f6c63430008040033", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Events.sol/OverrideEventContract.dbg.json b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Events.sol/OverrideEventContract.dbg.json deleted file mode 100644 index 224dfafc9c..0000000000 --- a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Events.sol/OverrideEventContract.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../build-info/16efa488de3a0283218beddfadbd1423.json" -} diff --git a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Events.sol/OverrideEventContract.json b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Events.sol/OverrideEventContract.json deleted file mode 100644 index 8400a4909c..0000000000 --- a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Events.sol/OverrideEventContract.json +++ /dev/null @@ -1,50 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "OverrideEventContract", - "sourceName": "contracts/Events.sol", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "u", - "type": "uint256" - } - ], - "name": "simpleEvent", - "type": "event" - }, - { - "anonymous": false, - "inputs": [], - "name": "simpleEvent", - "type": "event" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "u", - "type": "uint256" - } - ], - "name": "emitSimpleEventWithUintArg", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "emitSimpleEventWithoutArg", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - } - ], - "bytecode": "0x608060405234801561001057600080fd5b50610188806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80632ce136d91461003b5780638e1c72bb14610057575b600080fd5b610055600480360381019061005091906100de565b610061565b005b61005f61009b565b005b7fb2dc4835200bc382210c109031e47d05b37c9244807898f5910a43f961e6719a816040516100909190610116565b60405180910390a150565b7f8922a6ca0f59f137d8e739a3dca968247fca890d147a5006a57da5bc782f6ae960405160405180910390a1565b6000813590506100d88161013b565b92915050565b6000602082840312156100f057600080fd5b60006100fe848285016100c9565b91505092915050565b61011081610131565b82525050565b600060208201905061012b6000830184610107565b92915050565b6000819050919050565b61014481610131565b811461014f57600080fd5b5056fea264697066735822122016232a4f6ea73657adfebd142c8d15f5593e419f600cb1983aba440defd27a5064736f6c63430008040033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100365760003560e01c80632ce136d91461003b5780638e1c72bb14610057575b600080fd5b610055600480360381019061005091906100de565b610061565b005b61005f61009b565b005b7fb2dc4835200bc382210c109031e47d05b37c9244807898f5910a43f961e6719a816040516100909190610116565b60405180910390a150565b7f8922a6ca0f59f137d8e739a3dca968247fca890d147a5006a57da5bc782f6ae960405160405180910390a1565b6000813590506100d88161013b565b92915050565b6000602082840312156100f057600080fd5b60006100fe848285016100c9565b91505092915050565b61011081610131565b82525050565b600060208201905061012b6000830184610107565b92915050565b6000819050919050565b61014481610131565b811461014f57600080fd5b5056fea264697066735822122016232a4f6ea73657adfebd142c8d15f5593e419f600cb1983aba440defd27a5064736f6c63430008040033", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Matchers.sol/AnotherMatchersContract.dbg.json b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Matchers.sol/AnotherMatchersContract.dbg.json deleted file mode 100644 index 224dfafc9c..0000000000 --- a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Matchers.sol/AnotherMatchersContract.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../build-info/16efa488de3a0283218beddfadbd1423.json" -} diff --git a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Matchers.sol/AnotherMatchersContract.json b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Matchers.sol/AnotherMatchersContract.json deleted file mode 100644 index 6774821378..0000000000 --- a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Matchers.sol/AnotherMatchersContract.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "AnotherMatchersContract", - "sourceName": "contracts/Matchers.sol", - "abi": [ - { - "inputs": [], - "name": "YetAnotherCustomError", - "type": "error" - }, - { - "inputs": [], - "name": "revertWithYetAnotherCustomError", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "revertWithYetAnotherCustomErrorView", - "outputs": [], - "stateMutability": "pure", - "type": "function" - } - ], - "bytecode": "0x608060405234801561001057600080fd5b50610182806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c806340d83b241461003b5780634b2bd7e914610045575b600080fd5b61004361004f565b005b61004d610081565b005b6040517fff05e87500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080815480929190610093906100d4565b91905055506040517fff05e87500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000819050919050565b60006100df826100ca565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156101125761011161011d565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea2646970667358221220188b4117d3c1f35f2fcbff7fbf51ee28f08c8abd18e3796ccd1d2fbc8c862e3f64736f6c63430008040033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100365760003560e01c806340d83b241461003b5780634b2bd7e914610045575b600080fd5b61004361004f565b005b61004d610081565b005b6040517fff05e87500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080815480929190610093906100d4565b91905055506040517fff05e87500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000819050919050565b60006100df826100ca565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156101125761011161011d565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea2646970667358221220188b4117d3c1f35f2fcbff7fbf51ee28f08c8abd18e3796ccd1d2fbc8c862e3f64736f6c63430008040033", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Matchers.sol/Matchers.dbg.json b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Matchers.sol/Matchers.dbg.json deleted file mode 100644 index 224dfafc9c..0000000000 --- a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Matchers.sol/Matchers.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../build-info/16efa488de3a0283218beddfadbd1423.json" -} diff --git a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Matchers.sol/Matchers.json b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Matchers.sol/Matchers.json deleted file mode 100644 index 5a4f85691d..0000000000 --- a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Matchers.sol/Matchers.json +++ /dev/null @@ -1,333 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "Matchers", - "sourceName": "contracts/Matchers.sol", - "abi": [ - { - "inputs": [], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "inputs": [], - "name": "AnotherCustomError", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "int256", - "name": "", - "type": "int256" - } - ], - "name": "CustomErrorWithInt", - "type": "error" - }, - { - "inputs": [ - { - "components": [ - { - "internalType": "uint256", - "name": "a", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "b", - "type": "uint256" - } - ], - "internalType": "struct Matchers.Pair", - "name": "", - "type": "tuple" - } - ], - "name": "CustomErrorWithPair", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "nameToForceEthersToUseAnArrayLikeWithNamedProperties", - "type": "uint256" - } - ], - "name": "CustomErrorWithUint", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - }, - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "name": "CustomErrorWithUintAndString", - "type": "error" - }, - { - "inputs": [], - "name": "SomeCustomError", - "type": "error" - }, - { - "anonymous": false, - "inputs": [], - "name": "SomeEvent", - "type": "event" - }, - { - "inputs": [], - "name": "panicAssert", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "panicAssertView", - "outputs": [], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [], - "name": "revertWithAnotherContractCustomError", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "revertWithAnotherContractCustomErrorView", - "outputs": [], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "revertWithAnotherCustomError", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "revertWithAnotherCustomErrorView", - "outputs": [], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "int256", - "name": "i", - "type": "int256" - } - ], - "name": "revertWithCustomErrorWithInt", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "int256", - "name": "i", - "type": "int256" - } - ], - "name": "revertWithCustomErrorWithIntView", - "outputs": [], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "a", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "b", - "type": "uint256" - } - ], - "name": "revertWithCustomErrorWithPair", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "a", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "b", - "type": "uint256" - } - ], - "name": "revertWithCustomErrorWithPairView", - "outputs": [], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "n", - "type": "uint256" - } - ], - "name": "revertWithCustomErrorWithUint", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "n", - "type": "uint256" - }, - { - "internalType": "string", - "name": "s", - "type": "string" - } - ], - "name": "revertWithCustomErrorWithUintAndString", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "n", - "type": "uint256" - }, - { - "internalType": "string", - "name": "s", - "type": "string" - } - ], - "name": "revertWithCustomErrorWithUintAndStringView", - "outputs": [], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "n", - "type": "uint256" - } - ], - "name": "revertWithCustomErrorWithUintView", - "outputs": [], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [], - "name": "revertWithSomeCustomError", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "revertWithSomeCustomErrorView", - "outputs": [], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "string", - "name": "reason", - "type": "string" - } - ], - "name": "revertsWith", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "string", - "name": "reason", - "type": "string" - } - ], - "name": "revertsWithView", - "outputs": [], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [], - "name": "revertsWithoutReason", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "revertsWithoutReasonView", - "outputs": [], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [], - "name": "succeeds", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "succeedsView", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - } - ], - "bytecode": "0x608060405234801561001057600080fd5b5060405161001d9061007f565b604051809103906000f080158015610039573d6000803e3d6000fd5b50600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061008c565b6101a280610e8a83390190565b610def8061009b6000396000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c806373d2ea85116100b8578063aac014e01161007c578063aac014e01461028b578063b6bbe06114610295578063bad92aa91461029f578063e0a03812146102a9578063fe276a34146102c5578063ffb4746b146102e157610142565b806373d2ea851461022357806374afd4521461023f578063772f243a146102495780637c3cb0af146102535780638f9330301461026f57610142565b80634b5bbf6a1161010a5780634b5bbf6a146101c157806358a1d1ed146101cb5780635b94e31e146101d5578063622051f1146101df5780636f1fdc31146101e95780636fc588d21461020557610142565b80631b4f3f3d146101475780631f542cf3146101515780633ba4178b1461016d578063467e3d371461018957806347c56769146101a5575b600080fd5b61014f6102eb565b005b61016b60048036038101906101669190610a66565b61030f565b005b61018760048036038101906101829190610a12565b610360565b005b6101a3600480360381019061019e91906109a8565b61039f565b005b6101bf60048036038101906101ba919061097f565b6103e7565b005b6101c9610424565b005b6101d361046d565b005b6101dd61047a565b005b6101e76104b1565b005b61020360048036038101906101fe91906109a8565b610533565b005b61020d610592565b60405161021a9190610b8f565b60405180910390f35b61023d600480360381019061023891906109e9565b61059b565b005b6102476105ef565b005b610251610608565b005b61026d600480360381019061026891906109e9565b6106a3565b005b6102896004803603810190610284919061097f565b6106e0565b005b610293610734565b005b61029d610766565b005b6102a76107b4565b005b6102c360048036038101906102be9190610a66565b6107fd565b005b6102df60048036038101906102da9190610a12565b610865565b005b6102e96108bb565b005b6000808154809291906102fd90610cd3565b9190505550600061030d57600080fd5b565b6040518060400160405280838152602001828152506040517fdecab0e70000000000000000000000000000000000000000000000000000000081526004016103579190610b74565b60405180910390fd5b81816040517fa92ee8e3000000000000000000000000000000000000000000000000000000008152600401610396929190610baa565b60405180910390fd5b600081906103e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103da9190610b52565b60405180910390fd5b5050565b806040517fcdd7a0cc00000000000000000000000000000000000000000000000000000000815260040161041b9190610b37565b60405180910390fd5b60008081548092919061043690610cd3565b91905055506040517fd2c097a600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061047857600080fd5b565b60006104af577f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340d83b246040518163ffffffff1660e01b815260040160006040518083038186803b15801561051957600080fd5b505afa15801561052d573d6000803e3d6000fd5b50505050565b60008081548092919061054590610cd3565b91905055506000819061058e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105859190610b52565b60405180910390fd5b5050565b60008054905090565b6000808154809291906105ad90610cd3565b9190505550806040517f01f4d5d20000000000000000000000000000000000000000000000000000000081526004016105e69190610b8f565b60405180910390fd5b60008081548092919061060190610cd3565b9190505550565b60008081548092919061061a90610cd3565b9190505550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634b2bd7e96040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561068957600080fd5b505af115801561069d573d6000803e3d6000fd5b50505050565b806040517f01f4d5d20000000000000000000000000000000000000000000000000000000081526004016106d79190610b8f565b60405180910390fd5b6000808154809291906106f290610cd3565b9190505550806040517fcdd7a0cc00000000000000000000000000000000000000000000000000000000815260040161072b9190610b37565b60405180910390fd5b6040517fd2c097a600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008081548092919061077890610cd3565b919050555060006107b2577f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b565b6000808154809291906107c690610cd3565b91905055506040517f0bd3d39c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008081548092919061080f90610cd3565b91905055506040518060400160405280838152602001828152506040517fdecab0e700000000000000000000000000000000000000000000000000000000815260040161085c9190610b74565b60405180910390fd5b60008081548092919061087790610cd3565b919050555081816040517fa92ee8e30000000000000000000000000000000000000000000000000000000081526004016108b2929190610baa565b60405180910390fd5b6040517f0bd3d39c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006109006108fb84610bff565b610bda565b90508281526020810184848401111561091857600080fd5b610923848285610c60565b509392505050565b60008135905061093a81610d8b565b92915050565b600082601f83011261095157600080fd5b81356109618482602086016108ed565b91505092915050565b60008135905061097981610da2565b92915050565b60006020828403121561099157600080fd5b600061099f8482850161092b565b91505092915050565b6000602082840312156109ba57600080fd5b600082013567ffffffffffffffff8111156109d457600080fd5b6109e084828501610940565b91505092915050565b6000602082840312156109fb57600080fd5b6000610a098482850161096a565b91505092915050565b60008060408385031215610a2557600080fd5b6000610a338582860161096a565b925050602083013567ffffffffffffffff811115610a5057600080fd5b610a5c85828601610940565b9150509250929050565b60008060408385031215610a7957600080fd5b6000610a878582860161096a565b9250506020610a988582860161096a565b9150509250929050565b610aab81610c4c565b82525050565b6000610abc82610c30565b610ac68185610c3b565b9350610ad6818560208601610c6f565b610adf81610d7a565b840191505092915050565b604082016000820151610b006000850182610b19565b506020820151610b136020850182610b19565b50505050565b610b2281610c56565b82525050565b610b3181610c56565b82525050565b6000602082019050610b4c6000830184610aa2565b92915050565b60006020820190508181036000830152610b6c8184610ab1565b905092915050565b6000604082019050610b896000830184610aea565b92915050565b6000602082019050610ba46000830184610b28565b92915050565b6000604082019050610bbf6000830185610b28565b8181036020830152610bd18184610ab1565b90509392505050565b6000610be4610bf5565b9050610bf08282610ca2565b919050565b6000604051905090565b600067ffffffffffffffff821115610c1a57610c19610d4b565b5b610c2382610d7a565b9050602081019050919050565b600081519050919050565b600082825260208201905092915050565b6000819050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015610c8d578082015181840152602081019050610c72565b83811115610c9c576000848401525b50505050565b610cab82610d7a565b810181811067ffffffffffffffff82111715610cca57610cc9610d4b565b5b80604052505050565b6000610cde82610c56565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415610d1157610d10610d1c565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b610d9481610c4c565b8114610d9f57600080fd5b50565b610dab81610c56565b8114610db657600080fd5b5056fea264697066735822122025e4c9eca28af81eeb16cfbb3832355e24c64c7eae221a5034159a671d61281464736f6c63430008040033608060405234801561001057600080fd5b50610182806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c806340d83b241461003b5780634b2bd7e914610045575b600080fd5b61004361004f565b005b61004d610081565b005b6040517fff05e87500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080815480929190610093906100d4565b91905055506040517fff05e87500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000819050919050565b60006100df826100ca565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156101125761011161011d565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea2646970667358221220188b4117d3c1f35f2fcbff7fbf51ee28f08c8abd18e3796ccd1d2fbc8c862e3f64736f6c63430008040033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101425760003560e01c806373d2ea85116100b8578063aac014e01161007c578063aac014e01461028b578063b6bbe06114610295578063bad92aa91461029f578063e0a03812146102a9578063fe276a34146102c5578063ffb4746b146102e157610142565b806373d2ea851461022357806374afd4521461023f578063772f243a146102495780637c3cb0af146102535780638f9330301461026f57610142565b80634b5bbf6a1161010a5780634b5bbf6a146101c157806358a1d1ed146101cb5780635b94e31e146101d5578063622051f1146101df5780636f1fdc31146101e95780636fc588d21461020557610142565b80631b4f3f3d146101475780631f542cf3146101515780633ba4178b1461016d578063467e3d371461018957806347c56769146101a5575b600080fd5b61014f6102eb565b005b61016b60048036038101906101669190610a66565b61030f565b005b61018760048036038101906101829190610a12565b610360565b005b6101a3600480360381019061019e91906109a8565b61039f565b005b6101bf60048036038101906101ba919061097f565b6103e7565b005b6101c9610424565b005b6101d361046d565b005b6101dd61047a565b005b6101e76104b1565b005b61020360048036038101906101fe91906109a8565b610533565b005b61020d610592565b60405161021a9190610b8f565b60405180910390f35b61023d600480360381019061023891906109e9565b61059b565b005b6102476105ef565b005b610251610608565b005b61026d600480360381019061026891906109e9565b6106a3565b005b6102896004803603810190610284919061097f565b6106e0565b005b610293610734565b005b61029d610766565b005b6102a76107b4565b005b6102c360048036038101906102be9190610a66565b6107fd565b005b6102df60048036038101906102da9190610a12565b610865565b005b6102e96108bb565b005b6000808154809291906102fd90610cd3565b9190505550600061030d57600080fd5b565b6040518060400160405280838152602001828152506040517fdecab0e70000000000000000000000000000000000000000000000000000000081526004016103579190610b74565b60405180910390fd5b81816040517fa92ee8e3000000000000000000000000000000000000000000000000000000008152600401610396929190610baa565b60405180910390fd5b600081906103e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103da9190610b52565b60405180910390fd5b5050565b806040517fcdd7a0cc00000000000000000000000000000000000000000000000000000000815260040161041b9190610b37565b60405180910390fd5b60008081548092919061043690610cd3565b91905055506040517fd2c097a600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061047857600080fd5b565b60006104af577f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340d83b246040518163ffffffff1660e01b815260040160006040518083038186803b15801561051957600080fd5b505afa15801561052d573d6000803e3d6000fd5b50505050565b60008081548092919061054590610cd3565b91905055506000819061058e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105859190610b52565b60405180910390fd5b5050565b60008054905090565b6000808154809291906105ad90610cd3565b9190505550806040517f01f4d5d20000000000000000000000000000000000000000000000000000000081526004016105e69190610b8f565b60405180910390fd5b60008081548092919061060190610cd3565b9190505550565b60008081548092919061061a90610cd3565b9190505550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634b2bd7e96040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561068957600080fd5b505af115801561069d573d6000803e3d6000fd5b50505050565b806040517f01f4d5d20000000000000000000000000000000000000000000000000000000081526004016106d79190610b8f565b60405180910390fd5b6000808154809291906106f290610cd3565b9190505550806040517fcdd7a0cc00000000000000000000000000000000000000000000000000000000815260040161072b9190610b37565b60405180910390fd5b6040517fd2c097a600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008081548092919061077890610cd3565b919050555060006107b2577f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b565b6000808154809291906107c690610cd3565b91905055506040517f0bd3d39c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008081548092919061080f90610cd3565b91905055506040518060400160405280838152602001828152506040517fdecab0e700000000000000000000000000000000000000000000000000000000815260040161085c9190610b74565b60405180910390fd5b60008081548092919061087790610cd3565b919050555081816040517fa92ee8e30000000000000000000000000000000000000000000000000000000081526004016108b2929190610baa565b60405180910390fd5b6040517f0bd3d39c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006109006108fb84610bff565b610bda565b90508281526020810184848401111561091857600080fd5b610923848285610c60565b509392505050565b60008135905061093a81610d8b565b92915050565b600082601f83011261095157600080fd5b81356109618482602086016108ed565b91505092915050565b60008135905061097981610da2565b92915050565b60006020828403121561099157600080fd5b600061099f8482850161092b565b91505092915050565b6000602082840312156109ba57600080fd5b600082013567ffffffffffffffff8111156109d457600080fd5b6109e084828501610940565b91505092915050565b6000602082840312156109fb57600080fd5b6000610a098482850161096a565b91505092915050565b60008060408385031215610a2557600080fd5b6000610a338582860161096a565b925050602083013567ffffffffffffffff811115610a5057600080fd5b610a5c85828601610940565b9150509250929050565b60008060408385031215610a7957600080fd5b6000610a878582860161096a565b9250506020610a988582860161096a565b9150509250929050565b610aab81610c4c565b82525050565b6000610abc82610c30565b610ac68185610c3b565b9350610ad6818560208601610c6f565b610adf81610d7a565b840191505092915050565b604082016000820151610b006000850182610b19565b506020820151610b136020850182610b19565b50505050565b610b2281610c56565b82525050565b610b3181610c56565b82525050565b6000602082019050610b4c6000830184610aa2565b92915050565b60006020820190508181036000830152610b6c8184610ab1565b905092915050565b6000604082019050610b896000830184610aea565b92915050565b6000602082019050610ba46000830184610b28565b92915050565b6000604082019050610bbf6000830185610b28565b8181036020830152610bd18184610ab1565b90509392505050565b6000610be4610bf5565b9050610bf08282610ca2565b919050565b6000604051905090565b600067ffffffffffffffff821115610c1a57610c19610d4b565b5b610c2382610d7a565b9050602081019050919050565b600081519050919050565b600082825260208201905092915050565b6000819050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015610c8d578082015181840152602081019050610c72565b83811115610c9c576000848401525b50505050565b610cab82610d7a565b810181811067ffffffffffffffff82111715610cca57610cc9610d4b565b5b80604052505050565b6000610cde82610c56565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415610d1157610d10610d1c565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b610d9481610c4c565b8114610d9f57600080fd5b50565b610dab81610c56565b8114610db657600080fd5b5056fea264697066735822122025e4c9eca28af81eeb16cfbb3832355e24c64c7eae221a5034159a671d61281464736f6c63430008040033", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Token.sol/MockToken.dbg.json b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Token.sol/MockToken.dbg.json deleted file mode 100644 index 224dfafc9c..0000000000 --- a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Token.sol/MockToken.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../build-info/16efa488de3a0283218beddfadbd1423.json" -} diff --git a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Token.sol/MockToken.json b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Token.sol/MockToken.json deleted file mode 100644 index 20f3bfa19b..0000000000 --- a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Token.sol/MockToken.json +++ /dev/null @@ -1,183 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "MockToken", - "sourceName": "contracts/Token.sol", - "abi": [ - { - "inputs": [ - { - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "internalType": "address", - "name": "spender", - "type": "address" - } - ], - "name": "allowance", - "outputs": [ - { - "internalType": "uint256", - "name": "remaining", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "approve", - "outputs": [ - { - "internalType": "bool", - "name": "success", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "balanceOf", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "decimals", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "name", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "symbol", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "totalSupply", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "transfer", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "transferFrom", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - } - ], - "bytecode": "0x608060405260016000556040518060400160405280600981526020017f4d6f636b546f6b656e000000000000000000000000000000000000000000000081525060049080519060200190620000569291906200010a565b506040518060400160405280600381526020017f4d434b000000000000000000000000000000000000000000000000000000000081525060059080519060200190620000a49291906200010a565b50348015620000b257600080fd5b50633b9aca00600181905550600154600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506200021f565b8280546200011890620001ba565b90600052602060002090601f0160209004810192826200013c576000855562000188565b82601f106200015757805160ff191683800117855562000188565b8280016001018555821562000188579182015b82811115620001875782518255916020019190600101906200016a565b5b5090506200019791906200019b565b5090565b5b80821115620001b65760008160009055506001016200019c565b5090565b60006002820490506001821680620001d357607f821691505b60208210811415620001ea57620001e9620001f0565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b610bad806200022f6000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c8063313ce56711610066578063313ce5671461013457806370a082311461015257806395d89b4114610182578063a9059cbb146101a0578063dd62ed3e146101d057610093565b806306fdde0314610098578063095ea7b3146100b657806318160ddd146100e657806323b872dd14610104575b600080fd5b6100a0610200565b6040516100ad91906108b8565b60405180910390f35b6100d060048036038101906100cb91906107c4565b61028e565b6040516100dd919061089d565b60405180910390f35b6100ee61031b565b6040516100fb919061091a565b60405180910390f35b61011e60048036038101906101199190610775565b610321565b60405161012b919061089d565b60405180910390f35b61013c6104b9565b604051610149919061091a565b60405180910390f35b61016c60048036038101906101679190610710565b6104bf565b604051610179919061091a565b60405180910390f35b61018a6104d7565b60405161019791906108b8565b60405180910390f35b6101ba60048036038101906101b591906107c4565b610565565b6040516101c7919061089d565b60405180910390f35b6101ea60048036038101906101e59190610739565b61065f565b6040516101f7919061091a565b60405180910390f35b6004805461020d90610a56565b80601f016020809104026020016040519081016040528092919081815260200182805461023990610a56565b80156102865780601f1061025b57610100808354040283529160200191610286565b820191906000526020600020905b81548152906001019060200180831161026957829003601f168201915b505050505081565b600081600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001905092915050565b60015481565b60008161032e853361065f565b101561036f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610366906108da565b60405180910390fd5b81600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546103fb91906109a7565b9250508190555081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461045191906109a7565b9250508190555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546104a79190610951565b92505081905550600190509392505050565b60005481565b60026020528060005260406000206000915090505481565b600580546104e490610a56565b80601f016020809104026020016040519081016040528092919081815260200182805461051090610a56565b801561055d5780601f106105325761010080835404028352916020019161055d565b820191906000526020600020905b81548152906001019060200180831161054057829003601f168201915b505050505081565b60008082116105a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105a0906108fa565b60405180910390fd5b81600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546105f891906109a7565b9250508190555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461064e9190610951565b925050819055506001905092915050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000813590506106f581610b49565b92915050565b60008135905061070a81610b60565b92915050565b60006020828403121561072257600080fd5b6000610730848285016106e6565b91505092915050565b6000806040838503121561074c57600080fd5b600061075a858286016106e6565b925050602061076b858286016106e6565b9150509250929050565b60008060006060848603121561078a57600080fd5b6000610798868287016106e6565b93505060206107a9868287016106e6565b92505060406107ba868287016106fb565b9150509250925092565b600080604083850312156107d757600080fd5b60006107e5858286016106e6565b92505060206107f6858286016106fb565b9150509250929050565b610809816109ed565b82525050565b600061081a82610935565b6108248185610940565b9350610834818560208601610a23565b61083d81610ae6565b840191505092915050565b6000610855601683610940565b915061086082610af7565b602082019050919050565b6000610878601983610940565b915061088382610b20565b602082019050919050565b61089781610a19565b82525050565b60006020820190506108b26000830184610800565b92915050565b600060208201905081810360008301526108d2818461080f565b905092915050565b600060208201905081810360008301526108f381610848565b9050919050565b600060208201905081810360008301526109138161086b565b9050919050565b600060208201905061092f600083018461088e565b92915050565b600081519050919050565b600082825260208201905092915050565b600061095c82610a19565b915061096783610a19565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561099c5761099b610a88565b5b828201905092915050565b60006109b282610a19565b91506109bd83610a19565b9250828210156109d0576109cf610a88565b5b828203905092915050565b60006109e6826109f9565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b83811015610a41578082015181840152602081019050610a26565b83811115610a50576000848401525b50505050565b60006002820490506001821680610a6e57607f821691505b60208210811415610a8257610a81610ab7565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f496e73756666696369656e7420616c6c6f77616e636500000000000000000000600082015250565b7f5472616e736665727265642076616c7565206973207a65726f00000000000000600082015250565b610b52816109db565b8114610b5d57600080fd5b50565b610b6981610a19565b8114610b7457600080fd5b5056fea26469706673582212208ce961870c9d6cd505270df5da0c70d49a8f6cb7e04d5a03b16637783be136e764736f6c63430008040033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100935760003560e01c8063313ce56711610066578063313ce5671461013457806370a082311461015257806395d89b4114610182578063a9059cbb146101a0578063dd62ed3e146101d057610093565b806306fdde0314610098578063095ea7b3146100b657806318160ddd146100e657806323b872dd14610104575b600080fd5b6100a0610200565b6040516100ad91906108b8565b60405180910390f35b6100d060048036038101906100cb91906107c4565b61028e565b6040516100dd919061089d565b60405180910390f35b6100ee61031b565b6040516100fb919061091a565b60405180910390f35b61011e60048036038101906101199190610775565b610321565b60405161012b919061089d565b60405180910390f35b61013c6104b9565b604051610149919061091a565b60405180910390f35b61016c60048036038101906101679190610710565b6104bf565b604051610179919061091a565b60405180910390f35b61018a6104d7565b60405161019791906108b8565b60405180910390f35b6101ba60048036038101906101b591906107c4565b610565565b6040516101c7919061089d565b60405180910390f35b6101ea60048036038101906101e59190610739565b61065f565b6040516101f7919061091a565b60405180910390f35b6004805461020d90610a56565b80601f016020809104026020016040519081016040528092919081815260200182805461023990610a56565b80156102865780601f1061025b57610100808354040283529160200191610286565b820191906000526020600020905b81548152906001019060200180831161026957829003601f168201915b505050505081565b600081600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001905092915050565b60015481565b60008161032e853361065f565b101561036f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610366906108da565b60405180910390fd5b81600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546103fb91906109a7565b9250508190555081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461045191906109a7565b9250508190555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546104a79190610951565b92505081905550600190509392505050565b60005481565b60026020528060005260406000206000915090505481565b600580546104e490610a56565b80601f016020809104026020016040519081016040528092919081815260200182805461051090610a56565b801561055d5780601f106105325761010080835404028352916020019161055d565b820191906000526020600020905b81548152906001019060200180831161054057829003601f168201915b505050505081565b60008082116105a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105a0906108fa565b60405180910390fd5b81600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546105f891906109a7565b9250508190555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461064e9190610951565b925050819055506001905092915050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000813590506106f581610b49565b92915050565b60008135905061070a81610b60565b92915050565b60006020828403121561072257600080fd5b6000610730848285016106e6565b91505092915050565b6000806040838503121561074c57600080fd5b600061075a858286016106e6565b925050602061076b858286016106e6565b9150509250929050565b60008060006060848603121561078a57600080fd5b6000610798868287016106e6565b93505060206107a9868287016106e6565b92505060406107ba868287016106fb565b9150509250925092565b600080604083850312156107d757600080fd5b60006107e5858286016106e6565b92505060206107f6858286016106fb565b9150509250929050565b610809816109ed565b82525050565b600061081a82610935565b6108248185610940565b9350610834818560208601610a23565b61083d81610ae6565b840191505092915050565b6000610855601683610940565b915061086082610af7565b602082019050919050565b6000610878601983610940565b915061088382610b20565b602082019050919050565b61089781610a19565b82525050565b60006020820190506108b26000830184610800565b92915050565b600060208201905081810360008301526108d2818461080f565b905092915050565b600060208201905081810360008301526108f381610848565b9050919050565b600060208201905081810360008301526109138161086b565b9050919050565b600060208201905061092f600083018461088e565b92915050565b600081519050919050565b600082825260208201905092915050565b600061095c82610a19565b915061096783610a19565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561099c5761099b610a88565b5b828201905092915050565b60006109b282610a19565b91506109bd83610a19565b9250828210156109d0576109cf610a88565b5b828203905092915050565b60006109e6826109f9565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b83811015610a41578082015181840152602081019050610a26565b83811115610a50576000848401525b50505050565b60006002820490506001821680610a6e57607f821691505b60208210811415610a8257610a81610ab7565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f496e73756666696369656e7420616c6c6f77616e636500000000000000000000600082015250565b7f5472616e736665727265642076616c7565206973207a65726f00000000000000600082015250565b610b52816109db565b8114610b5d57600080fd5b50565b610b6981610a19565b8114610b7457600080fd5b5056fea26469706673582212208ce961870c9d6cd505270df5da0c70d49a8f6cb7e04d5a03b16637783be136e764736f6c63430008040033", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Token.sol/NotAToken.dbg.json b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Token.sol/NotAToken.dbg.json deleted file mode 100644 index 224dfafc9c..0000000000 --- a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Token.sol/NotAToken.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../build-info/16efa488de3a0283218beddfadbd1423.json" -} diff --git a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Token.sol/NotAToken.json b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Token.sol/NotAToken.json deleted file mode 100644 index e50d9826d8..0000000000 --- a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Token.sol/NotAToken.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "NotAToken", - "sourceName": "contracts/Token.sol", - "abi": [], - "bytecode": "0x6080604052348015600f57600080fd5b50603f80601d6000396000f3fe6080604052600080fdfea26469706673582212209449725821c33b87347a40f451b2c6483bf5505349fe39bcd25604669e50f33364736f6c63430008040033", - "deployedBytecode": "0x6080604052600080fdfea26469706673582212209449725821c33b87347a40f451b2c6483bf5505349fe39bcd25604669e50f33364736f6c63430008040033", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Token.sol/TokenWithOnlyName.dbg.json b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Token.sol/TokenWithOnlyName.dbg.json deleted file mode 100644 index 224dfafc9c..0000000000 --- a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Token.sol/TokenWithOnlyName.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../build-info/16efa488de3a0283218beddfadbd1423.json" -} diff --git a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Token.sol/TokenWithOnlyName.json b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Token.sol/TokenWithOnlyName.json deleted file mode 100644 index 65eb5c812c..0000000000 --- a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Token.sol/TokenWithOnlyName.json +++ /dev/null @@ -1,170 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "TokenWithOnlyName", - "sourceName": "contracts/Token.sol", - "abi": [ - { - "inputs": [ - { - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "internalType": "address", - "name": "spender", - "type": "address" - } - ], - "name": "allowance", - "outputs": [ - { - "internalType": "uint256", - "name": "remaining", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "approve", - "outputs": [ - { - "internalType": "bool", - "name": "success", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "balanceOf", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "decimals", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "name", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "totalSupply", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "transfer", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "transferFrom", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - } - ], - "bytecode": "0x608060405260016000556040518060400160405280600981526020017f4d6f636b546f6b656e0000000000000000000000000000000000000000000000815250600490805190602001906100549291906100b8565b5034801561006157600080fd5b50633b9aca00600181905550600154600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506101bc565b8280546100c49061015b565b90600052602060002090601f0160209004810192826100e6576000855561012d565b82601f106100ff57805160ff191683800117855561012d565b8280016001018555821561012d579182015b8281111561012c578251825591602001919060010190610111565b5b50905061013a919061013e565b5090565b5b8082111561015757600081600090555060010161013f565b5090565b6000600282049050600182168061017357607f821691505b602082108114156101875761018661018d565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b610af6806101cb6000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063313ce5671161005b578063313ce5671461012957806370a0823114610147578063a9059cbb14610177578063dd62ed3e146101a757610088565b806306fdde031461008d578063095ea7b3146100ab57806318160ddd146100db57806323b872dd146100f9575b600080fd5b6100956101d7565b6040516100a29190610801565b60405180910390f35b6100c560048036038101906100c0919061070d565b610265565b6040516100d291906107e6565b60405180910390f35b6100e36102f2565b6040516100f09190610863565b60405180910390f35b610113600480360381019061010e91906106be565b6102f8565b60405161012091906107e6565b60405180910390f35b610131610490565b60405161013e9190610863565b60405180910390f35b610161600480360381019061015c9190610659565b610496565b60405161016e9190610863565b60405180910390f35b610191600480360381019061018c919061070d565b6104ae565b60405161019e91906107e6565b60405180910390f35b6101c160048036038101906101bc9190610682565b6105a8565b6040516101ce9190610863565b60405180910390f35b600480546101e49061099f565b80601f01602080910402602001604051908101604052809291908181526020018280546102109061099f565b801561025d5780601f106102325761010080835404028352916020019161025d565b820191906000526020600020905b81548152906001019060200180831161024057829003601f168201915b505050505081565b600081600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001905092915050565b60015481565b60008161030585336105a8565b1015610346576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161033d90610823565b60405180910390fd5b81600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546103d291906108f0565b9250508190555081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461042891906108f0565b9250508190555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461047e919061089a565b92505081905550600190509392505050565b60005481565b60026020528060005260406000206000915090505481565b60008082116104f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104e990610843565b60405180910390fd5b81600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461054191906108f0565b9250508190555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610597919061089a565b925050819055506001905092915050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008135905061063e81610a92565b92915050565b60008135905061065381610aa9565b92915050565b60006020828403121561066b57600080fd5b60006106798482850161062f565b91505092915050565b6000806040838503121561069557600080fd5b60006106a38582860161062f565b92505060206106b48582860161062f565b9150509250929050565b6000806000606084860312156106d357600080fd5b60006106e18682870161062f565b93505060206106f28682870161062f565b925050604061070386828701610644565b9150509250925092565b6000806040838503121561072057600080fd5b600061072e8582860161062f565b925050602061073f85828601610644565b9150509250929050565b61075281610936565b82525050565b60006107638261087e565b61076d8185610889565b935061077d81856020860161096c565b61078681610a2f565b840191505092915050565b600061079e601683610889565b91506107a982610a40565b602082019050919050565b60006107c1601983610889565b91506107cc82610a69565b602082019050919050565b6107e081610962565b82525050565b60006020820190506107fb6000830184610749565b92915050565b6000602082019050818103600083015261081b8184610758565b905092915050565b6000602082019050818103600083015261083c81610791565b9050919050565b6000602082019050818103600083015261085c816107b4565b9050919050565b600060208201905061087860008301846107d7565b92915050565b600081519050919050565b600082825260208201905092915050565b60006108a582610962565b91506108b083610962565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156108e5576108e46109d1565b5b828201905092915050565b60006108fb82610962565b915061090683610962565b925082821015610919576109186109d1565b5b828203905092915050565b600061092f82610942565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b8381101561098a57808201518184015260208101905061096f565b83811115610999576000848401525b50505050565b600060028204905060018216806109b757607f821691505b602082108114156109cb576109ca610a00565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f496e73756666696369656e7420616c6c6f77616e636500000000000000000000600082015250565b7f5472616e736665727265642076616c7565206973207a65726f00000000000000600082015250565b610a9b81610924565b8114610aa657600080fd5b50565b610ab281610962565b8114610abd57600080fd5b5056fea2646970667358221220a6fcd04aa893368d0e3e9a004a848844c520623183d6b2111fbc6f837204d0fa64736f6c63430008040033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100885760003560e01c8063313ce5671161005b578063313ce5671461012957806370a0823114610147578063a9059cbb14610177578063dd62ed3e146101a757610088565b806306fdde031461008d578063095ea7b3146100ab57806318160ddd146100db57806323b872dd146100f9575b600080fd5b6100956101d7565b6040516100a29190610801565b60405180910390f35b6100c560048036038101906100c0919061070d565b610265565b6040516100d291906107e6565b60405180910390f35b6100e36102f2565b6040516100f09190610863565b60405180910390f35b610113600480360381019061010e91906106be565b6102f8565b60405161012091906107e6565b60405180910390f35b610131610490565b60405161013e9190610863565b60405180910390f35b610161600480360381019061015c9190610659565b610496565b60405161016e9190610863565b60405180910390f35b610191600480360381019061018c919061070d565b6104ae565b60405161019e91906107e6565b60405180910390f35b6101c160048036038101906101bc9190610682565b6105a8565b6040516101ce9190610863565b60405180910390f35b600480546101e49061099f565b80601f01602080910402602001604051908101604052809291908181526020018280546102109061099f565b801561025d5780601f106102325761010080835404028352916020019161025d565b820191906000526020600020905b81548152906001019060200180831161024057829003601f168201915b505050505081565b600081600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001905092915050565b60015481565b60008161030585336105a8565b1015610346576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161033d90610823565b60405180910390fd5b81600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546103d291906108f0565b9250508190555081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461042891906108f0565b9250508190555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461047e919061089a565b92505081905550600190509392505050565b60005481565b60026020528060005260406000206000915090505481565b60008082116104f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104e990610843565b60405180910390fd5b81600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461054191906108f0565b9250508190555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610597919061089a565b925050819055506001905092915050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008135905061063e81610a92565b92915050565b60008135905061065381610aa9565b92915050565b60006020828403121561066b57600080fd5b60006106798482850161062f565b91505092915050565b6000806040838503121561069557600080fd5b60006106a38582860161062f565b92505060206106b48582860161062f565b9150509250929050565b6000806000606084860312156106d357600080fd5b60006106e18682870161062f565b93505060206106f28682870161062f565b925050604061070386828701610644565b9150509250925092565b6000806040838503121561072057600080fd5b600061072e8582860161062f565b925050602061073f85828601610644565b9150509250929050565b61075281610936565b82525050565b60006107638261087e565b61076d8185610889565b935061077d81856020860161096c565b61078681610a2f565b840191505092915050565b600061079e601683610889565b91506107a982610a40565b602082019050919050565b60006107c1601983610889565b91506107cc82610a69565b602082019050919050565b6107e081610962565b82525050565b60006020820190506107fb6000830184610749565b92915050565b6000602082019050818103600083015261081b8184610758565b905092915050565b6000602082019050818103600083015261083c81610791565b9050919050565b6000602082019050818103600083015261085c816107b4565b9050919050565b600060208201905061087860008301846107d7565b92915050565b600081519050919050565b600082825260208201905092915050565b60006108a582610962565b91506108b083610962565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156108e5576108e46109d1565b5b828201905092915050565b60006108fb82610962565b915061090683610962565b925082821015610919576109186109d1565b5b828203905092915050565b600061092f82610942565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b8381101561098a57808201518184015260208101905061096f565b83811115610999576000848401525b50505050565b600060028204905060018216806109b757607f821691505b602082108114156109cb576109ca610a00565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f496e73756666696369656e7420616c6c6f77616e636500000000000000000000600082015250565b7f5472616e736665727265642076616c7565206973207a65726f00000000000000600082015250565b610a9b81610924565b8114610aa657600080fd5b50565b610ab281610962565b8114610abd57600080fd5b5056fea2646970667358221220a6fcd04aa893368d0e3e9a004a848844c520623183d6b2111fbc6f837204d0fa64736f6c63430008040033", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Token.sol/TokenWithoutNameNorSymbol.dbg.json b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Token.sol/TokenWithoutNameNorSymbol.dbg.json deleted file mode 100644 index 224dfafc9c..0000000000 --- a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Token.sol/TokenWithoutNameNorSymbol.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../build-info/16efa488de3a0283218beddfadbd1423.json" -} diff --git a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Token.sol/TokenWithoutNameNorSymbol.json b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Token.sol/TokenWithoutNameNorSymbol.json deleted file mode 100644 index 14e0511214..0000000000 --- a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Token.sol/TokenWithoutNameNorSymbol.json +++ /dev/null @@ -1,162 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "TokenWithoutNameNorSymbol", - "sourceName": "contracts/Token.sol", - "abi": [ - { - "inputs": [], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "internalType": "address", - "name": "spender", - "type": "address" - } - ], - "name": "allowance", - "outputs": [ - { - "internalType": "uint256", - "name": "remaining", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "approve", - "outputs": [ - { - "internalType": "bool", - "name": "success", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "balanceOf", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "decimals", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "totalSupply", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "transfer", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "transferFrom", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - } - ], - "bytecode": "0x6080604052600160005534801561001557600080fd5b50633b9aca00600181905550600154600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610934806100766000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c8063313ce5671161005b578063313ce5671461010057806370a082311461011e578063a9059cbb1461014e578063dd62ed3e1461017e5761007d565b8063095ea7b31461008257806318160ddd146100b257806323b872dd146100d0575b600080fd5b61009c60048036038101906100979190610656565b6101ae565b6040516100a991906106f6565b60405180910390f35b6100ba61023b565b6040516100c79190610751565b60405180910390f35b6100ea60048036038101906100e59190610607565b610241565b6040516100f791906106f6565b60405180910390f35b6101086103d9565b6040516101159190610751565b60405180910390f35b610138600480360381019061013391906105a2565b6103df565b6040516101459190610751565b60405180910390f35b61016860048036038101906101639190610656565b6103f7565b60405161017591906106f6565b60405180910390f35b610198600480360381019061019391906105cb565b6104f1565b6040516101a59190610751565b60405180910390f35b600081600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001905092915050565b60015481565b60008161024e85336104f1565b101561028f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161028690610711565b60405180910390fd5b81600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461031b91906107d3565b9250508190555081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461037191906107d3565b9250508190555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546103c7919061077d565b92505081905550600190509392505050565b60005481565b60026020528060005260406000206000915090505481565b600080821161043b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043290610731565b60405180910390fd5b81600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461048a91906107d3565b9250508190555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546104e0919061077d565b925050819055506001905092915050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600081359050610587816108d0565b92915050565b60008135905061059c816108e7565b92915050565b6000602082840312156105b457600080fd5b60006105c284828501610578565b91505092915050565b600080604083850312156105de57600080fd5b60006105ec85828601610578565b92505060206105fd85828601610578565b9150509250929050565b60008060006060848603121561061c57600080fd5b600061062a86828701610578565b935050602061063b86828701610578565b925050604061064c8682870161058d565b9150509250925092565b6000806040838503121561066957600080fd5b600061067785828601610578565b92505060206106888582860161058d565b9150509250929050565b61069b81610819565b82525050565b60006106ae60168361076c565b91506106b98261087e565b602082019050919050565b60006106d160198361076c565b91506106dc826108a7565b602082019050919050565b6106f081610845565b82525050565b600060208201905061070b6000830184610692565b92915050565b6000602082019050818103600083015261072a816106a1565b9050919050565b6000602082019050818103600083015261074a816106c4565b9050919050565b600060208201905061076660008301846106e7565b92915050565b600082825260208201905092915050565b600061078882610845565b915061079383610845565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156107c8576107c761084f565b5b828201905092915050565b60006107de82610845565b91506107e983610845565b9250828210156107fc576107fb61084f565b5b828203905092915050565b600061081282610825565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f496e73756666696369656e7420616c6c6f77616e636500000000000000000000600082015250565b7f5472616e736665727265642076616c7565206973207a65726f00000000000000600082015250565b6108d981610807565b81146108e457600080fd5b50565b6108f081610845565b81146108fb57600080fd5b5056fea2646970667358221220a8a6918adf2af132e4e49a96a108a2d9c62cfb74de3e267b6c8af323b87f6ec964736f6c63430008040033", - "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061007d5760003560e01c8063313ce5671161005b578063313ce5671461010057806370a082311461011e578063a9059cbb1461014e578063dd62ed3e1461017e5761007d565b8063095ea7b31461008257806318160ddd146100b257806323b872dd146100d0575b600080fd5b61009c60048036038101906100979190610656565b6101ae565b6040516100a991906106f6565b60405180910390f35b6100ba61023b565b6040516100c79190610751565b60405180910390f35b6100ea60048036038101906100e59190610607565b610241565b6040516100f791906106f6565b60405180910390f35b6101086103d9565b6040516101159190610751565b60405180910390f35b610138600480360381019061013391906105a2565b6103df565b6040516101459190610751565b60405180910390f35b61016860048036038101906101639190610656565b6103f7565b60405161017591906106f6565b60405180910390f35b610198600480360381019061019391906105cb565b6104f1565b6040516101a59190610751565b60405180910390f35b600081600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001905092915050565b60015481565b60008161024e85336104f1565b101561028f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161028690610711565b60405180910390fd5b81600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461031b91906107d3565b9250508190555081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461037191906107d3565b9250508190555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546103c7919061077d565b92505081905550600190509392505050565b60005481565b60026020528060005260406000206000915090505481565b600080821161043b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043290610731565b60405180910390fd5b81600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461048a91906107d3565b9250508190555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546104e0919061077d565b925050819055506001905092915050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600081359050610587816108d0565b92915050565b60008135905061059c816108e7565b92915050565b6000602082840312156105b457600080fd5b60006105c284828501610578565b91505092915050565b600080604083850312156105de57600080fd5b60006105ec85828601610578565b92505060206105fd85828601610578565b9150509250929050565b60008060006060848603121561061c57600080fd5b600061062a86828701610578565b935050602061063b86828701610578565b925050604061064c8682870161058d565b9150509250925092565b6000806040838503121561066957600080fd5b600061067785828601610578565b92505060206106888582860161058d565b9150509250929050565b61069b81610819565b82525050565b60006106ae60168361076c565b91506106b98261087e565b602082019050919050565b60006106d160198361076c565b91506106dc826108a7565b602082019050919050565b6106f081610845565b82525050565b600060208201905061070b6000830184610692565b92915050565b6000602082019050818103600083015261072a816106a1565b9050919050565b6000602082019050818103600083015261074a816106c4565b9050919050565b600060208201905061076660008301846106e7565b92915050565b600082825260208201905092915050565b600061078882610845565b915061079383610845565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156107c8576107c761084f565b5b828201905092915050565b60006107de82610845565b91506107e983610845565b9250828210156107fc576107fb61084f565b5b828203905092915050565b600061081282610825565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f496e73756666696369656e7420616c6c6f77616e636500000000000000000000600082015250565b7f5472616e736665727265642076616c7565206973207a65726f00000000000000600082015250565b6108d981610807565b81146108e457600080fd5b50565b6108f081610845565b81146108fb57600080fd5b5056fea2646970667358221220a8a6918adf2af132e4e49a96a108a2d9c62cfb74de3e267b6c8af323b87f6ec964736f6c63430008040033", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/cache/solidity-files-cache.json b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/cache/solidity-files-cache.json deleted file mode 100644 index e790e6ed89..0000000000 --- a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/cache/solidity-files-cache.json +++ /dev/null @@ -1,151 +0,0 @@ -{ - "_format": "hh-sol-cache-2", - "files": { - "/home/chris/repos/nomic-foundation/hardhat2/packages/hardhat-chai-matchers/test/fixture-projects/hardhat-project/contracts/ChangeEtherBalance.sol": { - "lastModificationDate": 1728320765682, - "contentHash": "9dc9459c32d8af0a0f4d5acfebd155a4", - "sourceName": "contracts/ChangeEtherBalance.sol", - "solcConfig": { - "version": "0.8.4", - "settings": { - "optimizer": { - "enabled": false, - "runs": 200 - }, - "outputSelection": { - "*": { - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ], - "": [ - "ast" - ] - } - } - } - }, - "imports": [], - "versionPragmas": [ - "^0.8.0" - ], - "artifacts": [ - "ChangeEtherBalance" - ] - }, - "/home/chris/repos/nomic-foundation/hardhat2/packages/hardhat-chai-matchers/test/fixture-projects/hardhat-project/contracts/Events.sol": { - "lastModificationDate": 1728320765682, - "contentHash": "099fe3f0b22189d2eb9219e8e74ab261", - "sourceName": "contracts/Events.sol", - "solcConfig": { - "version": "0.8.4", - "settings": { - "optimizer": { - "enabled": false, - "runs": 200 - }, - "outputSelection": { - "*": { - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ], - "": [ - "ast" - ] - } - } - } - }, - "imports": [], - "versionPragmas": [ - "^0.8.0" - ], - "artifacts": [ - "AnotherContract", - "Events", - "OverrideEventContract" - ] - }, - "/home/chris/repos/nomic-foundation/hardhat2/packages/hardhat-chai-matchers/test/fixture-projects/hardhat-project/contracts/Matchers.sol": { - "lastModificationDate": 1728320765682, - "contentHash": "cf77d6e0a9ab773b8772b00d07ca587f", - "sourceName": "contracts/Matchers.sol", - "solcConfig": { - "version": "0.8.4", - "settings": { - "optimizer": { - "enabled": false, - "runs": 200 - }, - "outputSelection": { - "*": { - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ], - "": [ - "ast" - ] - } - } - } - }, - "imports": [], - "versionPragmas": [ - "^0.8.0" - ], - "artifacts": [ - "AnotherMatchersContract", - "Matchers" - ] - }, - "/home/chris/repos/nomic-foundation/hardhat2/packages/hardhat-chai-matchers/test/fixture-projects/hardhat-project/contracts/Token.sol": { - "lastModificationDate": 1728320765682, - "contentHash": "e2710c31b1afaab46382eb7735e73547", - "sourceName": "contracts/Token.sol", - "solcConfig": { - "version": "0.8.4", - "settings": { - "optimizer": { - "enabled": false, - "runs": 200 - }, - "outputSelection": { - "*": { - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ], - "": [ - "ast" - ] - } - } - } - }, - "imports": [], - "versionPragmas": [ - "^0.8.0" - ], - "artifacts": [ - "MockToken", - "NotAToken", - "TokenWithOnlyName", - "TokenWithoutNameNorSymbol" - ] - } - } -} diff --git a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/contracts/ChangeEtherBalance.sol b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/contracts/ChangeEtherBalance.sol index c86c18e4c4..2bb109299a 100644 --- a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/contracts/ChangeEtherBalance.sol +++ b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/contracts/ChangeEtherBalance.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; +pragma solidity ^0.8.24; contract ChangeEtherBalance { function returnHalf() public payable { @@ -11,4 +11,4 @@ contract ChangeEtherBalance { } receive() external payable {} -} \ No newline at end of file +} diff --git a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/contracts/Events.sol b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/contracts/Events.sol index cb82198dc4..81d9941b43 100644 --- a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/contracts/Events.sol +++ b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/contracts/Events.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; +pragma solidity ^0.8.24; contract Events { AnotherContract anotherContract; @@ -25,7 +25,7 @@ contract Events { event WithUintArray(uint[2] a); event WithBytes32Array(bytes32[2] a); - constructor (AnotherContract c) { + constructor(AnotherContract c) { anotherContract = c; } @@ -85,7 +85,12 @@ contract Events { emit WithUintArg(u); } - function emitTwoUintsAndTwoStrings(uint u, uint v, string memory s, string memory t) public { + function emitTwoUintsAndTwoStrings( + uint u, + uint v, + string memory s, + string memory t + ) public { emit WithTwoUintArgs(u, v); emit WithTwoStringArgs(s, t); } diff --git a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/contracts/Matchers.sol b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/contracts/Matchers.sol index be1e6047a1..489bb1428b 100644 --- a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/contracts/Matchers.sol +++ b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/contracts/Matchers.sol @@ -1,6 +1,6 @@ // SPDX-License-Identifier: UNLICENSED -pragma solidity ^0.8.0; +pragma solidity ^0.8.24; contract Matchers { uint x; @@ -9,16 +9,21 @@ contract Matchers { AnotherMatchersContract anotherContract; - struct Pair { uint a; uint b; } + struct Pair { + uint a; + uint b; + } error SomeCustomError(); error AnotherCustomError(); error CustomErrorWithInt(int); - error CustomErrorWithUint(uint nameToForceEthersToUseAnArrayLikeWithNamedProperties); + error CustomErrorWithUint( + uint nameToForceEthersToUseAnArrayLikeWithNamedProperties + ); error CustomErrorWithUintAndString(uint, string); error CustomErrorWithPair(Pair); - constructor () { + constructor() { anotherContract = new AnotherMatchersContract(); } @@ -102,12 +107,18 @@ contract Matchers { revert CustomErrorWithInt(i); } - function revertWithCustomErrorWithUintAndString(uint n, string memory s) public { + function revertWithCustomErrorWithUintAndString( + uint n, + string memory s + ) public { x++; revert CustomErrorWithUintAndString(n, s); } - function revertWithCustomErrorWithUintAndStringView(uint n, string memory s) public pure { + function revertWithCustomErrorWithUintAndStringView( + uint n, + string memory s + ) public pure { revert CustomErrorWithUintAndString(n, s); } diff --git a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/contracts/Token.sol b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/contracts/Token.sol index 0d9d3842c7..75c0eb8c69 100644 --- a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/contracts/Token.sol +++ b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/contracts/Token.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; +pragma solidity ^0.8.24; contract TokenWithoutNameNorSymbol { uint public decimals = 1; @@ -8,7 +8,7 @@ contract TokenWithoutNameNorSymbol { mapping(address => uint) public balanceOf; mapping(address => mapping(address => uint)) allowances; - constructor () { + constructor() { totalSupply = 1_000_000_000; balanceOf[msg.sender] = totalSupply; } @@ -22,16 +22,26 @@ contract TokenWithoutNameNorSymbol { return true; } - function allowance(address owner, address spender) public view returns (uint256 remaining) { + function allowance( + address owner, + address spender + ) public view returns (uint256 remaining) { return allowances[owner][spender]; } - function approve(address spender, uint256 value) public returns (bool success) { + function approve( + address spender, + uint256 value + ) public returns (bool success) { allowances[msg.sender][spender] = value; return true; } - function transferFrom(address from, address to, uint256 value) public returns (bool) { + function transferFrom( + address from, + address to, + uint256 value + ) public returns (bool) { require(allowance(from, msg.sender) >= value, "Insufficient allowance"); allowances[from][msg.sender] -= value; From 11b2015d02504e3be509822e8d0f940a289e5d49 Mon Sep 17 00:00:00 2001 From: ChrisD <18092467+ChristopherDedominici@users.noreply.github.com> Date: Fri, 22 Nov 2024 11:23:52 +0100 Subject: [PATCH 29/61] compile contracts in separate folders --- .../hardhat-project/hardhat.config.ts | 13 +++++++++++- .../hardhat-project/package.json | 9 ++++++++ .../hook-initialization/hardhat.config.ts | 1 + .../hook-initialization/package.json | 8 +++++++ .../hook-initialization/test/test.ts | 1 + .../test/helpers/helpers.ts | 21 +++++++++++++++++++ v-next/hardhat-chai-matchers/test/index.ts | 6 +++--- .../test/matchers/changeEtherBalance.ts | 12 ++--------- .../test/matchers/changeEtherBalances.ts | 12 ++--------- .../test/matchers/changeTokenBalance.ts | 12 ++--------- .../test/matchers/events.ts | 18 ++++++---------- .../test/matchers/reverted/reverted.ts | 20 +++++++----------- .../test/matchers/reverted/revertedWith.ts | 20 +++++++----------- .../reverted/revertedWithCustomError.ts | 20 +++++++----------- .../matchers/reverted/revertedWithPanic.ts | 18 ++++++---------- .../reverted/revertedWithoutReason.ts | 18 ++++++---------- 16 files changed, 101 insertions(+), 108 deletions(-) create mode 100644 v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/package.json create mode 100644 v-next/hardhat-chai-matchers/test/fixture-projects/hook-initialization/package.json diff --git a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/hardhat.config.ts b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/hardhat.config.ts index 83ba902b6e..c9f7f09443 100644 --- a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/hardhat.config.ts +++ b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/hardhat.config.ts @@ -1,5 +1,16 @@ import type { HardhatUserConfig } from "@ignored/hardhat-vnext/config"; -const config: HardhatUserConfig = {}; +import hardhatEthersPlugin from "@ignored/hardhat-vnext-ethers"; + +const config: HardhatUserConfig = { + solidity: { + version: "0.8.24", + }, + paths: { + // TODO: remove this when compilation in V3 is executed only when files are not compiled already (when cache is available) + artifacts: "./artifacts", + }, + plugins: [hardhatEthersPlugin], +}; export default config; diff --git a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/package.json b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/package.json new file mode 100644 index 0000000000..0746d6034c --- /dev/null +++ b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/package.json @@ -0,0 +1,9 @@ +{ + "name": "hardhat-project", + "private": "true", + "type": "module", + "dependencies": { + "@ignored/hardhat-vnext": "*", + "@ignored/hardhat-vnext-ethers": "*" + } +} diff --git a/v-next/hardhat-chai-matchers/test/fixture-projects/hook-initialization/hardhat.config.ts b/v-next/hardhat-chai-matchers/test/fixture-projects/hook-initialization/hardhat.config.ts index 82072d7817..ca9509d04f 100644 --- a/v-next/hardhat-chai-matchers/test/fixture-projects/hook-initialization/hardhat.config.ts +++ b/v-next/hardhat-chai-matchers/test/fixture-projects/hook-initialization/hardhat.config.ts @@ -2,6 +2,7 @@ import type { HardhatUserConfig } from "@ignored/hardhat-vnext/config"; import HardhatMochaPlugin from "@ignored/hardhat-vnext-mocha-test-runner"; +// eslint-disable-next-line import/no-relative-packages -- allow in fixture projects import hardhatChaiMatchersPlugin from "../../../src/index.js"; const config: HardhatUserConfig = { diff --git a/v-next/hardhat-chai-matchers/test/fixture-projects/hook-initialization/package.json b/v-next/hardhat-chai-matchers/test/fixture-projects/hook-initialization/package.json new file mode 100644 index 0000000000..163ad78225 --- /dev/null +++ b/v-next/hardhat-chai-matchers/test/fixture-projects/hook-initialization/package.json @@ -0,0 +1,8 @@ +{ + "name": "hardhat-project", + "private": "true", + "type": "module", + "dependencies": { + "@ignored/hardhat-vnext-mocha-test-runner": "*" + } +} diff --git a/v-next/hardhat-chai-matchers/test/fixture-projects/hook-initialization/test/test.ts b/v-next/hardhat-chai-matchers/test/fixture-projects/hook-initialization/test/test.ts index 9405f75459..74681c6976 100644 --- a/v-next/hardhat-chai-matchers/test/fixture-projects/hook-initialization/test/test.ts +++ b/v-next/hardhat-chai-matchers/test/fixture-projects/hook-initialization/test/test.ts @@ -1,3 +1,4 @@ +// eslint-disable-next-line import/no-extraneous-dependencies -- allow in fixture projects import { AssertionError, expect } from "chai"; describe("chai-matcher-test", () => { diff --git a/v-next/hardhat-chai-matchers/test/helpers/helpers.ts b/v-next/hardhat-chai-matchers/test/helpers/helpers.ts index 3cff01e7ba..1245a0571d 100644 --- a/v-next/hardhat-chai-matchers/test/helpers/helpers.ts +++ b/v-next/hardhat-chai-matchers/test/helpers/helpers.ts @@ -3,8 +3,29 @@ import type { EthereumProvider } from "@ignored/hardhat-vnext/types/providers"; import type { HardhatEthers } from "@ignored/hardhat-vnext-ethers/types"; import type { ContractTransactionResponse } from "ethers/contract"; +import path from "node:path"; + +import { createHardhatRuntimeEnvironment } from "@ignored/hardhat-vnext/hre"; import { AssertionError, expect } from "chai"; +export async function initEnvironment(artifactsPath: string): Promise<{ + provider: EthereumProvider; + ethers: HardhatEthers; +}> { + const config = (await import(`${process.cwd()}/hardhat.config.ts`)).default; + + // TODO: remove this when compilation in V3 is executed only when files are not compiled already (when cache is available) + config.paths.artifacts = path.join(".", "artifacts", artifactsPath); + + const hre = await createHardhatRuntimeEnvironment(config); + + await hre.tasks.getTask("compile").run({}); + + const { ethers, provider } = await hre.network.connect(); + + return { provider, ethers }; +} + /** * Call `method` as: * - A write transaction diff --git a/v-next/hardhat-chai-matchers/test/index.ts b/v-next/hardhat-chai-matchers/test/index.ts index e446295bb4..8a5ec5a8db 100644 --- a/v-next/hardhat-chai-matchers/test/index.ts +++ b/v-next/hardhat-chai-matchers/test/index.ts @@ -8,9 +8,9 @@ describe("hardhat-chai-matchers plugin correctly initialized", () => { useFixtureProject("hook-initialization"); it("should load the plugin via hook and use the functionalities in a mocha test", async () => { - const hardhatConfig = await import( - "./fixture-projects/hook-initialization/hardhat.config.js" - ); + const configPath = + "./fixture-projects/hook-initialization/hardhat.config.ts"; + const hardhatConfig = await import(configPath); const hre = await createHardhatRuntimeEnvironment(hardhatConfig.default); diff --git a/v-next/hardhat-chai-matchers/test/matchers/changeEtherBalance.ts b/v-next/hardhat-chai-matchers/test/matchers/changeEtherBalance.ts index dd539c78f4..38048987c0 100644 --- a/v-next/hardhat-chai-matchers/test/matchers/changeEtherBalance.ts +++ b/v-next/hardhat-chai-matchers/test/matchers/changeEtherBalance.ts @@ -10,9 +10,7 @@ import path from "node:path"; import { before, beforeEach, describe, it } from "node:test"; import util from "node:util"; -import { createHardhatRuntimeEnvironment } from "@ignored/hardhat-vnext/hre"; import { HardhatError } from "@ignored/hardhat-vnext-errors"; -import hardhatEthersPlugin from "@ignored/hardhat-vnext-ethers"; import { assertThrowsHardhatError, useFixtureProject, @@ -20,6 +18,7 @@ import { import { expect, AssertionError } from "chai"; import { addChaiMatchers } from "../../src/internal/add-chai-matchers.js"; +import { initEnvironment } from "../helpers/helpers.js"; addChaiMatchers(); @@ -46,14 +45,7 @@ describe("INTEGRATION: changeEtherBalance matcher", () => { let ethers: HardhatEthers; before(async () => { - const hre = await createHardhatRuntimeEnvironment({ - paths: { - artifacts: `${process.cwd()}/artifacts`, - }, - plugins: [hardhatEthersPlugin], - }); - - ({ ethers, provider } = await hre.network.connect()); + ({ ethers, provider } = await initEnvironment("change-ether-balance")); }); beforeEach(async () => { diff --git a/v-next/hardhat-chai-matchers/test/matchers/changeEtherBalances.ts b/v-next/hardhat-chai-matchers/test/matchers/changeEtherBalances.ts index 05d12bc934..02175029ef 100644 --- a/v-next/hardhat-chai-matchers/test/matchers/changeEtherBalances.ts +++ b/v-next/hardhat-chai-matchers/test/matchers/changeEtherBalances.ts @@ -10,9 +10,7 @@ import path from "node:path"; import { before, beforeEach, describe, it } from "node:test"; import util from "node:util"; -import { createHardhatRuntimeEnvironment } from "@ignored/hardhat-vnext/hre"; import { HardhatError } from "@ignored/hardhat-vnext-errors"; -import hardhatEthersPlugin from "@ignored/hardhat-vnext-ethers"; import { assertThrowsHardhatError, useFixtureProject, @@ -20,6 +18,7 @@ import { import { expect, AssertionError } from "chai"; import { addChaiMatchers } from "../../src/internal/add-chai-matchers.js"; +import { initEnvironment } from "../helpers/helpers.js"; addChaiMatchers(); @@ -47,14 +46,7 @@ describe("INTEGRATION: changeEtherBalances matcher", () => { let ethers: HardhatEthers; before(async () => { - const hre = await createHardhatRuntimeEnvironment({ - paths: { - artifacts: `${process.cwd()}/artifacts`, - }, - plugins: [hardhatEthersPlugin], - }); - - ({ ethers, provider } = await hre.network.connect()); + ({ ethers, provider } = await initEnvironment("change-ether-balances")); }); beforeEach(async () => { diff --git a/v-next/hardhat-chai-matchers/test/matchers/changeTokenBalance.ts b/v-next/hardhat-chai-matchers/test/matchers/changeTokenBalance.ts index 3e003b644b..273bc385f9 100644 --- a/v-next/hardhat-chai-matchers/test/matchers/changeTokenBalance.ts +++ b/v-next/hardhat-chai-matchers/test/matchers/changeTokenBalance.ts @@ -16,9 +16,7 @@ import path from "node:path"; import { afterEach, before, beforeEach, describe, it } from "node:test"; import util from "node:util"; -import { createHardhatRuntimeEnvironment } from "@ignored/hardhat-vnext/hre"; import { HardhatError } from "@ignored/hardhat-vnext-errors"; -import hardhatEthersPlugin from "@ignored/hardhat-vnext-ethers"; import { assertThrowsHardhatError, useFixtureProject, @@ -31,6 +29,7 @@ import { CHANGE_TOKEN_BALANCES_MATCHER, } from "../../src/internal/constants.js"; import { clearTokenDescriptionsCache } from "../../src/internal/matchers/changeTokenBalance.js"; +import { initEnvironment } from "../helpers/helpers.js"; addChaiMatchers(); @@ -62,14 +61,7 @@ describe("INTEGRATION: changeTokenBalance and changeTokenBalances matchers", () let ethers: HardhatEthers; before(async () => { - const hre = await createHardhatRuntimeEnvironment({ - paths: { - artifacts: `${process.cwd()}/artifacts`, - }, - plugins: [hardhatEthersPlugin], - }); - - ({ ethers, provider } = await hre.network.connect()); + ({ ethers, provider } = await initEnvironment("change-token-balance")); }); beforeEach(async () => { diff --git a/v-next/hardhat-chai-matchers/test/matchers/events.ts b/v-next/hardhat-chai-matchers/test/matchers/events.ts index c7903b108e..1a7eef309c 100644 --- a/v-next/hardhat-chai-matchers/test/matchers/events.ts +++ b/v-next/hardhat-chai-matchers/test/matchers/events.ts @@ -6,11 +6,9 @@ import type { } from "../helpers/contracts.js"; import type { HardhatEthers } from "@ignored/hardhat-vnext-ethers/types"; -import { beforeEach, describe, it } from "node:test"; +import { before, beforeEach, describe, it } from "node:test"; -import { createHardhatRuntimeEnvironment } from "@ignored/hardhat-vnext/hre"; import { HardhatError } from "@ignored/hardhat-vnext-errors"; -import hardhatEthersPlugin from "@ignored/hardhat-vnext-ethers"; import { assertRejectsWithHardhatError } from "@nomicfoundation/hardhat-test-utils"; import { expect, AssertionError } from "chai"; import { id } from "ethers/hash"; @@ -19,6 +17,7 @@ import { Wallet } from "ethers/wallet"; import { addChaiMatchers } from "../../src/internal/add-chai-matchers.js"; import { anyUint, anyValue } from "../../src/withArgs.js"; +import { initEnvironment } from "../helpers/helpers.js"; addChaiMatchers(); @@ -42,16 +41,11 @@ describe(".to.emit (contract events)", () => { function runTests() { let ethers: HardhatEthers; - beforeEach(async () => { - const hre = await createHardhatRuntimeEnvironment({ - paths: { - artifacts: `${process.cwd()}/artifacts`, - }, - plugins: [hardhatEthersPlugin], - }); - - ({ ethers } = await hre.network.connect()); + before(async () => { + ({ ethers } = await initEnvironment("events")); + }); + beforeEach(async () => { otherContract = await ethers.deployContract("AnotherContract"); contract = await ( diff --git a/v-next/hardhat-chai-matchers/test/matchers/reverted/reverted.ts b/v-next/hardhat-chai-matchers/test/matchers/reverted/reverted.ts index 3a6080bcdf..34502a3fe1 100644 --- a/v-next/hardhat-chai-matchers/test/matchers/reverted/reverted.ts +++ b/v-next/hardhat-chai-matchers/test/matchers/reverted/reverted.ts @@ -3,12 +3,10 @@ import type { EthereumProvider } from "@ignored/hardhat-vnext/types/providers"; import type { HardhatEthers } from "@ignored/hardhat-vnext-ethers/types"; import path from "node:path"; -import { beforeEach, describe, it } from "node:test"; +import { before, beforeEach, describe, it } from "node:test"; import util from "node:util"; -import { createHardhatRuntimeEnvironment } from "@ignored/hardhat-vnext/hre"; import { HardhatError } from "@ignored/hardhat-vnext-errors"; -import hardhatEthersPlugin from "@ignored/hardhat-vnext-ethers"; import { assertRejectsWithHardhatError, assertThrowsHardhatError, @@ -22,6 +20,7 @@ import { runFailedAsserts, mineSuccessfulTransaction, mineRevertedTransaction, + initEnvironment, } from "../../helpers/helpers.js"; addChaiMatchers(); @@ -45,16 +44,11 @@ describe("INTEGRATION: Reverted", () => { let provider: EthereumProvider; let ethers: HardhatEthers; - beforeEach(async () => { - const hre = await createHardhatRuntimeEnvironment({ - paths: { - artifacts: `${process.cwd()}/artifacts`, - }, - plugins: [hardhatEthersPlugin], - }); - - ({ ethers, provider } = await hre.network.connect()); + before(async () => { + ({ ethers, provider } = await initEnvironment("reverted")); + }); + beforeEach(async () => { const Matchers = await ethers.getContractFactory<[], MatchersContract>( "Matchers", ); @@ -458,7 +452,7 @@ describe("INTEGRATION: Reverted", () => { }), ).to.not.be.reverted(ethers), ).to.be.eventually.rejectedWith( - "Sender doesn't have enough funds to send tx. The max upfront cost is: 2750000000000000 and the sender's balance is: 0.", + "Sender doesn't have enough funds to send tx. The max upfront cost is: 1007359608000000 and the sender's balance is: 0.", ); }); }); diff --git a/v-next/hardhat-chai-matchers/test/matchers/reverted/revertedWith.ts b/v-next/hardhat-chai-matchers/test/matchers/reverted/revertedWith.ts index 353faa2d04..ffa2795a08 100644 --- a/v-next/hardhat-chai-matchers/test/matchers/reverted/revertedWith.ts +++ b/v-next/hardhat-chai-matchers/test/matchers/reverted/revertedWith.ts @@ -3,12 +3,10 @@ import type { EthereumProvider } from "@ignored/hardhat-vnext/types/providers"; import type { HardhatEthers } from "@ignored/hardhat-vnext-ethers/types"; import path from "node:path"; -import { beforeEach, describe, it } from "node:test"; +import { before, beforeEach, describe, it } from "node:test"; import util from "node:util"; -import { createHardhatRuntimeEnvironment } from "@ignored/hardhat-vnext/hre"; import { HardhatError } from "@ignored/hardhat-vnext-errors"; -import hardhatEthersPlugin from "@ignored/hardhat-vnext-ethers"; import { assertThrowsHardhatError, useFixtureProject, @@ -20,6 +18,7 @@ import { runSuccessfulAsserts, runFailedAsserts, mineSuccessfulTransaction, + initEnvironment, } from "../../helpers/helpers.js"; addChaiMatchers(); @@ -43,16 +42,11 @@ describe("INTEGRATION: Reverted with", () => { let provider: EthereumProvider; let ethers: HardhatEthers; - beforeEach(async () => { - const hre = await createHardhatRuntimeEnvironment({ - paths: { - artifacts: `${process.cwd()}/artifacts`, - }, - plugins: [hardhatEthersPlugin], - }); - - ({ ethers, provider } = await hre.network.connect()); + before(async () => { + ({ ethers, provider } = await initEnvironment("reverted-with")); + }); + beforeEach(async () => { const Matchers = await ethers.getContractFactory<[], MatchersContract>( "Matchers", ); @@ -253,7 +247,7 @@ describe("INTEGRATION: Reverted with", () => { }), ).to.not.be.revertedWith("some reason"), ).to.be.eventually.rejectedWith( - "Sender doesn't have enough funds to send tx. The max upfront cost is: 2750000000000000 and the sender's balance is: 0.", + "Sender doesn't have enough funds to send tx. The max upfront cost is: 1218222876000000 and the sender's balance is: 0.", ); }); }); diff --git a/v-next/hardhat-chai-matchers/test/matchers/reverted/revertedWithCustomError.ts b/v-next/hardhat-chai-matchers/test/matchers/reverted/revertedWithCustomError.ts index 33ae5b3fa8..1eb4c05e8e 100644 --- a/v-next/hardhat-chai-matchers/test/matchers/reverted/revertedWithCustomError.ts +++ b/v-next/hardhat-chai-matchers/test/matchers/reverted/revertedWithCustomError.ts @@ -3,12 +3,10 @@ import type { EthereumProvider } from "@ignored/hardhat-vnext/types/providers"; import type { HardhatEthers } from "@ignored/hardhat-vnext-ethers/types"; import path from "node:path"; -import { beforeEach, describe, it } from "node:test"; +import { before, beforeEach, describe, it } from "node:test"; import util from "node:util"; -import { createHardhatRuntimeEnvironment } from "@ignored/hardhat-vnext/hre"; import { HardhatError } from "@ignored/hardhat-vnext-errors"; -import hardhatEthersPlugin from "@ignored/hardhat-vnext-ethers"; import { assertThrowsHardhatError, useFixtureProject, @@ -21,6 +19,7 @@ import { runSuccessfulAsserts, runFailedAsserts, mineSuccessfulTransaction, + initEnvironment, } from "../../helpers/helpers.js"; addChaiMatchers(); @@ -44,16 +43,13 @@ describe("INTEGRATION: Reverted with custom error", () => { let provider: EthereumProvider; let ethers: HardhatEthers; - beforeEach(async () => { - const hre = await createHardhatRuntimeEnvironment({ - paths: { - artifacts: `${process.cwd()}/artifacts`, - }, - plugins: [hardhatEthersPlugin], - }); - - ({ ethers, provider } = await hre.network.connect()); + before(async () => { + ({ ethers, provider } = await initEnvironment( + "reverted-with-custom-error", + )); + }); + beforeEach(async () => { const Matchers = await ethers.getContractFactory<[], MatchersContract>( "Matchers", ); diff --git a/v-next/hardhat-chai-matchers/test/matchers/reverted/revertedWithPanic.ts b/v-next/hardhat-chai-matchers/test/matchers/reverted/revertedWithPanic.ts index 1576f2e4e5..b8833c6e15 100644 --- a/v-next/hardhat-chai-matchers/test/matchers/reverted/revertedWithPanic.ts +++ b/v-next/hardhat-chai-matchers/test/matchers/reverted/revertedWithPanic.ts @@ -3,12 +3,10 @@ import type { EthereumProvider } from "@ignored/hardhat-vnext/types/providers"; import type { HardhatEthers } from "@ignored/hardhat-vnext-ethers/types"; import path from "node:path"; -import { beforeEach, describe, it } from "node:test"; +import { before, beforeEach, describe, it } from "node:test"; import util from "node:util"; -import { createHardhatRuntimeEnvironment } from "@ignored/hardhat-vnext/hre"; import { HardhatError } from "@ignored/hardhat-vnext-errors"; -import hardhatEthersPlugin from "@ignored/hardhat-vnext-ethers"; import { assertThrowsHardhatError, useFixtureProject, @@ -21,6 +19,7 @@ import { runSuccessfulAsserts, runFailedAsserts, mineSuccessfulTransaction, + initEnvironment, } from "../../helpers/helpers.js"; addChaiMatchers(); @@ -44,16 +43,11 @@ describe("INTEGRATION: Reverted with panic", () => { let provider: EthereumProvider; let ethers: HardhatEthers; - beforeEach(async () => { - const hre = await createHardhatRuntimeEnvironment({ - paths: { - artifacts: `${process.cwd()}/artifacts`, - }, - plugins: [hardhatEthersPlugin], - }); - - ({ ethers, provider } = await hre.network.connect()); + before(async () => { + ({ ethers, provider } = await initEnvironment("reverted-with-panic")); + }); + beforeEach(async () => { const Matchers = await ethers.getContractFactory<[], MatchersContract>( "Matchers", ); diff --git a/v-next/hardhat-chai-matchers/test/matchers/reverted/revertedWithoutReason.ts b/v-next/hardhat-chai-matchers/test/matchers/reverted/revertedWithoutReason.ts index 26437fd271..5c68546e58 100644 --- a/v-next/hardhat-chai-matchers/test/matchers/reverted/revertedWithoutReason.ts +++ b/v-next/hardhat-chai-matchers/test/matchers/reverted/revertedWithoutReason.ts @@ -2,11 +2,9 @@ import type { MatchersContract } from "../../helpers/contracts.js"; import type { HardhatEthers } from "@ignored/hardhat-vnext-ethers/types"; import path from "node:path"; -import { beforeEach, describe, it } from "node:test"; +import { before, beforeEach, describe, it } from "node:test"; import util from "node:util"; -import { createHardhatRuntimeEnvironment } from "@ignored/hardhat-vnext/hre"; -import hardhatEthersPlugin from "@ignored/hardhat-vnext-ethers"; import { useFixtureProject } from "@nomicfoundation/hardhat-test-utils"; import { AssertionError, expect } from "chai"; @@ -14,6 +12,7 @@ import { addChaiMatchers } from "../../../src/internal/add-chai-matchers.js"; import { runSuccessfulAsserts, runFailedAsserts, + initEnvironment, } from "../../helpers/helpers.js"; addChaiMatchers(); @@ -36,16 +35,11 @@ describe("INTEGRATION: Reverted without reason", () => { let ethers: HardhatEthers; - beforeEach(async () => { - const hre = await createHardhatRuntimeEnvironment({ - paths: { - artifacts: `${process.cwd()}/artifacts`, - }, - plugins: [hardhatEthersPlugin], - }); - - ({ ethers } = await hre.network.connect()); + before(async () => { + ({ ethers } = await initEnvironment("reverted-without-reason")); + }); + beforeEach(async () => { const Matchers = await ethers.getContractFactory<[], MatchersContract>( "Matchers", ); From 9469669a10ed71f2d1b693f7ad579c15a7148b7a Mon Sep 17 00:00:00 2001 From: ChrisD <18092467+ChristopherDedominici@users.noreply.github.com> Date: Fri, 22 Nov 2024 11:39:04 +0100 Subject: [PATCH 30/61] increase tests timeout so the compiler can be downloaded if needed --- .../test/matchers/changeEtherBalance.ts | 2 +- .../test/matchers/changeEtherBalances.ts | 2 +- .../test/matchers/changeTokenBalance.ts | 1569 +++++++++-------- .../test/matchers/events.ts | 2 +- .../test/matchers/reverted/reverted.ts | 2 +- .../test/matchers/reverted/revertedWith.ts | 2 +- .../reverted/revertedWithCustomError.ts | 2 +- .../matchers/reverted/revertedWithPanic.ts | 2 +- .../reverted/revertedWithoutReason.ts | 2 +- 9 files changed, 808 insertions(+), 777 deletions(-) diff --git a/v-next/hardhat-chai-matchers/test/matchers/changeEtherBalance.ts b/v-next/hardhat-chai-matchers/test/matchers/changeEtherBalance.ts index 38048987c0..c885a0ac51 100644 --- a/v-next/hardhat-chai-matchers/test/matchers/changeEtherBalance.ts +++ b/v-next/hardhat-chai-matchers/test/matchers/changeEtherBalance.ts @@ -22,7 +22,7 @@ import { initEnvironment } from "../helpers/helpers.js"; addChaiMatchers(); -describe("INTEGRATION: changeEtherBalance matcher", () => { +describe("INTEGRATION: changeEtherBalance matcher", { timeout: 60000 }, () => { describe("with the in-process hardhat network", () => { useFixtureProject("hardhat-project"); runTests(); diff --git a/v-next/hardhat-chai-matchers/test/matchers/changeEtherBalances.ts b/v-next/hardhat-chai-matchers/test/matchers/changeEtherBalances.ts index 02175029ef..b3f16e0afc 100644 --- a/v-next/hardhat-chai-matchers/test/matchers/changeEtherBalances.ts +++ b/v-next/hardhat-chai-matchers/test/matchers/changeEtherBalances.ts @@ -22,7 +22,7 @@ import { initEnvironment } from "../helpers/helpers.js"; addChaiMatchers(); -describe("INTEGRATION: changeEtherBalances matcher", () => { +describe("INTEGRATION: changeEtherBalances matcher", { timeout: 60000 }, () => { describe("with the in-process hardhat network", () => { useFixtureProject("hardhat-project"); runTests(); diff --git a/v-next/hardhat-chai-matchers/test/matchers/changeTokenBalance.ts b/v-next/hardhat-chai-matchers/test/matchers/changeTokenBalance.ts index 273bc385f9..2f17784040 100644 --- a/v-next/hardhat-chai-matchers/test/matchers/changeTokenBalance.ts +++ b/v-next/hardhat-chai-matchers/test/matchers/changeTokenBalance.ts @@ -33,918 +33,949 @@ import { initEnvironment } from "../helpers/helpers.js"; addChaiMatchers(); -describe("INTEGRATION: changeTokenBalance and changeTokenBalances matchers", () => { - describe("with the in-process hardhat network", () => { - useFixtureProject("hardhat-project"); - runTests(); - }); - - // TODO: when V3 node is ready, add this functionality - // describe("connected to a hardhat node", ()=>{ - // useEnvironmentWithNode("hardhat-project"); - // runTests(); - // }); - - afterEach(() => { - clearTokenDescriptionsCache(); - }); - - function runTests() { - let sender: HardhatEthersSigner; - let receiver: HardhatEthersSigner; - let mockToken: Token; - let matchers: MatchersContract; - let otherContract: AnotherContract; - let contract: EventsContract; - - let provider: EthereumProvider; - let ethers: HardhatEthers; - - before(async () => { - ({ ethers, provider } = await initEnvironment("change-token-balance")); +describe( + "INTEGRATION: changeTokenBalance and changeTokenBalances matchers", + { timeout: 60000 }, + () => { + describe("with the in-process hardhat network", () => { + useFixtureProject("hardhat-project"); + runTests(); }); - beforeEach(async () => { - const wallets = await ethers.getSigners(); - sender = wallets[0]; - receiver = wallets[1]; + // TODO: when V3 node is ready, add this functionality + // describe("connected to a hardhat node", ()=>{ + // useEnvironmentWithNode("hardhat-project"); + // runTests(); + // }); - const MockToken = await ethers.getContractFactory<[], Token>("MockToken"); - mockToken = await MockToken.deploy(); - - const Matchers = await ethers.getContractFactory<[], MatchersContract>( - "Matchers", - ); - matchers = await Matchers.deploy(); - - otherContract = await ethers.deployContract("AnotherContract"); - contract = await ( - await ethers.getContractFactory<[string], EventsContract>("Events") - ).deploy(await otherContract.getAddress()); + afterEach(() => { + clearTokenDescriptionsCache(); }); - describe("transaction that doesn't move tokens", () => { - it("with a promise of a TxResponse", async () => { - const transactionResponse = sender.sendTransaction({ - to: receiver.address, - }); + function runTests() { + let sender: HardhatEthersSigner; + let receiver: HardhatEthersSigner; + let mockToken: Token; + let matchers: MatchersContract; + let otherContract: AnotherContract; + let contract: EventsContract; - await runAllAsserts( - provider, - transactionResponse, - mockToken, - [sender, receiver], - [0, 0], - ); - }); + let provider: EthereumProvider; + let ethers: HardhatEthers; - it("with a TxResponse", async () => { - await runAllAsserts( - provider, - await sender.sendTransaction({ - to: receiver.address, - }), - mockToken, - [sender, receiver], - [0, 0], - ); + before(async () => { + ({ ethers, provider } = await initEnvironment("change-token-balance")); }); - it("with a function that returns a promise of a TxResponse", async () => { - await runAllAsserts( - provider, - () => sender.sendTransaction({ to: receiver.address }), - mockToken, - [sender, receiver], - [0, 0], - ); - }); + beforeEach(async () => { + const wallets = await ethers.getSigners(); + sender = wallets[0]; + receiver = wallets[1]; - it("with a function that returns a TxResponse", async () => { - const txResponse = await sender.sendTransaction({ - to: receiver.address, - }); - await runAllAsserts( - provider, - () => txResponse, - mockToken, - [sender, receiver], - [0, 0], + const MockToken = await ethers.getContractFactory<[], Token>( + "MockToken", ); - }); + mockToken = await MockToken.deploy(); - it("accepts addresses", async () => { - await expect( - sender.sendTransaction({ to: receiver.address }), - ).to.changeTokenBalance(provider, mockToken, sender.address, 0); - - await expect(() => - sender.sendTransaction({ to: receiver.address }), - ).to.changeTokenBalances( - provider, - mockToken, - [sender.address, receiver.address], - [0, 0], + const Matchers = await ethers.getContractFactory<[], MatchersContract>( + "Matchers", ); + matchers = await Matchers.deploy(); - // mixing signers and addresses - await expect(() => - sender.sendTransaction({ to: receiver.address }), - ).to.changeTokenBalances( - provider, - mockToken, - [sender.address, receiver], - [0, 0], - ); + otherContract = await ethers.deployContract("AnotherContract"); + contract = await ( + await ethers.getContractFactory<[string], EventsContract>("Events") + ).deploy(await otherContract.getAddress()); }); - it("negated", async () => { - await expect( - sender.sendTransaction({ to: receiver.address }), - ).to.not.changeTokenBalance(provider, mockToken, sender, 1); - - await expect( - sender.sendTransaction({ to: receiver.address }), - ).to.not.changeTokenBalance( - provider, - mockToken, - sender, - (diff: bigint) => diff > 0n, - ); - - await expect(() => - sender.sendTransaction({ to: receiver.address }), - ).to.not.changeTokenBalances( - provider, - mockToken, - [sender, receiver], - [0, 1], - ); - - await expect(() => - sender.sendTransaction({ to: receiver.address }), - ).to.not.changeTokenBalances( - provider, - mockToken, - [sender, receiver], - [1, 0], - ); - - await expect(() => - sender.sendTransaction({ to: receiver.address }), - ).to.not.changeTokenBalances( - provider, - mockToken, - [sender, receiver], - [1, 1], - ); - }); + describe("transaction that doesn't move tokens", () => { + it("with a promise of a TxResponse", async () => { + const transactionResponse = sender.sendTransaction({ + to: receiver.address, + }); - describe("assertion failures", () => { - it("doesn't change balance as expected", async () => { - await expect( - expect( - sender.sendTransaction({ to: receiver.address }), - ).to.changeTokenBalance(provider, mockToken, sender, 1), - ).to.be.rejectedWith( - AssertionError, - /Expected the balance of MCK tokens for "0x\w{40}" to change by 1, but it changed by 0/, + await runAllAsserts( + provider, + transactionResponse, + mockToken, + [sender, receiver], + [0, 0], ); }); - it("change balance doesn't satisfies the predicate", async () => { - await expect( - expect( - sender.sendTransaction({ to: receiver.address }), - ).to.changeTokenBalance( - provider, - mockToken, - sender, - (diff: bigint) => diff > 0n, - ), - ).to.be.rejectedWith( - AssertionError, - /Expected the balance of MCK tokens for "0x\w{40}" to satisfy the predicate, but it didn't \(token balance change: 0 wei\)/, + it("with a TxResponse", async () => { + await runAllAsserts( + provider, + await sender.sendTransaction({ + to: receiver.address, + }), + mockToken, + [sender, receiver], + [0, 0], ); }); - it("changes balance in the way it was not expected", async () => { - await expect( - expect( - sender.sendTransaction({ to: receiver.address }), - ).to.not.changeTokenBalance(provider, mockToken, sender, 0), - ).to.be.rejectedWith( - AssertionError, - /Expected the balance of MCK tokens for "0x\w{40}" NOT to change by 0, but it did/, + it("with a function that returns a promise of a TxResponse", async () => { + await runAllAsserts( + provider, + () => sender.sendTransaction({ to: receiver.address }), + mockToken, + [sender, receiver], + [0, 0], ); }); - it("changes balance doesn't have to satisfy the predicate, but it did", async () => { - await expect( - expect( - sender.sendTransaction({ to: receiver.address }), - ).to.not.changeTokenBalance( - provider, - mockToken, - sender, - (diff: bigint) => diff < 1n, - ), - ).to.be.rejectedWith( - AssertionError, - /Expected the balance of MCK tokens for "0x\w{40}" to NOT satisfy the predicate, but it did \(token balance change: 0 wei\)/, + it("with a function that returns a TxResponse", async () => { + const txResponse = await sender.sendTransaction({ + to: receiver.address, + }); + await runAllAsserts( + provider, + () => txResponse, + mockToken, + [sender, receiver], + [0, 0], ); }); - it("the first account doesn't change its balance as expected", async () => { + it("accepts addresses", async () => { await expect( - expect( - sender.sendTransaction({ to: receiver.address }), - ).to.changeTokenBalances( - provider, - mockToken, - [sender, receiver], - [1, 0], - ), - ).to.be.rejectedWith(AssertionError); - }); + sender.sendTransaction({ to: receiver.address }), + ).to.changeTokenBalance(provider, mockToken, sender.address, 0); - it("the second account doesn't change its balance as expected", async () => { - await expect( - expect( - sender.sendTransaction({ to: receiver.address }), - ).to.changeTokenBalances( - provider, - mockToken, - [sender, receiver], - [0, 1], - ), - ).to.be.rejectedWith(AssertionError); - }); + await expect(() => + sender.sendTransaction({ to: receiver.address }), + ).to.changeTokenBalances( + provider, + mockToken, + [sender.address, receiver.address], + [0, 0], + ); - it("neither account changes its balance as expected", async () => { - await expect( - expect( - sender.sendTransaction({ to: receiver.address }), - ).to.changeTokenBalances( - provider, - mockToken, - [sender, receiver], - [1, 1], - ), - ).to.be.rejectedWith(AssertionError); + // mixing signers and addresses + await expect(() => + sender.sendTransaction({ to: receiver.address }), + ).to.changeTokenBalances( + provider, + mockToken, + [sender.address, receiver], + [0, 0], + ); }); - it("accounts change their balance in the way it was not expected", async () => { + it("negated", async () => { await expect( - expect( - sender.sendTransaction({ to: receiver.address }), - ).to.not.changeTokenBalances( - provider, - mockToken, - [sender, receiver], - [0, 0], - ), - ).to.be.rejectedWith(AssertionError); - }); - }); - }); + sender.sendTransaction({ to: receiver.address }), + ).to.not.changeTokenBalance(provider, mockToken, sender, 1); - describe("Transaction Callback", () => { - it("should pass when given predicate", async () => { - await expect(() => - mockToken.transfer(receiver.address, 75), - ).to.changeTokenBalances( - provider, - mockToken, - [sender, receiver], - ([senderDiff, receiverDiff]: bigint[]) => - senderDiff === -75n && receiverDiff === 75n, - ); - }); + await expect( + sender.sendTransaction({ to: receiver.address }), + ).to.not.changeTokenBalance( + provider, + mockToken, + sender, + (diff: bigint) => diff > 0n, + ); - it("should fail when the predicate returns false", async () => { - await expect( - expect( - mockToken.transfer(receiver.address, 75), - ).to.changeTokenBalances( + await expect(() => + sender.sendTransaction({ to: receiver.address }), + ).to.not.changeTokenBalances( provider, mockToken, [sender, receiver], - ([senderDiff, receiverDiff]: bigint[]) => - senderDiff === -74n && receiverDiff === 75n, - ), - ).to.be.eventually.rejectedWith( - AssertionError, - "Expected the balance changes of MCK to satisfy the predicate, but they didn't", - ); - }); + [0, 1], + ); - it("should fail when the predicate returns true and the assertion is negated", async () => { - await expect( - expect( - mockToken.transfer(receiver.address, 75), + await expect(() => + sender.sendTransaction({ to: receiver.address }), ).to.not.changeTokenBalances( provider, mockToken, [sender, receiver], - ([senderDiff, receiverDiff]: bigint[]) => - senderDiff === -75n && receiverDiff === 75n, - ), - ).to.be.eventually.rejectedWith( - AssertionError, - "Expected the balance changes of MCK to NOT satisfy the predicate, but they did", - ); - }); - }); - - describe("transaction that transfers some tokens", () => { - it("with a promise of a TxResponse", async () => { - await runAllAsserts( - provider, - mockToken.transfer(receiver.address, 50), - mockToken, - [sender, receiver], - [-50, 50], - ); - - await runAllAsserts( - provider, - mockToken.transfer(receiver.address, 100), - mockToken, - [sender, receiver], - [-100, 100], - ); - }); - - it("with a TxResponse", async () => { - await runAllAsserts( - provider, - await mockToken.transfer(receiver.address, 150), - mockToken, - [sender, receiver], - [-150, 150], - ); - }); - - it("with a function that returns a promise of a TxResponse", async () => { - await runAllAsserts( - provider, - () => mockToken.transfer(receiver.address, 200), - mockToken, - [sender, receiver], - [-200, 200], - ); - }); - - it("with a function that returns a TxResponse", async () => { - const txResponse = await mockToken.transfer(receiver.address, 300); - await runAllAsserts( - provider, - () => txResponse, - mockToken, - [sender, receiver], - [-300, 300], - ); - }); + [1, 0], + ); - it("changeTokenBalance shouldn't run the transaction twice", async () => { - const receiverBalanceBefore = await mockToken.balanceOf( - receiver.address, - ); + await expect(() => + sender.sendTransaction({ to: receiver.address }), + ).to.not.changeTokenBalances( + provider, + mockToken, + [sender, receiver], + [1, 1], + ); + }); - await expect(() => - mockToken.transfer(receiver.address, 50), - ).to.changeTokenBalance(provider, mockToken, receiver, 50); + describe("assertion failures", () => { + it("doesn't change balance as expected", async () => { + await expect( + expect( + sender.sendTransaction({ to: receiver.address }), + ).to.changeTokenBalance(provider, mockToken, sender, 1), + ).to.be.rejectedWith( + AssertionError, + /Expected the balance of MCK tokens for "0x\w{40}" to change by 1, but it changed by 0/, + ); + }); - const receiverBalanceChange = - (await mockToken.balanceOf(receiver.address)) - receiverBalanceBefore; + it("change balance doesn't satisfies the predicate", async () => { + await expect( + expect( + sender.sendTransaction({ to: receiver.address }), + ).to.changeTokenBalance( + provider, + mockToken, + sender, + (diff: bigint) => diff > 0n, + ), + ).to.be.rejectedWith( + AssertionError, + /Expected the balance of MCK tokens for "0x\w{40}" to satisfy the predicate, but it didn't \(token balance change: 0 wei\)/, + ); + }); - expect(receiverBalanceChange).to.equal(50n); - }); + it("changes balance in the way it was not expected", async () => { + await expect( + expect( + sender.sendTransaction({ to: receiver.address }), + ).to.not.changeTokenBalance(provider, mockToken, sender, 0), + ).to.be.rejectedWith( + AssertionError, + /Expected the balance of MCK tokens for "0x\w{40}" NOT to change by 0, but it did/, + ); + }); - it("changeTokenBalances shouldn't run the transaction twice", async () => { - const receiverBalanceBefore = await mockToken.balanceOf( - receiver.address, - ); + it("changes balance doesn't have to satisfy the predicate, but it did", async () => { + await expect( + expect( + sender.sendTransaction({ to: receiver.address }), + ).to.not.changeTokenBalance( + provider, + mockToken, + sender, + (diff: bigint) => diff < 1n, + ), + ).to.be.rejectedWith( + AssertionError, + /Expected the balance of MCK tokens for "0x\w{40}" to NOT satisfy the predicate, but it did \(token balance change: 0 wei\)/, + ); + }); - await expect(() => - mockToken.transfer(receiver.address, 50), - ).to.changeTokenBalances( - provider, - mockToken, - [sender, receiver], - [-50, 50], - ); + it("the first account doesn't change its balance as expected", async () => { + await expect( + expect( + sender.sendTransaction({ to: receiver.address }), + ).to.changeTokenBalances( + provider, + mockToken, + [sender, receiver], + [1, 0], + ), + ).to.be.rejectedWith(AssertionError); + }); - const receiverBalanceChange = - (await mockToken.balanceOf(receiver.address)) - receiverBalanceBefore; + it("the second account doesn't change its balance as expected", async () => { + await expect( + expect( + sender.sendTransaction({ to: receiver.address }), + ).to.changeTokenBalances( + provider, + mockToken, + [sender, receiver], + [0, 1], + ), + ).to.be.rejectedWith(AssertionError); + }); - expect(receiverBalanceChange).to.equal(50n); - }); + it("neither account changes its balance as expected", async () => { + await expect( + expect( + sender.sendTransaction({ to: receiver.address }), + ).to.changeTokenBalances( + provider, + mockToken, + [sender, receiver], + [1, 1], + ), + ).to.be.rejectedWith(AssertionError); + }); - it("negated", async () => { - await expect( - mockToken.transfer(receiver.address, 50), - ).to.not.changeTokenBalance(provider, mockToken, sender, 0); - await expect( - mockToken.transfer(receiver.address, 50), - ).to.not.changeTokenBalance(provider, mockToken, sender, 1); - - await expect( - mockToken.transfer(receiver.address, 50), - ).to.not.changeTokenBalances( - provider, - mockToken, - [sender, receiver], - [0, 0], - ); - await expect( - mockToken.transfer(receiver.address, 50), - ).to.not.changeTokenBalances( - provider, - mockToken, - [sender, receiver], - [-50, 0], - ); - await expect( - mockToken.transfer(receiver.address, 50), - ).to.not.changeTokenBalances( - provider, - mockToken, - [sender, receiver], - [0, 50], - ); + it("accounts change their balance in the way it was not expected", async () => { + await expect( + expect( + sender.sendTransaction({ to: receiver.address }), + ).to.not.changeTokenBalances( + provider, + mockToken, + [sender, receiver], + [0, 0], + ), + ).to.be.rejectedWith(AssertionError); + }); + }); }); - describe("assertion failures", () => { - it("doesn't change balance as expected", async () => { - await expect( - expect( - mockToken.transfer(receiver.address, 50), - ).to.changeTokenBalance(provider, mockToken, receiver, 500), - ).to.be.rejectedWith( - AssertionError, - /Expected the balance of MCK tokens for "0x\w{40}" to change by 500, but it changed by 50/, + describe("Transaction Callback", () => { + it("should pass when given predicate", async () => { + await expect(() => + mockToken.transfer(receiver.address, 75), + ).to.changeTokenBalances( + provider, + mockToken, + [sender, receiver], + ([senderDiff, receiverDiff]: bigint[]) => + senderDiff === -75n && receiverDiff === 75n, ); }); - it("change balance doesn't satisfies the predicate", async () => { + it("should fail when the predicate returns false", async () => { await expect( expect( - mockToken.transfer(receiver.address, 50), - ).to.changeTokenBalance( + mockToken.transfer(receiver.address, 75), + ).to.changeTokenBalances( provider, mockToken, - receiver, - (diff: bigint) => diff === 500n, + [sender, receiver], + ([senderDiff, receiverDiff]: bigint[]) => + senderDiff === -74n && receiverDiff === 75n, ), - ).to.be.rejectedWith( + ).to.be.eventually.rejectedWith( AssertionError, - /Expected the balance of MCK tokens for "0x\w{40}" to satisfy the predicate, but it didn't \(token balance change: 50 wei\)/, + "Expected the balance changes of MCK to satisfy the predicate, but they didn't", ); }); - it("changes balance in the way it was not expected", async () => { + it("should fail when the predicate returns true and the assertion is negated", async () => { await expect( expect( - mockToken.transfer(receiver.address, 50), - ).to.not.changeTokenBalance(provider, mockToken, receiver, 50), - ).to.be.rejectedWith( - AssertionError, - /Expected the balance of MCK tokens for "0x\w{40}" NOT to change by 50, but it did/, - ); - }); - - it("changes balance doesn't have to satisfy the predicate, but it did", async () => { - await expect( - expect( - mockToken.transfer(receiver.address, 50), - ).to.not.changeTokenBalance( + mockToken.transfer(receiver.address, 75), + ).to.not.changeTokenBalances( provider, mockToken, - receiver, - (diff: bigint) => diff === 50n, + [sender, receiver], + ([senderDiff, receiverDiff]: bigint[]) => + senderDiff === -75n && receiverDiff === 75n, ), - ).to.be.rejectedWith( + ).to.be.eventually.rejectedWith( AssertionError, - /Expected the balance of MCK tokens for "0x\w{40}" to NOT satisfy the predicate, but it did \(token balance change: 50 wei\)/, + "Expected the balance changes of MCK to NOT satisfy the predicate, but they did", ); }); + }); - it("the first account doesn't change its balance as expected", async () => { - await expect( - expect( - mockToken.transfer(receiver.address, 50), - ).to.changeTokenBalances( - provider, - mockToken, - [sender, receiver], - [-100, 50], - ), - ).to.be.rejectedWith(AssertionError); + describe("transaction that transfers some tokens", () => { + it("with a promise of a TxResponse", async () => { + await runAllAsserts( + provider, + mockToken.transfer(receiver.address, 50), + mockToken, + [sender, receiver], + [-50, 50], + ); + + await runAllAsserts( + provider, + mockToken.transfer(receiver.address, 100), + mockToken, + [sender, receiver], + [-100, 100], + ); }); - it("the second account doesn't change its balance as expected", async () => { - await expect( - expect( - mockToken.transfer(receiver.address, 50), - ).to.changeTokenBalances( - provider, - mockToken, - [sender, receiver], - [-50, 100], - ), - ).to.be.rejectedWith(AssertionError); + it("with a TxResponse", async () => { + await runAllAsserts( + provider, + await mockToken.transfer(receiver.address, 150), + mockToken, + [sender, receiver], + [-150, 150], + ); }); - it("neither account changes its balance as expected", async () => { - await expect( - expect( - mockToken.transfer(receiver.address, 50), - ).to.changeTokenBalances( - provider, - mockToken, - [sender, receiver], - [0, 0], - ), - ).to.be.rejectedWith(AssertionError); + it("with a function that returns a promise of a TxResponse", async () => { + await runAllAsserts( + provider, + () => mockToken.transfer(receiver.address, 200), + mockToken, + [sender, receiver], + [-200, 200], + ); }); - it("accounts change their balance in the way it was not expected", async () => { - await expect( - expect( - mockToken.transfer(receiver.address, 50), - ).to.not.changeTokenBalances( - provider, - mockToken, - [sender, receiver], - [-50, 50], - ), - ).to.be.rejectedWith(AssertionError); + it("with a function that returns a TxResponse", async () => { + const txResponse = await mockToken.transfer(receiver.address, 300); + await runAllAsserts( + provider, + () => txResponse, + mockToken, + [sender, receiver], + [-300, 300], + ); }); - it("uses the token name if the contract doesn't have a symbol", async () => { - const TokenWithOnlyName = await ethers.getContractFactory<[], Token>( - "TokenWithOnlyName", + it("changeTokenBalance shouldn't run the transaction twice", async () => { + const receiverBalanceBefore = await mockToken.balanceOf( + receiver.address, ); - const tokenWithOnlyName = await TokenWithOnlyName.deploy(); + await expect(() => + mockToken.transfer(receiver.address, 50), + ).to.changeTokenBalance(provider, mockToken, receiver, 50); - await expect( - expect( - tokenWithOnlyName.transfer(receiver.address, 50), - ).to.changeTokenBalance(provider, tokenWithOnlyName, receiver, 500), - ).to.be.rejectedWith( - AssertionError, - /Expected the balance of MockToken tokens for "0x\w{40}" to change by 500, but it changed by 50/, + const receiverBalanceChange = + (await mockToken.balanceOf(receiver.address)) - + receiverBalanceBefore; + + expect(receiverBalanceChange).to.equal(50n); + }); + + it("changeTokenBalances shouldn't run the transaction twice", async () => { + const receiverBalanceBefore = await mockToken.balanceOf( + receiver.address, ); - await expect( - expect( - tokenWithOnlyName.transfer(receiver.address, 50), - ).to.not.changeTokenBalance( - provider, - tokenWithOnlyName, - receiver, - 50, - ), - ).to.be.rejectedWith( - AssertionError, - /Expected the balance of MockToken tokens for "0x\w{40}" NOT to change by 50, but it did/, + await expect(() => + mockToken.transfer(receiver.address, 50), + ).to.changeTokenBalances( + provider, + mockToken, + [sender, receiver], + [-50, 50], ); - }); - it("uses the contract address if the contract doesn't have name or symbol", async () => { - const TokenWithoutNameNorSymbol = await ethers.getContractFactory< - [], - Token - >("TokenWithoutNameNorSymbol"); + const receiverBalanceChange = + (await mockToken.balanceOf(receiver.address)) - + receiverBalanceBefore; - const tokenWithoutNameNorSymbol = - await TokenWithoutNameNorSymbol.deploy(); + expect(receiverBalanceChange).to.equal(50n); + }); + it("negated", async () => { await expect( - expect( - tokenWithoutNameNorSymbol.transfer(receiver.address, 50), - ).to.changeTokenBalance( - provider, - tokenWithoutNameNorSymbol, - receiver, - 500, - ), - ).to.be.rejectedWith( - AssertionError, - /Expected the balance of tokens for "0x\w{40}" to change by 500, but it changed by 50/, - ); + mockToken.transfer(receiver.address, 50), + ).to.not.changeTokenBalance(provider, mockToken, sender, 0); + await expect( + mockToken.transfer(receiver.address, 50), + ).to.not.changeTokenBalance(provider, mockToken, sender, 1); await expect( - expect( - tokenWithoutNameNorSymbol.transfer(receiver.address, 50), - ).to.not.changeTokenBalance( - provider, - tokenWithoutNameNorSymbol, - receiver, - 50, - ), - ).to.be.rejectedWith( - AssertionError, - /Expected the balance of tokens for "0x\w{40}" NOT to change by 50, but it did/, + mockToken.transfer(receiver.address, 50), + ).to.not.changeTokenBalances( + provider, + mockToken, + [sender, receiver], + [0, 0], ); - }); - - it("changeTokenBalance: Should throw if chained to another non-chainable method", () => { - assertThrowsHardhatError( - () => - expect(contract.emitWithoutArgs()) - .to.emit(contract, "WithoutArgs") - .and.to.changeTokenBalance(provider, mockToken, receiver, 0), - HardhatError.ERRORS.CHAI_MATCHERS.MATCHER_CANNOT_BE_CHAINED_AFTER, - { - matcher: "changeTokenBalance", - previousMatcher: "emit", - }, + await expect( + mockToken.transfer(receiver.address, 50), + ).to.not.changeTokenBalances( + provider, + mockToken, + [sender, receiver], + [-50, 0], ); - }); - - it("changeTokenBalances: should throw if chained to another non-chainable method", () => { - assertThrowsHardhatError( - () => - expect(matchers.revertWithCustomErrorWithInt(1)) - .to.be.reverted(ethers) - .and.to.changeTokenBalances( - provider, - mockToken, - [sender, receiver], - [-50, 100], - ), - HardhatError.ERRORS.CHAI_MATCHERS.MATCHER_CANNOT_BE_CHAINED_AFTER, - { - matcher: "changeTokenBalances", - previousMatcher: "reverted", - }, + await expect( + mockToken.transfer(receiver.address, 50), + ).to.not.changeTokenBalances( + provider, + mockToken, + [sender, receiver], + [0, 50], ); }); - }); - }); - describe("validation errors", () => { - describe(CHANGE_TOKEN_BALANCE_MATCHER, () => { - it("token is not specified", async () => { - assertThrowsHardhatError( - () => + describe("assertion failures", () => { + it("doesn't change balance as expected", async () => { + await expect( expect( mockToken.transfer(receiver.address, 50), - // @ts-expect-error -- force error scenario: token should be specified - ).to.changeTokenBalance(provider, receiver, 50), - HardhatError.ERRORS.CHAI_MATCHERS - .FIRST_ARGUMENT_MUST_BE_A_CONTRACT_INSTANCE, - { - method: CHANGE_TOKEN_BALANCE_MATCHER, - }, - ); + ).to.changeTokenBalance(provider, mockToken, receiver, 500), + ).to.be.rejectedWith( + AssertionError, + /Expected the balance of MCK tokens for "0x\w{40}" to change by 500, but it changed by 50/, + ); + }); + + it("change balance doesn't satisfies the predicate", async () => { + await expect( + expect( + mockToken.transfer(receiver.address, 50), + ).to.changeTokenBalance( + provider, + mockToken, + receiver, + (diff: bigint) => diff === 500n, + ), + ).to.be.rejectedWith( + AssertionError, + /Expected the balance of MCK tokens for "0x\w{40}" to satisfy the predicate, but it didn't \(token balance change: 50 wei\)/, + ); + }); - // if an address is used (receiver.address) - assertThrowsHardhatError( - () => + it("changes balance in the way it was not expected", async () => { + await expect( expect( mockToken.transfer(receiver.address, 50), - // @ts-expect-error -- force error scenario: token should be specified - ).to.changeTokenBalance(provider, receiver.address, 50), - HardhatError.ERRORS.CHAI_MATCHERS - .FIRST_ARGUMENT_MUST_BE_A_CONTRACT_INSTANCE, - { - method: CHANGE_TOKEN_BALANCE_MATCHER, - }, - ); - }); + ).to.not.changeTokenBalance(provider, mockToken, receiver, 50), + ).to.be.rejectedWith( + AssertionError, + /Expected the balance of MCK tokens for "0x\w{40}" NOT to change by 50, but it did/, + ); + }); - it("contract is not a token", async () => { - const NotAToken = await ethers.getContractFactory("NotAToken"); - const notAToken = await NotAToken.deploy(); + it("changes balance doesn't have to satisfy the predicate, but it did", async () => { + await expect( + expect( + mockToken.transfer(receiver.address, 50), + ).to.not.changeTokenBalance( + provider, + mockToken, + receiver, + (diff: bigint) => diff === 50n, + ), + ).to.be.rejectedWith( + AssertionError, + /Expected the balance of MCK tokens for "0x\w{40}" to NOT satisfy the predicate, but it did \(token balance change: 50 wei\)/, + ); + }); - expect(() => - expect( - mockToken.transfer(receiver.address, 50), - ).to.changeTokenBalance(provider, notAToken, sender, -50), - ).to.throw( - Error, - "The given contract instance is not an ERC20 token", - ); - }); + it("the first account doesn't change its balance as expected", async () => { + await expect( + expect( + mockToken.transfer(receiver.address, 50), + ).to.changeTokenBalances( + provider, + mockToken, + [sender, receiver], + [-100, 50], + ), + ).to.be.rejectedWith(AssertionError); + }); - it("tx is not the only one in the block", async () => { - await provider.request({ - method: "evm_setAutomine", - params: [false], + it("the second account doesn't change its balance as expected", async () => { + await expect( + expect( + mockToken.transfer(receiver.address, 50), + ).to.changeTokenBalances( + provider, + mockToken, + [sender, receiver], + [-50, 100], + ), + ).to.be.rejectedWith(AssertionError); }); - // we set a gas limit to avoid using the whole block gas limit - await sender.sendTransaction({ - to: receiver.address, - gasLimit: 30_000, + it("neither account changes its balance as expected", async () => { + await expect( + expect( + mockToken.transfer(receiver.address, 50), + ).to.changeTokenBalances( + provider, + mockToken, + [sender, receiver], + [0, 0], + ), + ).to.be.rejectedWith(AssertionError); }); - await provider.request({ method: "evm_setAutomine", params: [true] }); + it("accounts change their balance in the way it was not expected", async () => { + await expect( + expect( + mockToken.transfer(receiver.address, 50), + ).to.not.changeTokenBalances( + provider, + mockToken, + [sender, receiver], + [-50, 50], + ), + ).to.be.rejectedWith(AssertionError); + }); - await expect( - expect( - mockToken.transfer(receiver.address, 50, { gasLimit: 100_000 }), - ).to.changeTokenBalance(provider, mockToken, sender, -50), - ).to.be.rejectedWith( - "There should be only 1 transaction in the block", - ); - }); + it("uses the token name if the contract doesn't have a symbol", async () => { + const TokenWithOnlyName = await ethers.getContractFactory< + [], + Token + >("TokenWithOnlyName"); - it("tx reverts", async () => { - await expect( - expect( - mockToken.transfer(receiver.address, 0), - ).to.changeTokenBalance(provider, mockToken, sender, -50), - ).to.be.rejectedWith( - Error, - // check that the error message includes the revert reason - "Transferred value is zero", - ); + const tokenWithOnlyName = await TokenWithOnlyName.deploy(); + + await expect( + expect( + tokenWithOnlyName.transfer(receiver.address, 50), + ).to.changeTokenBalance( + provider, + tokenWithOnlyName, + receiver, + 500, + ), + ).to.be.rejectedWith( + AssertionError, + /Expected the balance of MockToken tokens for "0x\w{40}" to change by 500, but it changed by 50/, + ); + + await expect( + expect( + tokenWithOnlyName.transfer(receiver.address, 50), + ).to.not.changeTokenBalance( + provider, + tokenWithOnlyName, + receiver, + 50, + ), + ).to.be.rejectedWith( + AssertionError, + /Expected the balance of MockToken tokens for "0x\w{40}" NOT to change by 50, but it did/, + ); + }); + + it("uses the contract address if the contract doesn't have name or symbol", async () => { + const TokenWithoutNameNorSymbol = await ethers.getContractFactory< + [], + Token + >("TokenWithoutNameNorSymbol"); + + const tokenWithoutNameNorSymbol = + await TokenWithoutNameNorSymbol.deploy(); + + await expect( + expect( + tokenWithoutNameNorSymbol.transfer(receiver.address, 50), + ).to.changeTokenBalance( + provider, + tokenWithoutNameNorSymbol, + receiver, + 500, + ), + ).to.be.rejectedWith( + AssertionError, + /Expected the balance of tokens for "0x\w{40}" to change by 500, but it changed by 50/, + ); + + await expect( + expect( + tokenWithoutNameNorSymbol.transfer(receiver.address, 50), + ).to.not.changeTokenBalance( + provider, + tokenWithoutNameNorSymbol, + receiver, + 50, + ), + ).to.be.rejectedWith( + AssertionError, + /Expected the balance of tokens for "0x\w{40}" NOT to change by 50, but it did/, + ); + }); + + it("changeTokenBalance: Should throw if chained to another non-chainable method", () => { + assertThrowsHardhatError( + () => + expect(contract.emitWithoutArgs()) + .to.emit(contract, "WithoutArgs") + .and.to.changeTokenBalance(provider, mockToken, receiver, 0), + HardhatError.ERRORS.CHAI_MATCHERS.MATCHER_CANNOT_BE_CHAINED_AFTER, + { + matcher: "changeTokenBalance", + previousMatcher: "emit", + }, + ); + }); + + it("changeTokenBalances: should throw if chained to another non-chainable method", () => { + assertThrowsHardhatError( + () => + expect(matchers.revertWithCustomErrorWithInt(1)) + .to.be.reverted(ethers) + .and.to.changeTokenBalances( + provider, + mockToken, + [sender, receiver], + [-50, 100], + ), + HardhatError.ERRORS.CHAI_MATCHERS.MATCHER_CANNOT_BE_CHAINED_AFTER, + { + matcher: "changeTokenBalances", + previousMatcher: "reverted", + }, + ); + }); }); }); - describe(CHANGE_TOKEN_BALANCES_MATCHER, () => { - it("token is not specified", async () => { - assertThrowsHardhatError( - () => + describe("validation errors", () => { + describe(CHANGE_TOKEN_BALANCE_MATCHER, () => { + it("token is not specified", async () => { + assertThrowsHardhatError( + () => + expect( + mockToken.transfer(receiver.address, 50), + // @ts-expect-error -- force error scenario: token should be specified + ).to.changeTokenBalance(provider, receiver, 50), + HardhatError.ERRORS.CHAI_MATCHERS + .FIRST_ARGUMENT_MUST_BE_A_CONTRACT_INSTANCE, + { + method: CHANGE_TOKEN_BALANCE_MATCHER, + }, + ); + + // if an address is used (receiver.address) + assertThrowsHardhatError( + () => + expect( + mockToken.transfer(receiver.address, 50), + // @ts-expect-error -- force error scenario: token should be specified + ).to.changeTokenBalance(provider, receiver.address, 50), + HardhatError.ERRORS.CHAI_MATCHERS + .FIRST_ARGUMENT_MUST_BE_A_CONTRACT_INSTANCE, + { + method: CHANGE_TOKEN_BALANCE_MATCHER, + }, + ); + }); + + it("contract is not a token", async () => { + const NotAToken = await ethers.getContractFactory("NotAToken"); + const notAToken = await NotAToken.deploy(); + + expect(() => expect( mockToken.transfer(receiver.address, 50), - // @ts-expect-error -- force error scenario: token should be specified - ).to.changeTokenBalances(provider, [sender, receiver], [-50, 50]), - HardhatError.ERRORS.CHAI_MATCHERS - .FIRST_ARGUMENT_MUST_BE_A_CONTRACT_INSTANCE, - { - method: CHANGE_TOKEN_BALANCES_MATCHER, - }, - ); - }); + ).to.changeTokenBalance(provider, notAToken, sender, -50), + ).to.throw( + Error, + "The given contract instance is not an ERC20 token", + ); + }); - it("contract is not a token", async () => { - const NotAToken = await ethers.getContractFactory("NotAToken"); - const notAToken = await NotAToken.deploy(); + it("tx is not the only one in the block", async () => { + await provider.request({ + method: "evm_setAutomine", + params: [false], + }); - expect(() => - expect( - mockToken.transfer(receiver.address, 50), - ).to.changeTokenBalances( - provider, - notAToken, - [sender, receiver], - [-50, 50], - ), - ).to.throw( - Error, - "The given contract instance is not an ERC20 token", - ); - }); - it("arrays have different length", async () => { - expect(() => - expect( - mockToken.transfer(receiver.address, 50), - ).to.changeTokenBalances(provider, mockToken, [sender], [-50, 50]), - ).to.throw( - Error, - "The number of accounts (1) is different than the number of expected balance changes (2)", - ); + // we set a gas limit to avoid using the whole block gas limit + await sender.sendTransaction({ + to: receiver.address, + gasLimit: 30_000, + }); - expect(() => - expect( - mockToken.transfer(receiver.address, 50), - ).to.changeTokenBalances( - provider, - mockToken, - [sender, receiver], - [-50], - ), - ).to.throw( - Error, - "The number of accounts (2) is different than the number of expected balance changes (1)", - ); - }); + await provider.request({ + method: "evm_setAutomine", + params: [true], + }); - it("arrays have different length, subject is a rejected promise", async () => { - expect(() => - expect(matchers.revertsWithoutReason()).to.changeTokenBalances( - provider, - mockToken, - [sender], - [-50, 50], - ), - ).to.throw( - Error, - "The number of accounts (1) is different than the number of expected balance changes (2)", - ); + await expect( + expect( + mockToken.transfer(receiver.address, 50, { gasLimit: 100_000 }), + ).to.changeTokenBalance(provider, mockToken, sender, -50), + ).to.be.rejectedWith( + "There should be only 1 transaction in the block", + ); + }); + + it("tx reverts", async () => { + await expect( + expect( + mockToken.transfer(receiver.address, 0), + ).to.changeTokenBalance(provider, mockToken, sender, -50), + ).to.be.rejectedWith( + Error, + // check that the error message includes the revert reason + "Transferred value is zero", + ); + }); }); - it("tx is not the only one in the block", async () => { - await provider.request({ - method: "evm_setAutomine", - params: [false], + describe(CHANGE_TOKEN_BALANCES_MATCHER, () => { + it("token is not specified", async () => { + assertThrowsHardhatError( + () => + expect( + mockToken.transfer(receiver.address, 50), + // @ts-expect-error -- force error scenario: token should be specified + ).to.changeTokenBalances( + provider, + [sender, receiver], + [-50, 50], + ), + HardhatError.ERRORS.CHAI_MATCHERS + .FIRST_ARGUMENT_MUST_BE_A_CONTRACT_INSTANCE, + { + method: CHANGE_TOKEN_BALANCES_MATCHER, + }, + ); }); - // we set a gas limit to avoid using the whole block gas limit - await sender.sendTransaction({ - to: receiver.address, - gasLimit: 30_000, + it("contract is not a token", async () => { + const NotAToken = await ethers.getContractFactory("NotAToken"); + const notAToken = await NotAToken.deploy(); + + expect(() => + expect( + mockToken.transfer(receiver.address, 50), + ).to.changeTokenBalances( + provider, + notAToken, + [sender, receiver], + [-50, 50], + ), + ).to.throw( + Error, + "The given contract instance is not an ERC20 token", + ); + }); + it("arrays have different length", async () => { + expect(() => + expect( + mockToken.transfer(receiver.address, 50), + ).to.changeTokenBalances( + provider, + mockToken, + [sender], + [-50, 50], + ), + ).to.throw( + Error, + "The number of accounts (1) is different than the number of expected balance changes (2)", + ); + + expect(() => + expect( + mockToken.transfer(receiver.address, 50), + ).to.changeTokenBalances( + provider, + mockToken, + [sender, receiver], + [-50], + ), + ).to.throw( + Error, + "The number of accounts (2) is different than the number of expected balance changes (1)", + ); }); - await provider.request({ method: "evm_setAutomine", params: [true] }); + it("arrays have different length, subject is a rejected promise", async () => { + expect(() => + expect(matchers.revertsWithoutReason()).to.changeTokenBalances( + provider, + mockToken, + [sender], + [-50, 50], + ), + ).to.throw( + Error, + "The number of accounts (1) is different than the number of expected balance changes (2)", + ); + }); - await expect( - expect( - mockToken.transfer(receiver.address, 50, { gasLimit: 100_000 }), - ).to.changeTokenBalances( - provider, - mockToken, - [sender, receiver], - [-50, 50], - ), - ).to.be.rejectedWith( - "There should be only 1 transaction in the block", - ); + it("tx is not the only one in the block", async () => { + await provider.request({ + method: "evm_setAutomine", + params: [false], + }); + + // we set a gas limit to avoid using the whole block gas limit + await sender.sendTransaction({ + to: receiver.address, + gasLimit: 30_000, + }); + + await provider.request({ + method: "evm_setAutomine", + params: [true], + }); + + await expect( + expect( + mockToken.transfer(receiver.address, 50, { gasLimit: 100_000 }), + ).to.changeTokenBalances( + provider, + mockToken, + [sender, receiver], + [-50, 50], + ), + ).to.be.rejectedWith( + "There should be only 1 transaction in the block", + ); + }); + + it("tx reverts", async () => { + await expect( + expect( + mockToken.transfer(receiver.address, 0), + ).to.changeTokenBalances( + provider, + mockToken, + [sender, receiver], + [-50, 50], + ), + ).to.be.rejectedWith( + Error, + // check that the error message includes the revert reason + "Transferred value is zero", + ); + }); }); + }); - it("tx reverts", async () => { + describe("accepted number types", () => { + it("native bigints are accepted", async () => { await expect( - expect( - mockToken.transfer(receiver.address, 0), - ).to.changeTokenBalances( - provider, - mockToken, - [sender, receiver], - [-50, 50], - ), - ).to.be.rejectedWith( - Error, - // check that the error message includes the revert reason - "Transferred value is zero", + mockToken.transfer(receiver.address, 50), + ).to.changeTokenBalance(provider, mockToken, sender, -50n); + await expect( + mockToken.transfer(receiver.address, 50), + ).to.changeTokenBalances( + provider, + mockToken, + [sender, receiver], + [-50n, 50n], ); }); }); - }); - describe("accepted number types", () => { - it("native bigints are accepted", async () => { - await expect( - mockToken.transfer(receiver.address, 50), - ).to.changeTokenBalance(provider, mockToken, sender, -50n); - await expect( - mockToken.transfer(receiver.address, 50), - ).to.changeTokenBalances( - provider, - mockToken, - [sender, receiver], - [-50n, 50n], - ); - }); - }); - - // smoke tests for stack traces - describe("stack traces", () => { - describe(CHANGE_TOKEN_BALANCE_MATCHER, () => { - it("includes test file", async () => { - let hasProperStackTrace = false; - try { - await expect( - mockToken.transfer(receiver.address, 50), - ).to.changeTokenBalance(provider, mockToken, sender, -100); - } catch (e) { - hasProperStackTrace = util - .inspect(e) - .includes(path.join("test", "matchers", "changeTokenBalance.ts")); - } - expect(hasProperStackTrace).to.equal(true); + // smoke tests for stack traces + describe("stack traces", () => { + describe(CHANGE_TOKEN_BALANCE_MATCHER, () => { + it("includes test file", async () => { + let hasProperStackTrace = false; + try { + await expect( + mockToken.transfer(receiver.address, 50), + ).to.changeTokenBalance(provider, mockToken, sender, -100); + } catch (e) { + hasProperStackTrace = util + .inspect(e) + .includes( + path.join("test", "matchers", "changeTokenBalance.ts"), + ); + } + expect(hasProperStackTrace).to.equal(true); + }); }); - }); - describe(CHANGE_TOKEN_BALANCES_MATCHER, () => { - it("includes test file", async () => { - try { - await expect( - mockToken.transfer(receiver.address, 50), - ).to.changeTokenBalances( - provider, - mockToken, - [sender, receiver], - [-100, 100], - ); - } catch (e) { - expect(util.inspect(e)).to.include( - path.join("test", "matchers", "changeTokenBalance.ts"), - ); - return; - } - expect.fail("Expected an exception but none was thrown"); + describe(CHANGE_TOKEN_BALANCES_MATCHER, () => { + it("includes test file", async () => { + try { + await expect( + mockToken.transfer(receiver.address, 50), + ).to.changeTokenBalances( + provider, + mockToken, + [sender, receiver], + [-100, 100], + ); + } catch (e) { + expect(util.inspect(e)).to.include( + path.join("test", "matchers", "changeTokenBalance.ts"), + ); + return; + } + expect.fail("Expected an exception but none was thrown"); + }); }); }); - }); - } -}); + } + }, +); function zip(a: T[], b: U[]): Array<[T, U]> { assert(a.length === b.length, "lengths should match"); diff --git a/v-next/hardhat-chai-matchers/test/matchers/events.ts b/v-next/hardhat-chai-matchers/test/matchers/events.ts index 1a7eef309c..87eebf704b 100644 --- a/v-next/hardhat-chai-matchers/test/matchers/events.ts +++ b/v-next/hardhat-chai-matchers/test/matchers/events.ts @@ -21,7 +21,7 @@ import { initEnvironment } from "../helpers/helpers.js"; addChaiMatchers(); -describe(".to.emit (contract events)", () => { +describe(".to.emit (contract events)", { timeout: 60000 }, () => { let contract: EventsContract; let otherContract: AnotherContract; let overrideEventContract: OverrideEventContract; diff --git a/v-next/hardhat-chai-matchers/test/matchers/reverted/reverted.ts b/v-next/hardhat-chai-matchers/test/matchers/reverted/reverted.ts index 34502a3fe1..3c0ca8a8e3 100644 --- a/v-next/hardhat-chai-matchers/test/matchers/reverted/reverted.ts +++ b/v-next/hardhat-chai-matchers/test/matchers/reverted/reverted.ts @@ -25,7 +25,7 @@ import { addChaiMatchers(); -describe("INTEGRATION: Reverted", () => { +describe("INTEGRATION: Reverted", { timeout: 60000 }, () => { describe("with the in-process hardhat network", () => { useFixtureProject("hardhat-project"); runTests(); diff --git a/v-next/hardhat-chai-matchers/test/matchers/reverted/revertedWith.ts b/v-next/hardhat-chai-matchers/test/matchers/reverted/revertedWith.ts index ffa2795a08..0c58cc749b 100644 --- a/v-next/hardhat-chai-matchers/test/matchers/reverted/revertedWith.ts +++ b/v-next/hardhat-chai-matchers/test/matchers/reverted/revertedWith.ts @@ -23,7 +23,7 @@ import { addChaiMatchers(); -describe("INTEGRATION: Reverted with", () => { +describe("INTEGRATION: Reverted with", { timeout: 60000 }, () => { describe("with the in-process hardhat network", () => { useFixtureProject("hardhat-project"); runTests(); diff --git a/v-next/hardhat-chai-matchers/test/matchers/reverted/revertedWithCustomError.ts b/v-next/hardhat-chai-matchers/test/matchers/reverted/revertedWithCustomError.ts index 1eb4c05e8e..468a5621ef 100644 --- a/v-next/hardhat-chai-matchers/test/matchers/reverted/revertedWithCustomError.ts +++ b/v-next/hardhat-chai-matchers/test/matchers/reverted/revertedWithCustomError.ts @@ -24,7 +24,7 @@ import { addChaiMatchers(); -describe("INTEGRATION: Reverted with custom error", () => { +describe("INTEGRATION: Reverted with custom error", { timeout: 60000 }, () => { describe("with the in-process hardhat network", () => { useFixtureProject("hardhat-project"); runTests(); diff --git a/v-next/hardhat-chai-matchers/test/matchers/reverted/revertedWithPanic.ts b/v-next/hardhat-chai-matchers/test/matchers/reverted/revertedWithPanic.ts index b8833c6e15..b555d0a0e6 100644 --- a/v-next/hardhat-chai-matchers/test/matchers/reverted/revertedWithPanic.ts +++ b/v-next/hardhat-chai-matchers/test/matchers/reverted/revertedWithPanic.ts @@ -24,7 +24,7 @@ import { addChaiMatchers(); -describe("INTEGRATION: Reverted with panic", () => { +describe("INTEGRATION: Reverted with panic", { timeout: 60000 }, () => { describe("with the in-process hardhat network", () => { useFixtureProject("hardhat-project"); runTests(); diff --git a/v-next/hardhat-chai-matchers/test/matchers/reverted/revertedWithoutReason.ts b/v-next/hardhat-chai-matchers/test/matchers/reverted/revertedWithoutReason.ts index 5c68546e58..113cf6a4ee 100644 --- a/v-next/hardhat-chai-matchers/test/matchers/reverted/revertedWithoutReason.ts +++ b/v-next/hardhat-chai-matchers/test/matchers/reverted/revertedWithoutReason.ts @@ -17,7 +17,7 @@ import { addChaiMatchers(); -describe("INTEGRATION: Reverted without reason", () => { +describe("INTEGRATION: Reverted without reason", { timeout: 60000 }, () => { describe("with the in-process hardhat network", () => { useFixtureProject("hardhat-project"); runTests(); From 9cc2878f188b976a2515194a42d8132e45711eb9 Mon Sep 17 00:00:00 2001 From: ChrisD <18092467+ChristopherDedominici@users.noreply.github.com> Date: Fri, 22 Nov 2024 15:15:14 +0100 Subject: [PATCH 31/61] replace ".toString(16)" with method from hh-utils --- .../src/internal/matchers/changeEtherBalance.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/v-next/hardhat-chai-matchers/src/internal/matchers/changeEtherBalance.ts b/v-next/hardhat-chai-matchers/src/internal/matchers/changeEtherBalance.ts index 4e1100d891..ba230efffd 100644 --- a/v-next/hardhat-chai-matchers/src/internal/matchers/changeEtherBalance.ts +++ b/v-next/hardhat-chai-matchers/src/internal/matchers/changeEtherBalance.ts @@ -5,6 +5,7 @@ import type { TransactionResponse } from "ethers/providers"; import type { BigNumberish } from "ethers/utils"; import { assertHardhatInvariant } from "@ignored/hardhat-vnext-errors"; +import { numberToHexString } from "@ignored/hardhat-vnext-utils/hex"; import { isObject } from "@ignored/hardhat-vnext-utils/lang"; import { toBigInt } from "ethers/utils"; @@ -111,12 +112,12 @@ export async function getBalanceChange( const balanceAfterHex = await provider.request({ method: "eth_getBalance", - params: [address, `0x${txBlockNumber.toString(16)}`], + params: [address, numberToHexString(txBlockNumber)], }); const balanceBeforeHex = await provider.request({ method: "eth_getBalance", - params: [address, `0x${(txBlockNumber - 1).toString(16)}`], + params: [address, numberToHexString(txBlockNumber - 1)], }); assertCanBeConvertedToBigint(balanceAfterHex); From 0770c630f85b504b7703eff479a6665f90049c2d Mon Sep 17 00:00:00 2001 From: ChrisD <18092467+ChristopherDedominici@users.noreply.github.com> Date: Fri, 22 Nov 2024 16:27:31 +0100 Subject: [PATCH 32/61] add test for multiple connections --- .../test/multi-network-connections.ts | 99 +++++++++++++++++++ 1 file changed, 99 insertions(+) create mode 100644 v-next/hardhat-chai-matchers/test/multi-network-connections.ts diff --git a/v-next/hardhat-chai-matchers/test/multi-network-connections.ts b/v-next/hardhat-chai-matchers/test/multi-network-connections.ts new file mode 100644 index 0000000000..90c899d7f7 --- /dev/null +++ b/v-next/hardhat-chai-matchers/test/multi-network-connections.ts @@ -0,0 +1,99 @@ +import type { EthereumProvider } from "@ignored/hardhat-vnext/types/providers"; +import type { + HardhatEthers, + HardhatEthersSigner, +} from "@ignored/hardhat-vnext-ethers/types"; + +import assert from "node:assert/strict"; +import { before, beforeEach, describe, it } from "node:test"; + +import { createHardhatRuntimeEnvironment } from "@ignored/hardhat-vnext/hre"; +import hardhatEthersPlugin from "@ignored/hardhat-vnext-ethers"; +import { expect } from "chai"; + +import { addChaiMatchers } from "../src/internal/add-chai-matchers.js"; + +addChaiMatchers(); + +describe("handle multiple connections", () => { + let sender: HardhatEthersSigner; + let receiver: HardhatEthersSigner; + + let sender2: HardhatEthersSigner; + let receiver2: HardhatEthersSigner; + + let provider: EthereumProvider; + let ethers: HardhatEthers; + + let provider2: EthereumProvider; + let ethers2: HardhatEthers; + + before(async () => { + const hre = await createHardhatRuntimeEnvironment({ + plugins: [hardhatEthersPlugin], + networks: { + test1: { + type: "edr", + chainId: 1, + }, + test2: { + type: "edr", + chainId: 2, + }, + }, + }); + + ({ ethers, provider } = await hre.network.connect("test1")); + + ({ ethers: ethers2, provider: provider2 } = + await hre.network.connect("test2")); + }); + + beforeEach(async () => { + const wallets = await ethers.getSigners(); + sender = wallets[0]; + receiver = wallets[1]; + + const wallets2 = await ethers2.getSigners(); + sender2 = wallets2[0]; + receiver2 = wallets2[1]; + }); + + describe("it should handle 2 separate connections", () => { + it("should modify the balance only in the first connection, not te second one", async () => { + // Be sure that the addresses in the 2 networks are the same + assert.equal(sender.address, sender2.address); + assert.equal(receiver.address, receiver2.address); + + // Send a transaction from the first connection + let nonceSender = await sender.getNonce(); + let nonceSender2 = await sender2.getNonce(); + + await expect(() => + sender.sendTransaction({ + to: receiver.address, + value: 200, + }), + ).to.changeEtherBalance(provider, sender, "-200"); + + // Only the sender nonce should be changed + assert.equal(await sender.getNonce(), nonceSender + 1); + assert.equal(await sender2.getNonce(), nonceSender2); + + // Send a transaction from the second connection + nonceSender = await sender.getNonce(); + nonceSender2 = await sender2.getNonce(); + + await expect(() => + sender2.sendTransaction({ + to: receiver2.address, + value: 200, + }), + ).to.changeEtherBalance(provider2, sender2, "-200"); + + // Only the sender2 nonce should be changed + assert.equal(await sender.getNonce(), nonceSender); + assert.equal(await sender2.getNonce(), nonceSender2 + 1); + }); + }); +}); From 7d7f858fbd62e3f79e7cbaec5cc0cb0b58b47a9f Mon Sep 17 00:00:00 2001 From: ChrisD <18092467+ChristopherDedominici@users.noreply.github.com> Date: Fri, 22 Nov 2024 16:52:12 +0100 Subject: [PATCH 33/61] tmp workaround for missing mutex in compilation --- v-next/hardhat-chai-matchers/package.json | 5 +- .../test/fixture-projects/.gitignore | 2 +- .../16efa488de3a0283218beddfadbd1423.json | 1 + .../ChangeEtherBalance.dbg.json | 4 + .../ChangeEtherBalance.json | 35 ++ .../Events.sol/AnotherContract.dbg.json | 4 + .../contracts/Events.sol/AnotherContract.json | 37 ++ .../contracts/Events.sol/Events.dbg.json | 4 + .../contracts/Events.sol/Events.json | 527 ++++++++++++++++++ .../Events.sol/OverrideEventContract.dbg.json | 4 + .../Events.sol/OverrideEventContract.json | 50 ++ .../AnotherMatchersContract.dbg.json | 4 + .../Matchers.sol/AnotherMatchersContract.json | 30 + .../contracts/Matchers.sol/Matchers.dbg.json | 4 + .../contracts/Matchers.sol/Matchers.json | 333 +++++++++++ .../contracts/Token.sol/MockToken.dbg.json | 4 + .../contracts/Token.sol/MockToken.json | 183 ++++++ .../contracts/Token.sol/NotAToken.dbg.json | 4 + .../contracts/Token.sol/NotAToken.json | 10 + .../Token.sol/TokenWithOnlyName.dbg.json | 4 + .../Token.sol/TokenWithOnlyName.json | 170 ++++++ .../TokenWithoutNameNorSymbol.dbg.json | 4 + .../Token.sol/TokenWithoutNameNorSymbol.json | 162 ++++++ .../test/helpers/helpers.ts | 10 +- .../test/matchers/reverted/reverted.ts | 2 +- .../test/matchers/reverted/revertedWith.ts | 2 +- 26 files changed, 1587 insertions(+), 12 deletions(-) create mode 100644 v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/build-info/16efa488de3a0283218beddfadbd1423.json create mode 100644 v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/ChangeEtherBalance.sol/ChangeEtherBalance.dbg.json create mode 100644 v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/ChangeEtherBalance.sol/ChangeEtherBalance.json create mode 100644 v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Events.sol/AnotherContract.dbg.json create mode 100644 v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Events.sol/AnotherContract.json create mode 100644 v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Events.sol/Events.dbg.json create mode 100644 v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Events.sol/Events.json create mode 100644 v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Events.sol/OverrideEventContract.dbg.json create mode 100644 v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Events.sol/OverrideEventContract.json create mode 100644 v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Matchers.sol/AnotherMatchersContract.dbg.json create mode 100644 v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Matchers.sol/AnotherMatchersContract.json create mode 100644 v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Matchers.sol/Matchers.dbg.json create mode 100644 v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Matchers.sol/Matchers.json create mode 100644 v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Token.sol/MockToken.dbg.json create mode 100644 v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Token.sol/MockToken.json create mode 100644 v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Token.sol/NotAToken.dbg.json create mode 100644 v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Token.sol/NotAToken.json create mode 100644 v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Token.sol/TokenWithOnlyName.dbg.json create mode 100644 v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Token.sol/TokenWithOnlyName.json create mode 100644 v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Token.sol/TokenWithoutNameNorSymbol.dbg.json create mode 100644 v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Token.sol/TokenWithoutNameNorSymbol.json diff --git a/v-next/hardhat-chai-matchers/package.json b/v-next/hardhat-chai-matchers/package.json index 0f63c9fbd9..d226486dca 100644 --- a/v-next/hardhat-chai-matchers/package.json +++ b/v-next/hardhat-chai-matchers/package.json @@ -33,9 +33,10 @@ "test:coverage": "c8 --reporter html --reporter text --all --exclude test --exclude src/internal/types.ts --exclude src/internal/ui/direct-user-interruption-manager.ts --src src node --import tsx/esm --test --test-reporter=@ignored/hardhat-vnext-node-test-reporter \"test/!(fixture-projects|helpers)/**/*.ts\"", "pretest": "pnpm build", "pretest:only": "pnpm build", - "build": "tsc --build . && cp src/type-extensions.d.ts dist/src/type-extensions.d.ts", + "build": "tsc --build .", "prepublishOnly": "pnpm build", - "clean": "rimraf dist" + "clean": "rimraf dist", + "postbuild": "cp src/type-extensions.d.ts dist/src/type-extensions.d.ts" }, "files": [ "dist/src/", diff --git a/v-next/hardhat-chai-matchers/test/fixture-projects/.gitignore b/v-next/hardhat-chai-matchers/test/fixture-projects/.gitignore index e7f801166c..126eb0582d 100644 --- a/v-next/hardhat-chai-matchers/test/fixture-projects/.gitignore +++ b/v-next/hardhat-chai-matchers/test/fixture-projects/.gitignore @@ -1,2 +1,2 @@ -artifacts/ +# artifacts/ cache/ diff --git a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/build-info/16efa488de3a0283218beddfadbd1423.json b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/build-info/16efa488de3a0283218beddfadbd1423.json new file mode 100644 index 0000000000..2a1c7ecac1 --- /dev/null +++ b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/build-info/16efa488de3a0283218beddfadbd1423.json @@ -0,0 +1 @@ +{"id":"16efa488de3a0283218beddfadbd1423","_format":"hh-sol-build-info-1","solcVersion":"0.8.4","solcLongVersion":"0.8.4+commit.c7e474f2","input":{"language":"Solidity","sources":{"contracts/ChangeEtherBalance.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\ncontract ChangeEtherBalance {\n function returnHalf() public payable {\n payable(msg.sender).transfer(msg.value / 2);\n }\n\n function transferTo(address addr) public payable {\n payable(addr).transfer(msg.value);\n }\n\n receive() external payable {}\n}"},"contracts/Events.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\ncontract Events {\n AnotherContract anotherContract;\n\n struct Struct {\n uint u;\n uint v;\n }\n\n event WithoutArgs();\n event WithUintArg(uint u);\n event WithIntArg(int i);\n event WithAddressArg(address a);\n event WithTwoUintArgs(uint u, uint v);\n event WithStringArg(string s);\n event WithTwoStringArgs(string s, string t);\n event WithIndexedStringArg(string indexed s);\n event WithBytesArg(bytes b);\n event WithIndexedBytesArg(bytes indexed b);\n event WithBytes32Arg(bytes32 b);\n event WithStructArg(Struct s);\n event WithIndexedBytes32Arg(bytes32 indexed b);\n event WithUintArray(uint[2] a);\n event WithBytes32Array(bytes32[2] a);\n\n constructor (AnotherContract c) {\n anotherContract = c;\n }\n\n function doNotEmit() public {}\n\n function emitWithoutArgs() public {\n emit WithoutArgs();\n }\n\n function emitUint(uint u) public {\n emit WithUintArg(u);\n }\n\n function emitInt(int i) public {\n emit WithIntArg(i);\n }\n\n function emitAddress(address a) public {\n emit WithAddressArg(a);\n }\n\n function emitUintTwice(uint u, uint v) public {\n emit WithUintArg(u);\n emit WithUintArg(v);\n }\n\n function emitTwoUints(uint u, uint v) public {\n emit WithTwoUintArgs(u, v);\n }\n\n function emitString(string memory s) public {\n emit WithStringArg(s);\n }\n\n function emitIndexedString(string memory s) public {\n emit WithIndexedStringArg(s);\n }\n\n function emitBytes(bytes memory b) public {\n emit WithBytesArg(b);\n }\n\n function emitIndexedBytes(bytes memory b) public {\n emit WithIndexedBytesArg(b);\n }\n\n function emitBytes32(bytes32 b) public {\n emit WithBytes32Arg(b);\n }\n\n function emitIndexedBytes32(bytes32 b) public {\n emit WithIndexedBytes32Arg(b);\n }\n\n function emitUintAndString(uint u, string memory s) public {\n emit WithStringArg(s);\n emit WithUintArg(u);\n }\n\n function emitTwoUintsAndTwoStrings(uint u, uint v, string memory s, string memory t) public {\n emit WithTwoUintArgs(u, v);\n emit WithTwoStringArgs(s, t);\n }\n\n function emitStruct(uint u, uint v) public {\n emit WithStructArg(Struct(u, v));\n }\n\n function emitUintArray(uint u, uint v) public {\n emit WithUintArray([u, v]);\n }\n\n function emitBytes32Array(bytes32 b, bytes32 c) public {\n emit WithBytes32Array([b, c]);\n }\n\n function emitNestedUintFromSameContract(uint u) public {\n emitUint(u);\n }\n\n function emitNestedUintFromAnotherContract(uint u) public {\n anotherContract.emitUint(u);\n }\n}\n\ncontract AnotherContract {\n event WithUintArg(uint u);\n\n function emitUint(uint u) public {\n emit WithUintArg(u);\n }\n}\n\ncontract OverrideEventContract {\n event simpleEvent(uint u);\n event simpleEvent();\n\n function emitSimpleEventWithUintArg(uint u) public {\n emit simpleEvent(u);\n }\n\n function emitSimpleEventWithoutArg() public {\n emit simpleEvent();\n }\n}\n"},"contracts/Matchers.sol":{"content":"// SPDX-License-Identifier: UNLICENSED\n\npragma solidity ^0.8.0;\n\ncontract Matchers {\n uint x;\n\n event SomeEvent();\n\n AnotherMatchersContract anotherContract;\n\n struct Pair { uint a; uint b; }\n\n error SomeCustomError();\n error AnotherCustomError();\n error CustomErrorWithInt(int);\n error CustomErrorWithUint(uint nameToForceEthersToUseAnArrayLikeWithNamedProperties);\n error CustomErrorWithUintAndString(uint, string);\n error CustomErrorWithPair(Pair);\n\n constructor () {\n anotherContract = new AnotherMatchersContract();\n }\n\n function succeeds() public {\n x++; // just to avoid compiler warnings\n }\n\n function succeedsView() public view returns (uint) {\n return x;\n }\n\n function revertsWith(string memory reason) public {\n x++;\n require(false, reason);\n }\n\n function revertsWithView(string memory reason) public pure {\n require(false, reason);\n }\n\n function revertsWithoutReason() public {\n x++;\n require(false);\n }\n\n function revertsWithoutReasonView() public pure {\n require(false);\n }\n\n function panicAssert() public {\n x++;\n assert(false);\n }\n\n function panicAssertView() public pure {\n assert(false);\n }\n\n function revertWithSomeCustomError() public {\n x++;\n revert SomeCustomError();\n }\n\n function revertWithSomeCustomErrorView() public pure {\n revert SomeCustomError();\n }\n\n function revertWithAnotherCustomError() public {\n x++;\n revert AnotherCustomError();\n }\n\n function revertWithAnotherCustomErrorView() public pure {\n revert AnotherCustomError();\n }\n\n function revertWithAnotherContractCustomError() public {\n x++;\n anotherContract.revertWithYetAnotherCustomError();\n }\n\n function revertWithAnotherContractCustomErrorView() public view {\n anotherContract.revertWithYetAnotherCustomErrorView();\n }\n\n function revertWithCustomErrorWithUint(uint n) public {\n x++;\n revert CustomErrorWithUint(n);\n }\n\n function revertWithCustomErrorWithUintView(uint n) public pure {\n revert CustomErrorWithUint(n);\n }\n\n function revertWithCustomErrorWithInt(int i) public {\n x++;\n revert CustomErrorWithInt(i);\n }\n\n function revertWithCustomErrorWithIntView(int i) public pure {\n revert CustomErrorWithInt(i);\n }\n\n function revertWithCustomErrorWithUintAndString(uint n, string memory s) public {\n x++;\n revert CustomErrorWithUintAndString(n, s);\n }\n\n function revertWithCustomErrorWithUintAndStringView(uint n, string memory s) public pure {\n revert CustomErrorWithUintAndString(n, s);\n }\n\n function revertWithCustomErrorWithPair(uint a, uint b) public {\n x++;\n revert CustomErrorWithPair(Pair(a, b));\n }\n\n function revertWithCustomErrorWithPairView(uint a, uint b) public pure {\n revert CustomErrorWithPair(Pair(a, b));\n }\n}\n\ncontract AnotherMatchersContract {\n uint x;\n\n error YetAnotherCustomError();\n\n function revertWithYetAnotherCustomError() public {\n x++;\n revert YetAnotherCustomError();\n }\n\n function revertWithYetAnotherCustomErrorView() public pure {\n revert YetAnotherCustomError();\n }\n}\n"},"contracts/Token.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\ncontract TokenWithoutNameNorSymbol {\n uint public decimals = 1;\n\n uint public totalSupply;\n mapping(address => uint) public balanceOf;\n mapping(address => mapping(address => uint)) allowances;\n\n constructor () {\n totalSupply = 1_000_000_000;\n balanceOf[msg.sender] = totalSupply;\n }\n\n function transfer(address to, uint value) public returns (bool) {\n require(value > 0, \"Transferred value is zero\");\n\n balanceOf[msg.sender] -= value;\n balanceOf[to] += value;\n\n return true;\n }\n\n function allowance(address owner, address spender) public view returns (uint256 remaining) {\n return allowances[owner][spender];\n }\n\n function approve(address spender, uint256 value) public returns (bool success) {\n allowances[msg.sender][spender] = value;\n return true;\n }\n\n function transferFrom(address from, address to, uint256 value) public returns (bool) {\n require(allowance(from, msg.sender) >= value, \"Insufficient allowance\");\n\n allowances[from][msg.sender] -= value;\n balanceOf[from] -= value;\n balanceOf[to] += value;\n\n return true;\n }\n}\n\ncontract TokenWithOnlyName is TokenWithoutNameNorSymbol {\n string public name = \"MockToken\";\n}\n\ncontract MockToken is TokenWithoutNameNorSymbol {\n string public name = \"MockToken\";\n string public symbol = \"MCK\";\n}\n\ncontract NotAToken {}\n"}},"settings":{"optimizer":{"enabled":false,"runs":200},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"],"":["ast"]}}}},"output":{"sources":{"contracts/ChangeEtherBalance.sol":{"ast":{"absolutePath":"contracts/ChangeEtherBalance.sol","exportedSymbols":{"ChangeEtherBalance":[37]},"id":38,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"32:23:0"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":37,"linearizedBaseContracts":[37],"name":"ChangeEtherBalance","nameLocation":"66:18:0","nodeType":"ContractDefinition","nodes":[{"body":{"id":16,"nodeType":"Block","src":"126:54:0","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":10,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"161:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":11,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"value","nodeType":"MemberAccess","src":"161:9:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"32","id":12,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"173:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"161:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"expression":{"id":6,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"140:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":7,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"140:10:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":5,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"132:8:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_payable_$","typeString":"type(address payable)"},"typeName":{"id":4,"name":"address","nodeType":"ElementaryTypeName","src":"132:8:0","stateMutability":"payable","typeDescriptions":{}}},"id":8,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"132:19:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":9,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"transfer","nodeType":"MemberAccess","src":"132:28:0","typeDescriptions":{"typeIdentifier":"t_function_transfer_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":14,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"132:43:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15,"nodeType":"ExpressionStatement","src":"132:43:0"}]},"functionSelector":"b019946e","id":17,"implemented":true,"kind":"function","modifiers":[],"name":"returnHalf","nameLocation":"98:10:0","nodeType":"FunctionDefinition","parameters":{"id":2,"nodeType":"ParameterList","parameters":[],"src":"108:2:0"},"returnParameters":{"id":3,"nodeType":"ParameterList","parameters":[],"src":"126:0:0"},"scope":37,"src":"89:91:0","stateMutability":"payable","virtual":false,"visibility":"public"},{"body":{"id":31,"nodeType":"Block","src":"233:44:0","statements":[{"expression":{"arguments":[{"expression":{"id":27,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"262:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":28,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"value","nodeType":"MemberAccess","src":"262:9:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":24,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19,"src":"247:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":23,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"239:8:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_payable_$","typeString":"type(address payable)"},"typeName":{"id":22,"name":"address","nodeType":"ElementaryTypeName","src":"239:8:0","stateMutability":"payable","typeDescriptions":{}}},"id":25,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"239:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":26,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"transfer","nodeType":"MemberAccess","src":"239:22:0","typeDescriptions":{"typeIdentifier":"t_function_transfer_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":29,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"239:33:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":30,"nodeType":"ExpressionStatement","src":"239:33:0"}]},"functionSelector":"a03fa7e3","id":32,"implemented":true,"kind":"function","modifiers":[],"name":"transferTo","nameLocation":"193:10:0","nodeType":"FunctionDefinition","parameters":{"id":20,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19,"mutability":"mutable","name":"addr","nameLocation":"212:4:0","nodeType":"VariableDeclaration","scope":32,"src":"204:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18,"name":"address","nodeType":"ElementaryTypeName","src":"204:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"203:14:0"},"returnParameters":{"id":21,"nodeType":"ParameterList","parameters":[],"src":"233:0:0"},"scope":37,"src":"184:93:0","stateMutability":"payable","virtual":false,"visibility":"public"},{"body":{"id":35,"nodeType":"Block","src":"308:2:0","statements":[]},"id":36,"implemented":true,"kind":"receive","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":33,"nodeType":"ParameterList","parameters":[],"src":"288:2:0"},"returnParameters":{"id":34,"nodeType":"ParameterList","parameters":[],"src":"308:0:0"},"scope":37,"src":"281:29:0","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":38,"src":"57:255:0","usedErrors":[]}],"src":"32:280:0"},"id":0},"contracts/Events.sol":{"ast":{"absolutePath":"contracts/Events.sol","exportedSymbols":{"AnotherContract":[374],"Events":[359],"OverrideEventContract":[398]},"id":399,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":39,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"32:23:1"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":359,"linearizedBaseContracts":[359],"name":"Events","nameLocation":"66:6:1","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":42,"mutability":"mutable","name":"anotherContract","nameLocation":"93:15:1","nodeType":"VariableDeclaration","scope":359,"src":"77:31:1","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_AnotherContract_$374","typeString":"contract AnotherContract"},"typeName":{"id":41,"nodeType":"UserDefinedTypeName","pathNode":{"id":40,"name":"AnotherContract","nodeType":"IdentifierPath","referencedDeclaration":374,"src":"77:15:1"},"referencedDeclaration":374,"src":"77:15:1","typeDescriptions":{"typeIdentifier":"t_contract$_AnotherContract_$374","typeString":"contract AnotherContract"}},"visibility":"internal"},{"canonicalName":"Events.Struct","id":47,"members":[{"constant":false,"id":44,"mutability":"mutable","name":"u","nameLocation":"138:1:1","nodeType":"VariableDeclaration","scope":47,"src":"133:6:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":43,"name":"uint","nodeType":"ElementaryTypeName","src":"133:4:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":46,"mutability":"mutable","name":"v","nameLocation":"150:1:1","nodeType":"VariableDeclaration","scope":47,"src":"145:6:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":45,"name":"uint","nodeType":"ElementaryTypeName","src":"145:4:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"Struct","nameLocation":"120:6:1","nodeType":"StructDefinition","scope":359,"src":"113:43:1","visibility":"public"},{"anonymous":false,"id":49,"name":"WithoutArgs","nameLocation":"166:11:1","nodeType":"EventDefinition","parameters":{"id":48,"nodeType":"ParameterList","parameters":[],"src":"177:2:1"},"src":"160:20:1"},{"anonymous":false,"id":53,"name":"WithUintArg","nameLocation":"189:11:1","nodeType":"EventDefinition","parameters":{"id":52,"nodeType":"ParameterList","parameters":[{"constant":false,"id":51,"indexed":false,"mutability":"mutable","name":"u","nameLocation":"206:1:1","nodeType":"VariableDeclaration","scope":53,"src":"201:6:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":50,"name":"uint","nodeType":"ElementaryTypeName","src":"201:4:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"200:8:1"},"src":"183:26:1"},{"anonymous":false,"id":57,"name":"WithIntArg","nameLocation":"218:10:1","nodeType":"EventDefinition","parameters":{"id":56,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55,"indexed":false,"mutability":"mutable","name":"i","nameLocation":"233:1:1","nodeType":"VariableDeclaration","scope":57,"src":"229:5:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":54,"name":"int","nodeType":"ElementaryTypeName","src":"229:3:1","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"228:7:1"},"src":"212:24:1"},{"anonymous":false,"id":61,"name":"WithAddressArg","nameLocation":"245:14:1","nodeType":"EventDefinition","parameters":{"id":60,"nodeType":"ParameterList","parameters":[{"constant":false,"id":59,"indexed":false,"mutability":"mutable","name":"a","nameLocation":"268:1:1","nodeType":"VariableDeclaration","scope":61,"src":"260:9:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":58,"name":"address","nodeType":"ElementaryTypeName","src":"260:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"259:11:1"},"src":"239:32:1"},{"anonymous":false,"id":67,"name":"WithTwoUintArgs","nameLocation":"280:15:1","nodeType":"EventDefinition","parameters":{"id":66,"nodeType":"ParameterList","parameters":[{"constant":false,"id":63,"indexed":false,"mutability":"mutable","name":"u","nameLocation":"301:1:1","nodeType":"VariableDeclaration","scope":67,"src":"296:6:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":62,"name":"uint","nodeType":"ElementaryTypeName","src":"296:4:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":65,"indexed":false,"mutability":"mutable","name":"v","nameLocation":"309:1:1","nodeType":"VariableDeclaration","scope":67,"src":"304:6:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":64,"name":"uint","nodeType":"ElementaryTypeName","src":"304:4:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"295:16:1"},"src":"274:38:1"},{"anonymous":false,"id":71,"name":"WithStringArg","nameLocation":"321:13:1","nodeType":"EventDefinition","parameters":{"id":70,"nodeType":"ParameterList","parameters":[{"constant":false,"id":69,"indexed":false,"mutability":"mutable","name":"s","nameLocation":"342:1:1","nodeType":"VariableDeclaration","scope":71,"src":"335:8:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":68,"name":"string","nodeType":"ElementaryTypeName","src":"335:6:1","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"334:10:1"},"src":"315:30:1"},{"anonymous":false,"id":77,"name":"WithTwoStringArgs","nameLocation":"354:17:1","nodeType":"EventDefinition","parameters":{"id":76,"nodeType":"ParameterList","parameters":[{"constant":false,"id":73,"indexed":false,"mutability":"mutable","name":"s","nameLocation":"379:1:1","nodeType":"VariableDeclaration","scope":77,"src":"372:8:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":72,"name":"string","nodeType":"ElementaryTypeName","src":"372:6:1","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":75,"indexed":false,"mutability":"mutable","name":"t","nameLocation":"389:1:1","nodeType":"VariableDeclaration","scope":77,"src":"382:8:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":74,"name":"string","nodeType":"ElementaryTypeName","src":"382:6:1","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"371:20:1"},"src":"348:44:1"},{"anonymous":false,"id":81,"name":"WithIndexedStringArg","nameLocation":"401:20:1","nodeType":"EventDefinition","parameters":{"id":80,"nodeType":"ParameterList","parameters":[{"constant":false,"id":79,"indexed":true,"mutability":"mutable","name":"s","nameLocation":"437:1:1","nodeType":"VariableDeclaration","scope":81,"src":"422:16:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":78,"name":"string","nodeType":"ElementaryTypeName","src":"422:6:1","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"421:18:1"},"src":"395:45:1"},{"anonymous":false,"id":85,"name":"WithBytesArg","nameLocation":"449:12:1","nodeType":"EventDefinition","parameters":{"id":84,"nodeType":"ParameterList","parameters":[{"constant":false,"id":83,"indexed":false,"mutability":"mutable","name":"b","nameLocation":"468:1:1","nodeType":"VariableDeclaration","scope":85,"src":"462:7:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":82,"name":"bytes","nodeType":"ElementaryTypeName","src":"462:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"461:9:1"},"src":"443:28:1"},{"anonymous":false,"id":89,"name":"WithIndexedBytesArg","nameLocation":"480:19:1","nodeType":"EventDefinition","parameters":{"id":88,"nodeType":"ParameterList","parameters":[{"constant":false,"id":87,"indexed":true,"mutability":"mutable","name":"b","nameLocation":"514:1:1","nodeType":"VariableDeclaration","scope":89,"src":"500:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":86,"name":"bytes","nodeType":"ElementaryTypeName","src":"500:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"499:17:1"},"src":"474:43:1"},{"anonymous":false,"id":93,"name":"WithBytes32Arg","nameLocation":"526:14:1","nodeType":"EventDefinition","parameters":{"id":92,"nodeType":"ParameterList","parameters":[{"constant":false,"id":91,"indexed":false,"mutability":"mutable","name":"b","nameLocation":"549:1:1","nodeType":"VariableDeclaration","scope":93,"src":"541:9:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":90,"name":"bytes32","nodeType":"ElementaryTypeName","src":"541:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"540:11:1"},"src":"520:32:1"},{"anonymous":false,"id":98,"name":"WithStructArg","nameLocation":"561:13:1","nodeType":"EventDefinition","parameters":{"id":97,"nodeType":"ParameterList","parameters":[{"constant":false,"id":96,"indexed":false,"mutability":"mutable","name":"s","nameLocation":"582:1:1","nodeType":"VariableDeclaration","scope":98,"src":"575:8:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_Struct_$47_memory_ptr","typeString":"struct Events.Struct"},"typeName":{"id":95,"nodeType":"UserDefinedTypeName","pathNode":{"id":94,"name":"Struct","nodeType":"IdentifierPath","referencedDeclaration":47,"src":"575:6:1"},"referencedDeclaration":47,"src":"575:6:1","typeDescriptions":{"typeIdentifier":"t_struct$_Struct_$47_storage_ptr","typeString":"struct Events.Struct"}},"visibility":"internal"}],"src":"574:10:1"},"src":"555:30:1"},{"anonymous":false,"id":102,"name":"WithIndexedBytes32Arg","nameLocation":"594:21:1","nodeType":"EventDefinition","parameters":{"id":101,"nodeType":"ParameterList","parameters":[{"constant":false,"id":100,"indexed":true,"mutability":"mutable","name":"b","nameLocation":"632:1:1","nodeType":"VariableDeclaration","scope":102,"src":"616:17:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":99,"name":"bytes32","nodeType":"ElementaryTypeName","src":"616:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"615:19:1"},"src":"588:47:1"},{"anonymous":false,"id":108,"name":"WithUintArray","nameLocation":"644:13:1","nodeType":"EventDefinition","parameters":{"id":107,"nodeType":"ParameterList","parameters":[{"constant":false,"id":106,"indexed":false,"mutability":"mutable","name":"a","nameLocation":"666:1:1","nodeType":"VariableDeclaration","scope":108,"src":"658:9:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$2_memory_ptr","typeString":"uint256[2]"},"typeName":{"baseType":{"id":103,"name":"uint","nodeType":"ElementaryTypeName","src":"658:4:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":105,"length":{"hexValue":"32","id":104,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"663:1:1","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"ArrayTypeName","src":"658:7:1","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$2_storage_ptr","typeString":"uint256[2]"}},"visibility":"internal"}],"src":"657:11:1"},"src":"638:31:1"},{"anonymous":false,"id":114,"name":"WithBytes32Array","nameLocation":"678:16:1","nodeType":"EventDefinition","parameters":{"id":113,"nodeType":"ParameterList","parameters":[{"constant":false,"id":112,"indexed":false,"mutability":"mutable","name":"a","nameLocation":"706:1:1","nodeType":"VariableDeclaration","scope":114,"src":"695:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$2_memory_ptr","typeString":"bytes32[2]"},"typeName":{"baseType":{"id":109,"name":"bytes32","nodeType":"ElementaryTypeName","src":"695:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":111,"length":{"hexValue":"32","id":110,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"703:1:1","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"ArrayTypeName","src":"695:10:1","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$2_storage_ptr","typeString":"bytes32[2]"}},"visibility":"internal"}],"src":"694:14:1"},"src":"672:37:1"},{"body":{"id":124,"nodeType":"Block","src":"745:30:1","statements":[{"expression":{"id":122,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":120,"name":"anotherContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42,"src":"751:15:1","typeDescriptions":{"typeIdentifier":"t_contract$_AnotherContract_$374","typeString":"contract AnotherContract"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":121,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":117,"src":"769:1:1","typeDescriptions":{"typeIdentifier":"t_contract$_AnotherContract_$374","typeString":"contract AnotherContract"}},"src":"751:19:1","typeDescriptions":{"typeIdentifier":"t_contract$_AnotherContract_$374","typeString":"contract AnotherContract"}},"id":123,"nodeType":"ExpressionStatement","src":"751:19:1"}]},"id":125,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":118,"nodeType":"ParameterList","parameters":[{"constant":false,"id":117,"mutability":"mutable","name":"c","nameLocation":"742:1:1","nodeType":"VariableDeclaration","scope":125,"src":"726:17:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_AnotherContract_$374","typeString":"contract AnotherContract"},"typeName":{"id":116,"nodeType":"UserDefinedTypeName","pathNode":{"id":115,"name":"AnotherContract","nodeType":"IdentifierPath","referencedDeclaration":374,"src":"726:15:1"},"referencedDeclaration":374,"src":"726:15:1","typeDescriptions":{"typeIdentifier":"t_contract$_AnotherContract_$374","typeString":"contract AnotherContract"}},"visibility":"internal"}],"src":"725:19:1"},"returnParameters":{"id":119,"nodeType":"ParameterList","parameters":[],"src":"745:0:1"},"scope":359,"src":"713:62:1","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":128,"nodeType":"Block","src":"807:2:1","statements":[]},"functionSelector":"db6cdf68","id":129,"implemented":true,"kind":"function","modifiers":[],"name":"doNotEmit","nameLocation":"788:9:1","nodeType":"FunctionDefinition","parameters":{"id":126,"nodeType":"ParameterList","parameters":[],"src":"797:2:1"},"returnParameters":{"id":127,"nodeType":"ParameterList","parameters":[],"src":"807:0:1"},"scope":359,"src":"779:30:1","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":135,"nodeType":"Block","src":"847:29:1","statements":[{"eventCall":{"arguments":[],"expression":{"argumentTypes":[],"id":132,"name":"WithoutArgs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":49,"src":"858:11:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$__$returns$__$","typeString":"function ()"}},"id":133,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"858:13:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":134,"nodeType":"EmitStatement","src":"853:18:1"}]},"functionSelector":"90b37ea2","id":136,"implemented":true,"kind":"function","modifiers":[],"name":"emitWithoutArgs","nameLocation":"822:15:1","nodeType":"FunctionDefinition","parameters":{"id":130,"nodeType":"ParameterList","parameters":[],"src":"837:2:1"},"returnParameters":{"id":131,"nodeType":"ParameterList","parameters":[],"src":"847:0:1"},"scope":359,"src":"813:63:1","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":145,"nodeType":"Block","src":"913:30:1","statements":[{"eventCall":{"arguments":[{"id":142,"name":"u","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":138,"src":"936:1:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":141,"name":"WithUintArg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53,"src":"924:11:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":143,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"924:14:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":144,"nodeType":"EmitStatement","src":"919:19:1"}]},"functionSelector":"91940244","id":146,"implemented":true,"kind":"function","modifiers":[],"name":"emitUint","nameLocation":"889:8:1","nodeType":"FunctionDefinition","parameters":{"id":139,"nodeType":"ParameterList","parameters":[{"constant":false,"id":138,"mutability":"mutable","name":"u","nameLocation":"903:1:1","nodeType":"VariableDeclaration","scope":146,"src":"898:6:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":137,"name":"uint","nodeType":"ElementaryTypeName","src":"898:4:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"897:8:1"},"returnParameters":{"id":140,"nodeType":"ParameterList","parameters":[],"src":"913:0:1"},"scope":359,"src":"880:63:1","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":155,"nodeType":"Block","src":"978:29:1","statements":[{"eventCall":{"arguments":[{"id":152,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":148,"src":"1000:1:1","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":151,"name":"WithIntArg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":57,"src":"989:10:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_int256_$returns$__$","typeString":"function (int256)"}},"id":153,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"989:13:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":154,"nodeType":"EmitStatement","src":"984:18:1"}]},"functionSelector":"8a618191","id":156,"implemented":true,"kind":"function","modifiers":[],"name":"emitInt","nameLocation":"956:7:1","nodeType":"FunctionDefinition","parameters":{"id":149,"nodeType":"ParameterList","parameters":[{"constant":false,"id":148,"mutability":"mutable","name":"i","nameLocation":"968:1:1","nodeType":"VariableDeclaration","scope":156,"src":"964:5:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":147,"name":"int","nodeType":"ElementaryTypeName","src":"964:3:1","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"963:7:1"},"returnParameters":{"id":150,"nodeType":"ParameterList","parameters":[],"src":"978:0:1"},"scope":359,"src":"947:60:1","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":165,"nodeType":"Block","src":"1050:33:1","statements":[{"eventCall":{"arguments":[{"id":162,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":158,"src":"1076:1:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":161,"name":"WithAddressArg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61,"src":"1061:14:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":163,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1061:17:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":164,"nodeType":"EmitStatement","src":"1056:22:1"}]},"functionSelector":"ec5c3ede","id":166,"implemented":true,"kind":"function","modifiers":[],"name":"emitAddress","nameLocation":"1020:11:1","nodeType":"FunctionDefinition","parameters":{"id":159,"nodeType":"ParameterList","parameters":[{"constant":false,"id":158,"mutability":"mutable","name":"a","nameLocation":"1040:1:1","nodeType":"VariableDeclaration","scope":166,"src":"1032:9:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":157,"name":"address","nodeType":"ElementaryTypeName","src":"1032:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1031:11:1"},"returnParameters":{"id":160,"nodeType":"ParameterList","parameters":[],"src":"1050:0:1"},"scope":359,"src":"1011:72:1","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":181,"nodeType":"Block","src":"1133:55:1","statements":[{"eventCall":{"arguments":[{"id":174,"name":"u","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":168,"src":"1156:1:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":173,"name":"WithUintArg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53,"src":"1144:11:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":175,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1144:14:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":176,"nodeType":"EmitStatement","src":"1139:19:1"},{"eventCall":{"arguments":[{"id":178,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":170,"src":"1181:1:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":177,"name":"WithUintArg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53,"src":"1169:11:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":179,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1169:14:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":180,"nodeType":"EmitStatement","src":"1164:19:1"}]},"functionSelector":"0c0c941a","id":182,"implemented":true,"kind":"function","modifiers":[],"name":"emitUintTwice","nameLocation":"1096:13:1","nodeType":"FunctionDefinition","parameters":{"id":171,"nodeType":"ParameterList","parameters":[{"constant":false,"id":168,"mutability":"mutable","name":"u","nameLocation":"1115:1:1","nodeType":"VariableDeclaration","scope":182,"src":"1110:6:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":167,"name":"uint","nodeType":"ElementaryTypeName","src":"1110:4:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":170,"mutability":"mutable","name":"v","nameLocation":"1123:1:1","nodeType":"VariableDeclaration","scope":182,"src":"1118:6:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":169,"name":"uint","nodeType":"ElementaryTypeName","src":"1118:4:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1109:16:1"},"returnParameters":{"id":172,"nodeType":"ParameterList","parameters":[],"src":"1133:0:1"},"scope":359,"src":"1087:101:1","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":194,"nodeType":"Block","src":"1237:37:1","statements":[{"eventCall":{"arguments":[{"id":190,"name":"u","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":184,"src":"1264:1:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":191,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":186,"src":"1267:1:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":189,"name":"WithTwoUintArgs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67,"src":"1248:15:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":192,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1248:21:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":193,"nodeType":"EmitStatement","src":"1243:26:1"}]},"functionSelector":"38393646","id":195,"implemented":true,"kind":"function","modifiers":[],"name":"emitTwoUints","nameLocation":"1201:12:1","nodeType":"FunctionDefinition","parameters":{"id":187,"nodeType":"ParameterList","parameters":[{"constant":false,"id":184,"mutability":"mutable","name":"u","nameLocation":"1219:1:1","nodeType":"VariableDeclaration","scope":195,"src":"1214:6:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":183,"name":"uint","nodeType":"ElementaryTypeName","src":"1214:4:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":186,"mutability":"mutable","name":"v","nameLocation":"1227:1:1","nodeType":"VariableDeclaration","scope":195,"src":"1222:6:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":185,"name":"uint","nodeType":"ElementaryTypeName","src":"1222:4:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1213:16:1"},"returnParameters":{"id":188,"nodeType":"ParameterList","parameters":[],"src":"1237:0:1"},"scope":359,"src":"1192:82:1","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":204,"nodeType":"Block","src":"1322:32:1","statements":[{"eventCall":{"arguments":[{"id":201,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":197,"src":"1347:1:1","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":200,"name":"WithStringArg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"1333:13:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory)"}},"id":202,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1333:16:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":203,"nodeType":"EmitStatement","src":"1328:21:1"}]},"functionSelector":"2536f127","id":205,"implemented":true,"kind":"function","modifiers":[],"name":"emitString","nameLocation":"1287:10:1","nodeType":"FunctionDefinition","parameters":{"id":198,"nodeType":"ParameterList","parameters":[{"constant":false,"id":197,"mutability":"mutable","name":"s","nameLocation":"1312:1:1","nodeType":"VariableDeclaration","scope":205,"src":"1298:15:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":196,"name":"string","nodeType":"ElementaryTypeName","src":"1298:6:1","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1297:17:1"},"returnParameters":{"id":199,"nodeType":"ParameterList","parameters":[],"src":"1322:0:1"},"scope":359,"src":"1278:76:1","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":214,"nodeType":"Block","src":"1409:39:1","statements":[{"eventCall":{"arguments":[{"id":211,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":207,"src":"1441:1:1","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":210,"name":"WithIndexedStringArg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81,"src":"1420:20:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory)"}},"id":212,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1420:23:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":213,"nodeType":"EmitStatement","src":"1415:28:1"}]},"functionSelector":"443690a0","id":215,"implemented":true,"kind":"function","modifiers":[],"name":"emitIndexedString","nameLocation":"1367:17:1","nodeType":"FunctionDefinition","parameters":{"id":208,"nodeType":"ParameterList","parameters":[{"constant":false,"id":207,"mutability":"mutable","name":"s","nameLocation":"1399:1:1","nodeType":"VariableDeclaration","scope":215,"src":"1385:15:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":206,"name":"string","nodeType":"ElementaryTypeName","src":"1385:6:1","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1384:17:1"},"returnParameters":{"id":209,"nodeType":"ParameterList","parameters":[],"src":"1409:0:1"},"scope":359,"src":"1358:90:1","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":224,"nodeType":"Block","src":"1494:31:1","statements":[{"eventCall":{"arguments":[{"id":221,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":217,"src":"1518:1:1","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":220,"name":"WithBytesArg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85,"src":"1505:12:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes memory)"}},"id":222,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1505:15:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":223,"nodeType":"EmitStatement","src":"1500:20:1"}]},"functionSelector":"c76f0635","id":225,"implemented":true,"kind":"function","modifiers":[],"name":"emitBytes","nameLocation":"1461:9:1","nodeType":"FunctionDefinition","parameters":{"id":218,"nodeType":"ParameterList","parameters":[{"constant":false,"id":217,"mutability":"mutable","name":"b","nameLocation":"1484:1:1","nodeType":"VariableDeclaration","scope":225,"src":"1471:14:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":216,"name":"bytes","nodeType":"ElementaryTypeName","src":"1471:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1470:16:1"},"returnParameters":{"id":219,"nodeType":"ParameterList","parameters":[],"src":"1494:0:1"},"scope":359,"src":"1452:73:1","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":234,"nodeType":"Block","src":"1578:38:1","statements":[{"eventCall":{"arguments":[{"id":231,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":227,"src":"1609:1:1","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":230,"name":"WithIndexedBytesArg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89,"src":"1589:19:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes memory)"}},"id":232,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1589:22:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":233,"nodeType":"EmitStatement","src":"1584:27:1"}]},"functionSelector":"cc07e605","id":235,"implemented":true,"kind":"function","modifiers":[],"name":"emitIndexedBytes","nameLocation":"1538:16:1","nodeType":"FunctionDefinition","parameters":{"id":228,"nodeType":"ParameterList","parameters":[{"constant":false,"id":227,"mutability":"mutable","name":"b","nameLocation":"1568:1:1","nodeType":"VariableDeclaration","scope":235,"src":"1555:14:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":226,"name":"bytes","nodeType":"ElementaryTypeName","src":"1555:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1554:16:1"},"returnParameters":{"id":229,"nodeType":"ParameterList","parameters":[],"src":"1578:0:1"},"scope":359,"src":"1529:87:1","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":244,"nodeType":"Block","src":"1659:33:1","statements":[{"eventCall":{"arguments":[{"id":241,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":237,"src":"1685:1:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":240,"name":"WithBytes32Arg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":93,"src":"1670:14:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$returns$__$","typeString":"function (bytes32)"}},"id":242,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1670:17:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":243,"nodeType":"EmitStatement","src":"1665:22:1"}]},"functionSelector":"33311ef3","id":245,"implemented":true,"kind":"function","modifiers":[],"name":"emitBytes32","nameLocation":"1629:11:1","nodeType":"FunctionDefinition","parameters":{"id":238,"nodeType":"ParameterList","parameters":[{"constant":false,"id":237,"mutability":"mutable","name":"b","nameLocation":"1649:1:1","nodeType":"VariableDeclaration","scope":245,"src":"1641:9:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":236,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1641:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1640:11:1"},"returnParameters":{"id":239,"nodeType":"ParameterList","parameters":[],"src":"1659:0:1"},"scope":359,"src":"1620:72:1","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":254,"nodeType":"Block","src":"1742:40:1","statements":[{"eventCall":{"arguments":[{"id":251,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":247,"src":"1775:1:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":250,"name":"WithIndexedBytes32Arg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":102,"src":"1753:21:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$returns$__$","typeString":"function (bytes32)"}},"id":252,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1753:24:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":253,"nodeType":"EmitStatement","src":"1748:29:1"}]},"functionSelector":"048858e5","id":255,"implemented":true,"kind":"function","modifiers":[],"name":"emitIndexedBytes32","nameLocation":"1705:18:1","nodeType":"FunctionDefinition","parameters":{"id":248,"nodeType":"ParameterList","parameters":[{"constant":false,"id":247,"mutability":"mutable","name":"b","nameLocation":"1732:1:1","nodeType":"VariableDeclaration","scope":255,"src":"1724:9:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":246,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1724:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1723:11:1"},"returnParameters":{"id":249,"nodeType":"ParameterList","parameters":[],"src":"1742:0:1"},"scope":359,"src":"1696:86:1","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":270,"nodeType":"Block","src":"1845:57:1","statements":[{"eventCall":{"arguments":[{"id":263,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":259,"src":"1870:1:1","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":262,"name":"WithStringArg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"1856:13:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory)"}},"id":264,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1856:16:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":265,"nodeType":"EmitStatement","src":"1851:21:1"},{"eventCall":{"arguments":[{"id":267,"name":"u","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":257,"src":"1895:1:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":266,"name":"WithUintArg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53,"src":"1883:11:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":268,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1883:14:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":269,"nodeType":"EmitStatement","src":"1878:19:1"}]},"functionSelector":"2785f8d6","id":271,"implemented":true,"kind":"function","modifiers":[],"name":"emitUintAndString","nameLocation":"1795:17:1","nodeType":"FunctionDefinition","parameters":{"id":260,"nodeType":"ParameterList","parameters":[{"constant":false,"id":257,"mutability":"mutable","name":"u","nameLocation":"1818:1:1","nodeType":"VariableDeclaration","scope":271,"src":"1813:6:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":256,"name":"uint","nodeType":"ElementaryTypeName","src":"1813:4:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":259,"mutability":"mutable","name":"s","nameLocation":"1835:1:1","nodeType":"VariableDeclaration","scope":271,"src":"1821:15:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":258,"name":"string","nodeType":"ElementaryTypeName","src":"1821:6:1","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1812:25:1"},"returnParameters":{"id":261,"nodeType":"ParameterList","parameters":[],"src":"1845:0:1"},"scope":359,"src":"1786:116:1","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":292,"nodeType":"Block","src":"1998:71:1","statements":[{"eventCall":{"arguments":[{"id":283,"name":"u","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":273,"src":"2025:1:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":284,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":275,"src":"2028:1:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":282,"name":"WithTwoUintArgs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67,"src":"2009:15:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":285,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2009:21:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":286,"nodeType":"EmitStatement","src":"2004:26:1"},{"eventCall":{"arguments":[{"id":288,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":277,"src":"2059:1:1","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":289,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":279,"src":"2062:1:1","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":287,"name":"WithTwoStringArgs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77,"src":"2041:17:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory,string memory)"}},"id":290,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2041:23:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":291,"nodeType":"EmitStatement","src":"2036:28:1"}]},"functionSelector":"532b9cce","id":293,"implemented":true,"kind":"function","modifiers":[],"name":"emitTwoUintsAndTwoStrings","nameLocation":"1915:25:1","nodeType":"FunctionDefinition","parameters":{"id":280,"nodeType":"ParameterList","parameters":[{"constant":false,"id":273,"mutability":"mutable","name":"u","nameLocation":"1946:1:1","nodeType":"VariableDeclaration","scope":293,"src":"1941:6:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":272,"name":"uint","nodeType":"ElementaryTypeName","src":"1941:4:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":275,"mutability":"mutable","name":"v","nameLocation":"1954:1:1","nodeType":"VariableDeclaration","scope":293,"src":"1949:6:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":274,"name":"uint","nodeType":"ElementaryTypeName","src":"1949:4:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":277,"mutability":"mutable","name":"s","nameLocation":"1971:1:1","nodeType":"VariableDeclaration","scope":293,"src":"1957:15:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":276,"name":"string","nodeType":"ElementaryTypeName","src":"1957:6:1","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":279,"mutability":"mutable","name":"t","nameLocation":"1988:1:1","nodeType":"VariableDeclaration","scope":293,"src":"1974:15:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":278,"name":"string","nodeType":"ElementaryTypeName","src":"1974:6:1","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1940:50:1"},"returnParameters":{"id":281,"nodeType":"ParameterList","parameters":[],"src":"1998:0:1"},"scope":359,"src":"1906:163:1","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":307,"nodeType":"Block","src":"2116:43:1","statements":[{"eventCall":{"arguments":[{"arguments":[{"id":302,"name":"u","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":295,"src":"2148:1:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":303,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":297,"src":"2151:1:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":301,"name":"Struct","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":47,"src":"2141:6:1","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Struct_$47_storage_ptr_$","typeString":"type(struct Events.Struct storage pointer)"}},"id":304,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2141:12:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Struct_$47_memory_ptr","typeString":"struct Events.Struct memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Struct_$47_memory_ptr","typeString":"struct Events.Struct memory"}],"id":300,"name":"WithStructArg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":98,"src":"2127:13:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_struct$_Struct_$47_memory_ptr_$returns$__$","typeString":"function (struct Events.Struct memory)"}},"id":305,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2127:27:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":306,"nodeType":"EmitStatement","src":"2122:32:1"}]},"functionSelector":"9f31a223","id":308,"implemented":true,"kind":"function","modifiers":[],"name":"emitStruct","nameLocation":"2082:10:1","nodeType":"FunctionDefinition","parameters":{"id":298,"nodeType":"ParameterList","parameters":[{"constant":false,"id":295,"mutability":"mutable","name":"u","nameLocation":"2098:1:1","nodeType":"VariableDeclaration","scope":308,"src":"2093:6:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":294,"name":"uint","nodeType":"ElementaryTypeName","src":"2093:4:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":297,"mutability":"mutable","name":"v","nameLocation":"2106:1:1","nodeType":"VariableDeclaration","scope":308,"src":"2101:6:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":296,"name":"uint","nodeType":"ElementaryTypeName","src":"2101:4:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2092:16:1"},"returnParameters":{"id":299,"nodeType":"ParameterList","parameters":[],"src":"2116:0:1"},"scope":359,"src":"2073:86:1","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":321,"nodeType":"Block","src":"2209:37:1","statements":[{"eventCall":{"arguments":[{"components":[{"id":316,"name":"u","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":310,"src":"2235:1:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":317,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":312,"src":"2238:1:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":318,"isConstant":false,"isInlineArray":true,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2234:6:1","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$2_memory_ptr","typeString":"uint256[2] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_uint256_$2_memory_ptr","typeString":"uint256[2] memory"}],"id":315,"name":"WithUintArray","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":108,"src":"2220:13:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_array$_t_uint256_$2_memory_ptr_$returns$__$","typeString":"function (uint256[2] memory)"}},"id":319,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2220:21:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":320,"nodeType":"EmitStatement","src":"2215:26:1"}]},"functionSelector":"17aba537","id":322,"implemented":true,"kind":"function","modifiers":[],"name":"emitUintArray","nameLocation":"2172:13:1","nodeType":"FunctionDefinition","parameters":{"id":313,"nodeType":"ParameterList","parameters":[{"constant":false,"id":310,"mutability":"mutable","name":"u","nameLocation":"2191:1:1","nodeType":"VariableDeclaration","scope":322,"src":"2186:6:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":309,"name":"uint","nodeType":"ElementaryTypeName","src":"2186:4:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":312,"mutability":"mutable","name":"v","nameLocation":"2199:1:1","nodeType":"VariableDeclaration","scope":322,"src":"2194:6:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":311,"name":"uint","nodeType":"ElementaryTypeName","src":"2194:4:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2185:16:1"},"returnParameters":{"id":314,"nodeType":"ParameterList","parameters":[],"src":"2209:0:1"},"scope":359,"src":"2163:83:1","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":335,"nodeType":"Block","src":"2305:40:1","statements":[{"eventCall":{"arguments":[{"components":[{"id":330,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":324,"src":"2334:1:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":331,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":326,"src":"2337:1:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":332,"isConstant":false,"isInlineArray":true,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2333:6:1","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$2_memory_ptr","typeString":"bytes32[2] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_bytes32_$2_memory_ptr","typeString":"bytes32[2] memory"}],"id":329,"name":"WithBytes32Array","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":114,"src":"2316:16:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_array$_t_bytes32_$2_memory_ptr_$returns$__$","typeString":"function (bytes32[2] memory)"}},"id":333,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2316:24:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":334,"nodeType":"EmitStatement","src":"2311:29:1"}]},"functionSelector":"c0cd80e6","id":336,"implemented":true,"kind":"function","modifiers":[],"name":"emitBytes32Array","nameLocation":"2259:16:1","nodeType":"FunctionDefinition","parameters":{"id":327,"nodeType":"ParameterList","parameters":[{"constant":false,"id":324,"mutability":"mutable","name":"b","nameLocation":"2284:1:1","nodeType":"VariableDeclaration","scope":336,"src":"2276:9:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":323,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2276:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":326,"mutability":"mutable","name":"c","nameLocation":"2295:1:1","nodeType":"VariableDeclaration","scope":336,"src":"2287:9:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":325,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2287:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2275:22:1"},"returnParameters":{"id":328,"nodeType":"ParameterList","parameters":[],"src":"2305:0:1"},"scope":359,"src":"2250:95:1","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":345,"nodeType":"Block","src":"2404:22:1","statements":[{"expression":{"arguments":[{"id":342,"name":"u","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":338,"src":"2419:1:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":341,"name":"emitUint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":146,"src":"2410:8:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":343,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2410:11:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":344,"nodeType":"ExpressionStatement","src":"2410:11:1"}]},"functionSelector":"813a8cf5","id":346,"implemented":true,"kind":"function","modifiers":[],"name":"emitNestedUintFromSameContract","nameLocation":"2358:30:1","nodeType":"FunctionDefinition","parameters":{"id":339,"nodeType":"ParameterList","parameters":[{"constant":false,"id":338,"mutability":"mutable","name":"u","nameLocation":"2394:1:1","nodeType":"VariableDeclaration","scope":346,"src":"2389:6:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":337,"name":"uint","nodeType":"ElementaryTypeName","src":"2389:4:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2388:8:1"},"returnParameters":{"id":340,"nodeType":"ParameterList","parameters":[],"src":"2404:0:1"},"scope":359,"src":"2349:77:1","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":357,"nodeType":"Block","src":"2488:38:1","statements":[{"expression":{"arguments":[{"id":354,"name":"u","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":348,"src":"2519:1:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":351,"name":"anotherContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42,"src":"2494:15:1","typeDescriptions":{"typeIdentifier":"t_contract$_AnotherContract_$374","typeString":"contract AnotherContract"}},"id":353,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"emitUint","nodeType":"MemberAccess","referencedDeclaration":373,"src":"2494:24:1","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256) external"}},"id":355,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2494:27:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":356,"nodeType":"ExpressionStatement","src":"2494:27:1"}]},"functionSelector":"d3931e57","id":358,"implemented":true,"kind":"function","modifiers":[],"name":"emitNestedUintFromAnotherContract","nameLocation":"2439:33:1","nodeType":"FunctionDefinition","parameters":{"id":349,"nodeType":"ParameterList","parameters":[{"constant":false,"id":348,"mutability":"mutable","name":"u","nameLocation":"2478:1:1","nodeType":"VariableDeclaration","scope":358,"src":"2473:6:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":347,"name":"uint","nodeType":"ElementaryTypeName","src":"2473:4:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2472:8:1"},"returnParameters":{"id":350,"nodeType":"ParameterList","parameters":[],"src":"2488:0:1"},"scope":359,"src":"2430:96:1","stateMutability":"nonpayable","virtual":false,"visibility":"public"}],"scope":399,"src":"57:2471:1","usedErrors":[]},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":374,"linearizedBaseContracts":[374],"name":"AnotherContract","nameLocation":"2539:15:1","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"id":363,"name":"WithUintArg","nameLocation":"2565:11:1","nodeType":"EventDefinition","parameters":{"id":362,"nodeType":"ParameterList","parameters":[{"constant":false,"id":361,"indexed":false,"mutability":"mutable","name":"u","nameLocation":"2582:1:1","nodeType":"VariableDeclaration","scope":363,"src":"2577:6:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":360,"name":"uint","nodeType":"ElementaryTypeName","src":"2577:4:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2576:8:1"},"src":"2559:26:1"},{"body":{"id":372,"nodeType":"Block","src":"2622:30:1","statements":[{"eventCall":{"arguments":[{"id":369,"name":"u","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":365,"src":"2645:1:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":368,"name":"WithUintArg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":363,"src":"2633:11:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":370,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2633:14:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":371,"nodeType":"EmitStatement","src":"2628:19:1"}]},"functionSelector":"91940244","id":373,"implemented":true,"kind":"function","modifiers":[],"name":"emitUint","nameLocation":"2598:8:1","nodeType":"FunctionDefinition","parameters":{"id":366,"nodeType":"ParameterList","parameters":[{"constant":false,"id":365,"mutability":"mutable","name":"u","nameLocation":"2612:1:1","nodeType":"VariableDeclaration","scope":373,"src":"2607:6:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":364,"name":"uint","nodeType":"ElementaryTypeName","src":"2607:4:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2606:8:1"},"returnParameters":{"id":367,"nodeType":"ParameterList","parameters":[],"src":"2622:0:1"},"scope":374,"src":"2589:63:1","stateMutability":"nonpayable","virtual":false,"visibility":"public"}],"scope":399,"src":"2530:124:1","usedErrors":[]},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":398,"linearizedBaseContracts":[398],"name":"OverrideEventContract","nameLocation":"2665:21:1","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"id":378,"name":"simpleEvent","nameLocation":"2697:11:1","nodeType":"EventDefinition","parameters":{"id":377,"nodeType":"ParameterList","parameters":[{"constant":false,"id":376,"indexed":false,"mutability":"mutable","name":"u","nameLocation":"2714:1:1","nodeType":"VariableDeclaration","scope":378,"src":"2709:6:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":375,"name":"uint","nodeType":"ElementaryTypeName","src":"2709:4:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2708:8:1"},"src":"2691:26:1"},{"anonymous":false,"id":380,"name":"simpleEvent","nameLocation":"2726:11:1","nodeType":"EventDefinition","parameters":{"id":379,"nodeType":"ParameterList","parameters":[],"src":"2737:2:1"},"src":"2720:20:1"},{"body":{"id":389,"nodeType":"Block","src":"2795:30:1","statements":[{"eventCall":{"arguments":[{"id":386,"name":"u","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":382,"src":"2818:1:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":385,"name":"simpleEvent","nodeType":"Identifier","overloadedDeclarations":[378,380],"referencedDeclaration":378,"src":"2806:11:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":387,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2806:14:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":388,"nodeType":"EmitStatement","src":"2801:19:1"}]},"functionSelector":"2ce136d9","id":390,"implemented":true,"kind":"function","modifiers":[],"name":"emitSimpleEventWithUintArg","nameLocation":"2753:26:1","nodeType":"FunctionDefinition","parameters":{"id":383,"nodeType":"ParameterList","parameters":[{"constant":false,"id":382,"mutability":"mutable","name":"u","nameLocation":"2785:1:1","nodeType":"VariableDeclaration","scope":390,"src":"2780:6:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":381,"name":"uint","nodeType":"ElementaryTypeName","src":"2780:4:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2779:8:1"},"returnParameters":{"id":384,"nodeType":"ParameterList","parameters":[],"src":"2795:0:1"},"scope":398,"src":"2744:81:1","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":396,"nodeType":"Block","src":"2873:29:1","statements":[{"eventCall":{"arguments":[],"expression":{"argumentTypes":[],"id":393,"name":"simpleEvent","nodeType":"Identifier","overloadedDeclarations":[378,380],"referencedDeclaration":380,"src":"2884:11:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$__$returns$__$","typeString":"function ()"}},"id":394,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2884:13:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":395,"nodeType":"EmitStatement","src":"2879:18:1"}]},"functionSelector":"8e1c72bb","id":397,"implemented":true,"kind":"function","modifiers":[],"name":"emitSimpleEventWithoutArg","nameLocation":"2838:25:1","nodeType":"FunctionDefinition","parameters":{"id":391,"nodeType":"ParameterList","parameters":[],"src":"2863:2:1"},"returnParameters":{"id":392,"nodeType":"ParameterList","parameters":[],"src":"2873:0:1"},"scope":398,"src":"2829:73:1","stateMutability":"nonpayable","virtual":false,"visibility":"public"}],"scope":399,"src":"2656:248:1","usedErrors":[]}],"src":"32:2873:1"},"id":1},"contracts/Matchers.sol":{"ast":{"absolutePath":"contracts/Matchers.sol","exportedSymbols":{"AnotherMatchersContract":[710],"Matchers":[688]},"id":711,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":400,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"40:23:2"},{"abstract":false,"baseContracts":[],"contractDependencies":[710],"contractKind":"contract","fullyImplemented":true,"id":688,"linearizedBaseContracts":[688],"name":"Matchers","nameLocation":"74:8:2","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":402,"mutability":"mutable","name":"x","nameLocation":"92:1:2","nodeType":"VariableDeclaration","scope":688,"src":"87:6:2","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":401,"name":"uint","nodeType":"ElementaryTypeName","src":"87:4:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"anonymous":false,"id":404,"name":"SomeEvent","nameLocation":"104:9:2","nodeType":"EventDefinition","parameters":{"id":403,"nodeType":"ParameterList","parameters":[],"src":"113:2:2"},"src":"98:18:2"},{"constant":false,"id":407,"mutability":"mutable","name":"anotherContract","nameLocation":"144:15:2","nodeType":"VariableDeclaration","scope":688,"src":"120:39:2","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_AnotherMatchersContract_$710","typeString":"contract AnotherMatchersContract"},"typeName":{"id":406,"nodeType":"UserDefinedTypeName","pathNode":{"id":405,"name":"AnotherMatchersContract","nodeType":"IdentifierPath","referencedDeclaration":710,"src":"120:23:2"},"referencedDeclaration":710,"src":"120:23:2","typeDescriptions":{"typeIdentifier":"t_contract$_AnotherMatchersContract_$710","typeString":"contract AnotherMatchersContract"}},"visibility":"internal"},{"canonicalName":"Matchers.Pair","id":412,"members":[{"constant":false,"id":409,"mutability":"mutable","name":"a","nameLocation":"183:1:2","nodeType":"VariableDeclaration","scope":412,"src":"178:6:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":408,"name":"uint","nodeType":"ElementaryTypeName","src":"178:4:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":411,"mutability":"mutable","name":"b","nameLocation":"191:1:2","nodeType":"VariableDeclaration","scope":412,"src":"186:6:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":410,"name":"uint","nodeType":"ElementaryTypeName","src":"186:4:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"Pair","nameLocation":"171:4:2","nodeType":"StructDefinition","scope":688,"src":"164:31:2","visibility":"public"},{"id":414,"name":"SomeCustomError","nameLocation":"205:15:2","nodeType":"ErrorDefinition","parameters":{"id":413,"nodeType":"ParameterList","parameters":[],"src":"220:2:2"},"src":"199:24:2"},{"id":416,"name":"AnotherCustomError","nameLocation":"232:18:2","nodeType":"ErrorDefinition","parameters":{"id":415,"nodeType":"ParameterList","parameters":[],"src":"250:2:2"},"src":"226:27:2"},{"id":420,"name":"CustomErrorWithInt","nameLocation":"262:18:2","nodeType":"ErrorDefinition","parameters":{"id":419,"nodeType":"ParameterList","parameters":[{"constant":false,"id":418,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":420,"src":"281:3:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":417,"name":"int","nodeType":"ElementaryTypeName","src":"281:3:2","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"280:5:2"},"src":"256:30:2"},{"id":424,"name":"CustomErrorWithUint","nameLocation":"295:19:2","nodeType":"ErrorDefinition","parameters":{"id":423,"nodeType":"ParameterList","parameters":[{"constant":false,"id":422,"mutability":"mutable","name":"nameToForceEthersToUseAnArrayLikeWithNamedProperties","nameLocation":"320:52:2","nodeType":"VariableDeclaration","scope":424,"src":"315:57:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":421,"name":"uint","nodeType":"ElementaryTypeName","src":"315:4:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"314:59:2"},"src":"289:85:2"},{"id":430,"name":"CustomErrorWithUintAndString","nameLocation":"383:28:2","nodeType":"ErrorDefinition","parameters":{"id":429,"nodeType":"ParameterList","parameters":[{"constant":false,"id":426,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":430,"src":"412:4:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":425,"name":"uint","nodeType":"ElementaryTypeName","src":"412:4:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":428,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":430,"src":"418:6:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":427,"name":"string","nodeType":"ElementaryTypeName","src":"418:6:2","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"411:14:2"},"src":"377:49:2"},{"id":435,"name":"CustomErrorWithPair","nameLocation":"435:19:2","nodeType":"ErrorDefinition","parameters":{"id":434,"nodeType":"ParameterList","parameters":[{"constant":false,"id":433,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":435,"src":"455:4:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_Pair_$412_memory_ptr","typeString":"struct Matchers.Pair"},"typeName":{"id":432,"nodeType":"UserDefinedTypeName","pathNode":{"id":431,"name":"Pair","nodeType":"IdentifierPath","referencedDeclaration":412,"src":"455:4:2"},"referencedDeclaration":412,"src":"455:4:2","typeDescriptions":{"typeIdentifier":"t_struct$_Pair_$412_storage_ptr","typeString":"struct Matchers.Pair"}},"visibility":"internal"}],"src":"454:6:2"},"src":"429:32:2"},{"body":{"id":445,"nodeType":"Block","src":"480:58:2","statements":[{"expression":{"id":443,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":438,"name":"anotherContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":407,"src":"486:15:2","typeDescriptions":{"typeIdentifier":"t_contract$_AnotherMatchersContract_$710","typeString":"contract AnotherMatchersContract"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"id":441,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"NewExpression","src":"504:27:2","typeDescriptions":{"typeIdentifier":"t_function_creation_nonpayable$__$returns$_t_contract$_AnotherMatchersContract_$710_$","typeString":"function () returns (contract AnotherMatchersContract)"},"typeName":{"id":440,"nodeType":"UserDefinedTypeName","pathNode":{"id":439,"name":"AnotherMatchersContract","nodeType":"IdentifierPath","referencedDeclaration":710,"src":"508:23:2"},"referencedDeclaration":710,"src":"508:23:2","typeDescriptions":{"typeIdentifier":"t_contract$_AnotherMatchersContract_$710","typeString":"contract AnotherMatchersContract"}}},"id":442,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"504:29:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_AnotherMatchersContract_$710","typeString":"contract AnotherMatchersContract"}},"src":"486:47:2","typeDescriptions":{"typeIdentifier":"t_contract$_AnotherMatchersContract_$710","typeString":"contract AnotherMatchersContract"}},"id":444,"nodeType":"ExpressionStatement","src":"486:47:2"}]},"id":446,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":436,"nodeType":"ParameterList","parameters":[],"src":"477:2:2"},"returnParameters":{"id":437,"nodeType":"ParameterList","parameters":[],"src":"480:0:2"},"scope":688,"src":"465:73:2","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":452,"nodeType":"Block","src":"569:49:2","statements":[{"expression":{"id":450,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"575:3:2","subExpression":{"id":449,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":402,"src":"575:1:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":451,"nodeType":"ExpressionStatement","src":"575:3:2"}]},"functionSelector":"74afd452","id":453,"implemented":true,"kind":"function","modifiers":[],"name":"succeeds","nameLocation":"551:8:2","nodeType":"FunctionDefinition","parameters":{"id":447,"nodeType":"ParameterList","parameters":[],"src":"559:2:2"},"returnParameters":{"id":448,"nodeType":"ParameterList","parameters":[],"src":"569:0:2"},"scope":688,"src":"542:76:2","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":460,"nodeType":"Block","src":"673:19:2","statements":[{"expression":{"id":458,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":402,"src":"686:1:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":457,"id":459,"nodeType":"Return","src":"679:8:2"}]},"functionSelector":"6fc588d2","id":461,"implemented":true,"kind":"function","modifiers":[],"name":"succeedsView","nameLocation":"631:12:2","nodeType":"FunctionDefinition","parameters":{"id":454,"nodeType":"ParameterList","parameters":[],"src":"643:2:2"},"returnParameters":{"id":457,"nodeType":"ParameterList","parameters":[{"constant":false,"id":456,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":461,"src":"667:4:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":455,"name":"uint","nodeType":"ElementaryTypeName","src":"667:4:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"666:6:2"},"scope":688,"src":"622:70:2","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":474,"nodeType":"Block","src":"746:42:2","statements":[{"expression":{"id":467,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"752:3:2","subExpression":{"id":466,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":402,"src":"752:1:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":468,"nodeType":"ExpressionStatement","src":"752:3:2"},{"expression":{"arguments":[{"hexValue":"66616c7365","id":470,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"769:5:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"id":471,"name":"reason","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":463,"src":"776:6:2","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":469,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"761:7:2","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":472,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"761:22:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":473,"nodeType":"ExpressionStatement","src":"761:22:2"}]},"functionSelector":"6f1fdc31","id":475,"implemented":true,"kind":"function","modifiers":[],"name":"revertsWith","nameLocation":"705:11:2","nodeType":"FunctionDefinition","parameters":{"id":464,"nodeType":"ParameterList","parameters":[{"constant":false,"id":463,"mutability":"mutable","name":"reason","nameLocation":"731:6:2","nodeType":"VariableDeclaration","scope":475,"src":"717:20:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":462,"name":"string","nodeType":"ElementaryTypeName","src":"717:6:2","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"716:22:2"},"returnParameters":{"id":465,"nodeType":"ParameterList","parameters":[],"src":"746:0:2"},"scope":688,"src":"696:92:2","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":485,"nodeType":"Block","src":"851:33:2","statements":[{"expression":{"arguments":[{"hexValue":"66616c7365","id":481,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"865:5:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"id":482,"name":"reason","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":477,"src":"872:6:2","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":480,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"857:7:2","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":483,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"857:22:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":484,"nodeType":"ExpressionStatement","src":"857:22:2"}]},"functionSelector":"467e3d37","id":486,"implemented":true,"kind":"function","modifiers":[],"name":"revertsWithView","nameLocation":"801:15:2","nodeType":"FunctionDefinition","parameters":{"id":478,"nodeType":"ParameterList","parameters":[{"constant":false,"id":477,"mutability":"mutable","name":"reason","nameLocation":"831:6:2","nodeType":"VariableDeclaration","scope":486,"src":"817:20:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":476,"name":"string","nodeType":"ElementaryTypeName","src":"817:6:2","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"816:22:2"},"returnParameters":{"id":479,"nodeType":"ParameterList","parameters":[],"src":"851:0:2"},"scope":688,"src":"792:92:2","stateMutability":"pure","virtual":false,"visibility":"public"},{"body":{"id":496,"nodeType":"Block","src":"927:34:2","statements":[{"expression":{"id":490,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"933:3:2","subExpression":{"id":489,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":402,"src":"933:1:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":491,"nodeType":"ExpressionStatement","src":"933:3:2"},{"expression":{"arguments":[{"hexValue":"66616c7365","id":493,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"950:5:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":492,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"942:7:2","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":494,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"942:14:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":495,"nodeType":"ExpressionStatement","src":"942:14:2"}]},"functionSelector":"1b4f3f3d","id":497,"implemented":true,"kind":"function","modifiers":[],"name":"revertsWithoutReason","nameLocation":"897:20:2","nodeType":"FunctionDefinition","parameters":{"id":487,"nodeType":"ParameterList","parameters":[],"src":"917:2:2"},"returnParameters":{"id":488,"nodeType":"ParameterList","parameters":[],"src":"927:0:2"},"scope":688,"src":"888:73:2","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":504,"nodeType":"Block","src":"1013:25:2","statements":[{"expression":{"arguments":[{"hexValue":"66616c7365","id":501,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1027:5:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":500,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1019:7:2","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":502,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1019:14:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":503,"nodeType":"ExpressionStatement","src":"1019:14:2"}]},"functionSelector":"58a1d1ed","id":505,"implemented":true,"kind":"function","modifiers":[],"name":"revertsWithoutReasonView","nameLocation":"974:24:2","nodeType":"FunctionDefinition","parameters":{"id":498,"nodeType":"ParameterList","parameters":[],"src":"998:2:2"},"returnParameters":{"id":499,"nodeType":"ParameterList","parameters":[],"src":"1013:0:2"},"scope":688,"src":"965:73:2","stateMutability":"pure","virtual":false,"visibility":"public"},{"body":{"id":515,"nodeType":"Block","src":"1072:33:2","statements":[{"expression":{"id":509,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"1078:3:2","subExpression":{"id":508,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":402,"src":"1078:1:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":510,"nodeType":"ExpressionStatement","src":"1078:3:2"},{"expression":{"arguments":[{"hexValue":"66616c7365","id":512,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1094:5:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":511,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"1087:6:2","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":513,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1087:13:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":514,"nodeType":"ExpressionStatement","src":"1087:13:2"}]},"functionSelector":"b6bbe061","id":516,"implemented":true,"kind":"function","modifiers":[],"name":"panicAssert","nameLocation":"1051:11:2","nodeType":"FunctionDefinition","parameters":{"id":506,"nodeType":"ParameterList","parameters":[],"src":"1062:2:2"},"returnParameters":{"id":507,"nodeType":"ParameterList","parameters":[],"src":"1072:0:2"},"scope":688,"src":"1042:63:2","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":523,"nodeType":"Block","src":"1148:24:2","statements":[{"expression":{"arguments":[{"hexValue":"66616c7365","id":520,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1161:5:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":519,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"1154:6:2","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":521,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1154:13:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":522,"nodeType":"ExpressionStatement","src":"1154:13:2"}]},"functionSelector":"5b94e31e","id":524,"implemented":true,"kind":"function","modifiers":[],"name":"panicAssertView","nameLocation":"1118:15:2","nodeType":"FunctionDefinition","parameters":{"id":517,"nodeType":"ParameterList","parameters":[],"src":"1133:2:2"},"returnParameters":{"id":518,"nodeType":"ParameterList","parameters":[],"src":"1148:0:2"},"scope":688,"src":"1109:63:2","stateMutability":"pure","virtual":false,"visibility":"public"},{"body":{"id":533,"nodeType":"Block","src":"1220:44:2","statements":[{"expression":{"id":528,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"1226:3:2","subExpression":{"id":527,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":402,"src":"1226:1:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":529,"nodeType":"ExpressionStatement","src":"1226:3:2"},{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":530,"name":"SomeCustomError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":414,"src":"1242:15:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":531,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1242:17:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":532,"nodeType":"RevertStatement","src":"1235:24:2"}]},"functionSelector":"bad92aa9","id":534,"implemented":true,"kind":"function","modifiers":[],"name":"revertWithSomeCustomError","nameLocation":"1185:25:2","nodeType":"FunctionDefinition","parameters":{"id":525,"nodeType":"ParameterList","parameters":[],"src":"1210:2:2"},"returnParameters":{"id":526,"nodeType":"ParameterList","parameters":[],"src":"1220:0:2"},"scope":688,"src":"1176:88:2","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":540,"nodeType":"Block","src":"1321:35:2","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":537,"name":"SomeCustomError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":414,"src":"1334:15:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":538,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1334:17:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":539,"nodeType":"RevertStatement","src":"1327:24:2"}]},"functionSelector":"ffb4746b","id":541,"implemented":true,"kind":"function","modifiers":[],"name":"revertWithSomeCustomErrorView","nameLocation":"1277:29:2","nodeType":"FunctionDefinition","parameters":{"id":535,"nodeType":"ParameterList","parameters":[],"src":"1306:2:2"},"returnParameters":{"id":536,"nodeType":"ParameterList","parameters":[],"src":"1321:0:2"},"scope":688,"src":"1268:88:2","stateMutability":"pure","virtual":false,"visibility":"public"},{"body":{"id":550,"nodeType":"Block","src":"1407:47:2","statements":[{"expression":{"id":545,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"1413:3:2","subExpression":{"id":544,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":402,"src":"1413:1:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":546,"nodeType":"ExpressionStatement","src":"1413:3:2"},{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":547,"name":"AnotherCustomError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":416,"src":"1429:18:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":548,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1429:20:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":549,"nodeType":"RevertStatement","src":"1422:27:2"}]},"functionSelector":"4b5bbf6a","id":551,"implemented":true,"kind":"function","modifiers":[],"name":"revertWithAnotherCustomError","nameLocation":"1369:28:2","nodeType":"FunctionDefinition","parameters":{"id":542,"nodeType":"ParameterList","parameters":[],"src":"1397:2:2"},"returnParameters":{"id":543,"nodeType":"ParameterList","parameters":[],"src":"1407:0:2"},"scope":688,"src":"1360:94:2","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":557,"nodeType":"Block","src":"1514:38:2","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":554,"name":"AnotherCustomError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":416,"src":"1527:18:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":555,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1527:20:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":556,"nodeType":"RevertStatement","src":"1520:27:2"}]},"functionSelector":"aac014e0","id":558,"implemented":true,"kind":"function","modifiers":[],"name":"revertWithAnotherCustomErrorView","nameLocation":"1467:32:2","nodeType":"FunctionDefinition","parameters":{"id":552,"nodeType":"ParameterList","parameters":[],"src":"1499:2:2"},"returnParameters":{"id":553,"nodeType":"ParameterList","parameters":[],"src":"1514:0:2"},"scope":688,"src":"1458:94:2","stateMutability":"pure","virtual":false,"visibility":"public"},{"body":{"id":569,"nodeType":"Block","src":"1611:69:2","statements":[{"expression":{"id":562,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"1617:3:2","subExpression":{"id":561,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":402,"src":"1617:1:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":563,"nodeType":"ExpressionStatement","src":"1617:3:2"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":564,"name":"anotherContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":407,"src":"1626:15:2","typeDescriptions":{"typeIdentifier":"t_contract$_AnotherMatchersContract_$710","typeString":"contract AnotherMatchersContract"}},"id":566,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"revertWithYetAnotherCustomError","nodeType":"MemberAccess","referencedDeclaration":702,"src":"1626:47:2","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$__$returns$__$","typeString":"function () external"}},"id":567,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1626:49:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":568,"nodeType":"ExpressionStatement","src":"1626:49:2"}]},"functionSelector":"772f243a","id":570,"implemented":true,"kind":"function","modifiers":[],"name":"revertWithAnotherContractCustomError","nameLocation":"1565:36:2","nodeType":"FunctionDefinition","parameters":{"id":559,"nodeType":"ParameterList","parameters":[],"src":"1601:2:2"},"returnParameters":{"id":560,"nodeType":"ParameterList","parameters":[],"src":"1611:0:2"},"scope":688,"src":"1556:124:2","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":578,"nodeType":"Block","src":"1748:64:2","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":573,"name":"anotherContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":407,"src":"1754:15:2","typeDescriptions":{"typeIdentifier":"t_contract$_AnotherMatchersContract_$710","typeString":"contract AnotherMatchersContract"}},"id":575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"revertWithYetAnotherCustomErrorView","nodeType":"MemberAccess","referencedDeclaration":709,"src":"1754:51:2","typeDescriptions":{"typeIdentifier":"t_function_external_pure$__$returns$__$","typeString":"function () pure external"}},"id":576,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1754:53:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":577,"nodeType":"ExpressionStatement","src":"1754:53:2"}]},"functionSelector":"622051f1","id":579,"implemented":true,"kind":"function","modifiers":[],"name":"revertWithAnotherContractCustomErrorView","nameLocation":"1693:40:2","nodeType":"FunctionDefinition","parameters":{"id":571,"nodeType":"ParameterList","parameters":[],"src":"1733:2:2"},"returnParameters":{"id":572,"nodeType":"ParameterList","parameters":[],"src":"1748:0:2"},"scope":688,"src":"1684:128:2","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":591,"nodeType":"Block","src":"1870:49:2","statements":[{"expression":{"id":585,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"1876:3:2","subExpression":{"id":584,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":402,"src":"1876:1:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":586,"nodeType":"ExpressionStatement","src":"1876:3:2"},{"errorCall":{"arguments":[{"id":588,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":581,"src":"1912:1:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":587,"name":"CustomErrorWithUint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":424,"src":"1892:19:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":589,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1892:22:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":590,"nodeType":"RevertStatement","src":"1885:29:2"}]},"functionSelector":"73d2ea85","id":592,"implemented":true,"kind":"function","modifiers":[],"name":"revertWithCustomErrorWithUint","nameLocation":"1825:29:2","nodeType":"FunctionDefinition","parameters":{"id":582,"nodeType":"ParameterList","parameters":[{"constant":false,"id":581,"mutability":"mutable","name":"n","nameLocation":"1860:1:2","nodeType":"VariableDeclaration","scope":592,"src":"1855:6:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":580,"name":"uint","nodeType":"ElementaryTypeName","src":"1855:4:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1854:8:2"},"returnParameters":{"id":583,"nodeType":"ParameterList","parameters":[],"src":"1870:0:2"},"scope":688,"src":"1816:103:2","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":601,"nodeType":"Block","src":"1986:40:2","statements":[{"errorCall":{"arguments":[{"id":598,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":594,"src":"2019:1:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":597,"name":"CustomErrorWithUint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":424,"src":"1999:19:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":599,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1999:22:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":600,"nodeType":"RevertStatement","src":"1992:29:2"}]},"functionSelector":"7c3cb0af","id":602,"implemented":true,"kind":"function","modifiers":[],"name":"revertWithCustomErrorWithUintView","nameLocation":"1932:33:2","nodeType":"FunctionDefinition","parameters":{"id":595,"nodeType":"ParameterList","parameters":[{"constant":false,"id":594,"mutability":"mutable","name":"n","nameLocation":"1971:1:2","nodeType":"VariableDeclaration","scope":602,"src":"1966:6:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":593,"name":"uint","nodeType":"ElementaryTypeName","src":"1966:4:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1965:8:2"},"returnParameters":{"id":596,"nodeType":"ParameterList","parameters":[],"src":"1986:0:2"},"scope":688,"src":"1923:103:2","stateMutability":"pure","virtual":false,"visibility":"public"},{"body":{"id":614,"nodeType":"Block","src":"2082:48:2","statements":[{"expression":{"id":608,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"2088:3:2","subExpression":{"id":607,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":402,"src":"2088:1:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":609,"nodeType":"ExpressionStatement","src":"2088:3:2"},{"errorCall":{"arguments":[{"id":611,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":604,"src":"2123:1:2","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":610,"name":"CustomErrorWithInt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":420,"src":"2104:18:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_int256_$returns$__$","typeString":"function (int256) pure"}},"id":612,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2104:21:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":613,"nodeType":"RevertStatement","src":"2097:28:2"}]},"functionSelector":"8f933030","id":615,"implemented":true,"kind":"function","modifiers":[],"name":"revertWithCustomErrorWithInt","nameLocation":"2039:28:2","nodeType":"FunctionDefinition","parameters":{"id":605,"nodeType":"ParameterList","parameters":[{"constant":false,"id":604,"mutability":"mutable","name":"i","nameLocation":"2072:1:2","nodeType":"VariableDeclaration","scope":615,"src":"2068:5:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":603,"name":"int","nodeType":"ElementaryTypeName","src":"2068:3:2","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"2067:7:2"},"returnParameters":{"id":606,"nodeType":"ParameterList","parameters":[],"src":"2082:0:2"},"scope":688,"src":"2030:100:2","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":624,"nodeType":"Block","src":"2195:39:2","statements":[{"errorCall":{"arguments":[{"id":621,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":617,"src":"2227:1:2","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":620,"name":"CustomErrorWithInt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":420,"src":"2208:18:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_int256_$returns$__$","typeString":"function (int256) pure"}},"id":622,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2208:21:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":623,"nodeType":"RevertStatement","src":"2201:28:2"}]},"functionSelector":"47c56769","id":625,"implemented":true,"kind":"function","modifiers":[],"name":"revertWithCustomErrorWithIntView","nameLocation":"2143:32:2","nodeType":"FunctionDefinition","parameters":{"id":618,"nodeType":"ParameterList","parameters":[{"constant":false,"id":617,"mutability":"mutable","name":"i","nameLocation":"2180:1:2","nodeType":"VariableDeclaration","scope":625,"src":"2176:5:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":616,"name":"int","nodeType":"ElementaryTypeName","src":"2176:3:2","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"2175:7:2"},"returnParameters":{"id":619,"nodeType":"ParameterList","parameters":[],"src":"2195:0:2"},"scope":688,"src":"2134:100:2","stateMutability":"pure","virtual":false,"visibility":"public"},{"body":{"id":640,"nodeType":"Block","src":"2318:61:2","statements":[{"expression":{"id":633,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"2324:3:2","subExpression":{"id":632,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":402,"src":"2324:1:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":634,"nodeType":"ExpressionStatement","src":"2324:3:2"},{"errorCall":{"arguments":[{"id":636,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":627,"src":"2369:1:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":637,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":629,"src":"2372:1:2","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":635,"name":"CustomErrorWithUintAndString","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":430,"src":"2340:28:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_string_memory_ptr_$returns$__$","typeString":"function (uint256,string memory) pure"}},"id":638,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2340:34:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":639,"nodeType":"RevertStatement","src":"2333:41:2"}]},"functionSelector":"fe276a34","id":641,"implemented":true,"kind":"function","modifiers":[],"name":"revertWithCustomErrorWithUintAndString","nameLocation":"2247:38:2","nodeType":"FunctionDefinition","parameters":{"id":630,"nodeType":"ParameterList","parameters":[{"constant":false,"id":627,"mutability":"mutable","name":"n","nameLocation":"2291:1:2","nodeType":"VariableDeclaration","scope":641,"src":"2286:6:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":626,"name":"uint","nodeType":"ElementaryTypeName","src":"2286:4:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":629,"mutability":"mutable","name":"s","nameLocation":"2308:1:2","nodeType":"VariableDeclaration","scope":641,"src":"2294:15:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":628,"name":"string","nodeType":"ElementaryTypeName","src":"2294:6:2","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2285:25:2"},"returnParameters":{"id":631,"nodeType":"ParameterList","parameters":[],"src":"2318:0:2"},"scope":688,"src":"2238:141:2","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":653,"nodeType":"Block","src":"2472:52:2","statements":[{"errorCall":{"arguments":[{"id":649,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":643,"src":"2514:1:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":650,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":645,"src":"2517:1:2","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":648,"name":"CustomErrorWithUintAndString","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":430,"src":"2485:28:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_string_memory_ptr_$returns$__$","typeString":"function (uint256,string memory) pure"}},"id":651,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2485:34:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":652,"nodeType":"RevertStatement","src":"2478:41:2"}]},"functionSelector":"3ba4178b","id":654,"implemented":true,"kind":"function","modifiers":[],"name":"revertWithCustomErrorWithUintAndStringView","nameLocation":"2392:42:2","nodeType":"FunctionDefinition","parameters":{"id":646,"nodeType":"ParameterList","parameters":[{"constant":false,"id":643,"mutability":"mutable","name":"n","nameLocation":"2440:1:2","nodeType":"VariableDeclaration","scope":654,"src":"2435:6:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":642,"name":"uint","nodeType":"ElementaryTypeName","src":"2435:4:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":645,"mutability":"mutable","name":"s","nameLocation":"2457:1:2","nodeType":"VariableDeclaration","scope":654,"src":"2443:15:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":644,"name":"string","nodeType":"ElementaryTypeName","src":"2443:6:2","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2434:25:2"},"returnParameters":{"id":647,"nodeType":"ParameterList","parameters":[],"src":"2472:0:2"},"scope":688,"src":"2383:141:2","stateMutability":"pure","virtual":false,"visibility":"public"},{"body":{"id":671,"nodeType":"Block","src":"2590:58:2","statements":[{"expression":{"id":662,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"2596:3:2","subExpression":{"id":661,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":402,"src":"2596:1:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":663,"nodeType":"ExpressionStatement","src":"2596:3:2"},{"errorCall":{"arguments":[{"arguments":[{"id":666,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":656,"src":"2637:1:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":667,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":658,"src":"2640:1:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":665,"name":"Pair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":412,"src":"2632:4:2","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Pair_$412_storage_ptr_$","typeString":"type(struct Matchers.Pair storage pointer)"}},"id":668,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2632:10:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Pair_$412_memory_ptr","typeString":"struct Matchers.Pair memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Pair_$412_memory_ptr","typeString":"struct Matchers.Pair memory"}],"id":664,"name":"CustomErrorWithPair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":435,"src":"2612:19:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_struct$_Pair_$412_memory_ptr_$returns$__$","typeString":"function (struct Matchers.Pair memory) pure"}},"id":669,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2612:31:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":670,"nodeType":"RevertStatement","src":"2605:38:2"}]},"functionSelector":"e0a03812","id":672,"implemented":true,"kind":"function","modifiers":[],"name":"revertWithCustomErrorWithPair","nameLocation":"2537:29:2","nodeType":"FunctionDefinition","parameters":{"id":659,"nodeType":"ParameterList","parameters":[{"constant":false,"id":656,"mutability":"mutable","name":"a","nameLocation":"2572:1:2","nodeType":"VariableDeclaration","scope":672,"src":"2567:6:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":655,"name":"uint","nodeType":"ElementaryTypeName","src":"2567:4:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":658,"mutability":"mutable","name":"b","nameLocation":"2580:1:2","nodeType":"VariableDeclaration","scope":672,"src":"2575:6:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":657,"name":"uint","nodeType":"ElementaryTypeName","src":"2575:4:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2566:16:2"},"returnParameters":{"id":660,"nodeType":"ParameterList","parameters":[],"src":"2590:0:2"},"scope":688,"src":"2528:120:2","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":686,"nodeType":"Block","src":"2723:49:2","statements":[{"errorCall":{"arguments":[{"arguments":[{"id":681,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":674,"src":"2761:1:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":682,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":676,"src":"2764:1:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":680,"name":"Pair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":412,"src":"2756:4:2","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Pair_$412_storage_ptr_$","typeString":"type(struct Matchers.Pair storage pointer)"}},"id":683,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2756:10:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Pair_$412_memory_ptr","typeString":"struct Matchers.Pair memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Pair_$412_memory_ptr","typeString":"struct Matchers.Pair memory"}],"id":679,"name":"CustomErrorWithPair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":435,"src":"2736:19:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_struct$_Pair_$412_memory_ptr_$returns$__$","typeString":"function (struct Matchers.Pair memory) pure"}},"id":684,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2736:31:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":685,"nodeType":"RevertStatement","src":"2729:38:2"}]},"functionSelector":"1f542cf3","id":687,"implemented":true,"kind":"function","modifiers":[],"name":"revertWithCustomErrorWithPairView","nameLocation":"2661:33:2","nodeType":"FunctionDefinition","parameters":{"id":677,"nodeType":"ParameterList","parameters":[{"constant":false,"id":674,"mutability":"mutable","name":"a","nameLocation":"2700:1:2","nodeType":"VariableDeclaration","scope":687,"src":"2695:6:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":673,"name":"uint","nodeType":"ElementaryTypeName","src":"2695:4:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":676,"mutability":"mutable","name":"b","nameLocation":"2708:1:2","nodeType":"VariableDeclaration","scope":687,"src":"2703:6:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":675,"name":"uint","nodeType":"ElementaryTypeName","src":"2703:4:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2694:16:2"},"returnParameters":{"id":678,"nodeType":"ParameterList","parameters":[],"src":"2723:0:2"},"scope":688,"src":"2652:120:2","stateMutability":"pure","virtual":false,"visibility":"public"}],"scope":711,"src":"65:2709:2","usedErrors":[414,416,420,424,430,435]},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":710,"linearizedBaseContracts":[710],"name":"AnotherMatchersContract","nameLocation":"2785:23:2","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":690,"mutability":"mutable","name":"x","nameLocation":"2818:1:2","nodeType":"VariableDeclaration","scope":710,"src":"2813:6:2","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":689,"name":"uint","nodeType":"ElementaryTypeName","src":"2813:4:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"id":692,"name":"YetAnotherCustomError","nameLocation":"2830:21:2","nodeType":"ErrorDefinition","parameters":{"id":691,"nodeType":"ParameterList","parameters":[],"src":"2851:2:2"},"src":"2824:30:2"},{"body":{"id":701,"nodeType":"Block","src":"2908:50:2","statements":[{"expression":{"id":696,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"2914:3:2","subExpression":{"id":695,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":690,"src":"2914:1:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":697,"nodeType":"ExpressionStatement","src":"2914:3:2"},{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":698,"name":"YetAnotherCustomError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":692,"src":"2930:21:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":699,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2930:23:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":700,"nodeType":"RevertStatement","src":"2923:30:2"}]},"functionSelector":"4b2bd7e9","id":702,"implemented":true,"kind":"function","modifiers":[],"name":"revertWithYetAnotherCustomError","nameLocation":"2867:31:2","nodeType":"FunctionDefinition","parameters":{"id":693,"nodeType":"ParameterList","parameters":[],"src":"2898:2:2"},"returnParameters":{"id":694,"nodeType":"ParameterList","parameters":[],"src":"2908:0:2"},"scope":710,"src":"2858:100:2","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":708,"nodeType":"Block","src":"3021:41:2","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":705,"name":"YetAnotherCustomError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":692,"src":"3034:21:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":706,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3034:23:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":707,"nodeType":"RevertStatement","src":"3027:30:2"}]},"functionSelector":"40d83b24","id":709,"implemented":true,"kind":"function","modifiers":[],"name":"revertWithYetAnotherCustomErrorView","nameLocation":"2971:35:2","nodeType":"FunctionDefinition","parameters":{"id":703,"nodeType":"ParameterList","parameters":[],"src":"3006:2:2"},"returnParameters":{"id":704,"nodeType":"ParameterList","parameters":[],"src":"3021:0:2"},"scope":710,"src":"2962:100:2","stateMutability":"pure","virtual":false,"visibility":"public"}],"scope":711,"src":"2776:288:2","usedErrors":[692]}],"src":"40:3025:2"},"id":2},"contracts/Token.sol":{"ast":{"absolutePath":"contracts/Token.sol","exportedSymbols":{"MockToken":[873],"NotAToken":[874],"TokenWithOnlyName":[864],"TokenWithoutNameNorSymbol":[858]},"id":875,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":712,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"32:23:3"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":858,"linearizedBaseContracts":[858],"name":"TokenWithoutNameNorSymbol","nameLocation":"66:25:3","nodeType":"ContractDefinition","nodes":[{"constant":false,"functionSelector":"313ce567","id":715,"mutability":"mutable","name":"decimals","nameLocation":"108:8:3","nodeType":"VariableDeclaration","scope":858,"src":"96:24:3","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":713,"name":"uint","nodeType":"ElementaryTypeName","src":"96:4:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"31","id":714,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"119:1:3","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"visibility":"public"},{"constant":false,"functionSelector":"18160ddd","id":717,"mutability":"mutable","name":"totalSupply","nameLocation":"137:11:3","nodeType":"VariableDeclaration","scope":858,"src":"125:23:3","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":716,"name":"uint","nodeType":"ElementaryTypeName","src":"125:4:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"constant":false,"functionSelector":"70a08231","id":721,"mutability":"mutable","name":"balanceOf","nameLocation":"184:9:3","nodeType":"VariableDeclaration","scope":858,"src":"152:41:3","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":720,"keyType":{"id":718,"name":"address","nodeType":"ElementaryTypeName","src":"160:7:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"152:24:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueType":{"id":719,"name":"uint","nodeType":"ElementaryTypeName","src":"171:4:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"public"},{"constant":false,"id":727,"mutability":"mutable","name":"allowances","nameLocation":"242:10:3","nodeType":"VariableDeclaration","scope":858,"src":"197:55:3","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"typeName":{"id":726,"keyType":{"id":722,"name":"address","nodeType":"ElementaryTypeName","src":"205:7:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"197:44:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"valueType":{"id":725,"keyType":{"id":723,"name":"address","nodeType":"ElementaryTypeName","src":"224:7:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"216:24:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueType":{"id":724,"name":"uint","nodeType":"ElementaryTypeName","src":"235:4:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}}},"visibility":"internal"},{"body":{"id":741,"nodeType":"Block","src":"272:79:3","statements":[{"expression":{"id":732,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":730,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":717,"src":"278:11:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"315f3030305f3030305f303030","id":731,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"292:13:3","typeDescriptions":{"typeIdentifier":"t_rational_1000000000_by_1","typeString":"int_const 1000000000"},"value":"1_000_000_000"},"src":"278:27:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":733,"nodeType":"ExpressionStatement","src":"278:27:3"},{"expression":{"id":739,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":734,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":721,"src":"311:9:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":737,"indexExpression":{"expression":{"id":735,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"321:3:3","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":736,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"321:10:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"311:21:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":738,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":717,"src":"335:11:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"311:35:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":740,"nodeType":"ExpressionStatement","src":"311:35:3"}]},"id":742,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":728,"nodeType":"ParameterList","parameters":[],"src":"269:2:3"},"returnParameters":{"id":729,"nodeType":"ParameterList","parameters":[],"src":"272:0:3"},"scope":858,"src":"257:94:3","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":773,"nodeType":"Block","src":"419:141:3","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":754,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":752,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":746,"src":"433:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":753,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"441:1:3","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"433:9:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5472616e736665727265642076616c7565206973207a65726f","id":755,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"444:27:3","typeDescriptions":{"typeIdentifier":"t_stringliteral_4ca3cd75a1831a94a24913bfd2c9b9d35acbb11ac3447f65bb0682cf14f63f5c","typeString":"literal_string \"Transferred value is zero\""},"value":"Transferred value is zero"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_4ca3cd75a1831a94a24913bfd2c9b9d35acbb11ac3447f65bb0682cf14f63f5c","typeString":"literal_string \"Transferred value is zero\""}],"id":751,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"425:7:3","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":756,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"425:47:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":757,"nodeType":"ExpressionStatement","src":"425:47:3"},{"expression":{"id":763,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":758,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":721,"src":"479:9:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":761,"indexExpression":{"expression":{"id":759,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"489:3:3","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":760,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"489:10:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"479:21:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":762,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":746,"src":"504:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"479:30:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":764,"nodeType":"ExpressionStatement","src":"479:30:3"},{"expression":{"id":769,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":765,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":721,"src":"515:9:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":767,"indexExpression":{"id":766,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":744,"src":"525:2:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"515:13:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":768,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":746,"src":"532:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"515:22:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":770,"nodeType":"ExpressionStatement","src":"515:22:3"},{"expression":{"hexValue":"74727565","id":771,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"551:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":750,"id":772,"nodeType":"Return","src":"544:11:3"}]},"functionSelector":"a9059cbb","id":774,"implemented":true,"kind":"function","modifiers":[],"name":"transfer","nameLocation":"364:8:3","nodeType":"FunctionDefinition","parameters":{"id":747,"nodeType":"ParameterList","parameters":[{"constant":false,"id":744,"mutability":"mutable","name":"to","nameLocation":"381:2:3","nodeType":"VariableDeclaration","scope":774,"src":"373:10:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":743,"name":"address","nodeType":"ElementaryTypeName","src":"373:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":746,"mutability":"mutable","name":"value","nameLocation":"390:5:3","nodeType":"VariableDeclaration","scope":774,"src":"385:10:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":745,"name":"uint","nodeType":"ElementaryTypeName","src":"385:4:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"372:24:3"},"returnParameters":{"id":750,"nodeType":"ParameterList","parameters":[{"constant":false,"id":749,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":774,"src":"413:4:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":748,"name":"bool","nodeType":"ElementaryTypeName","src":"413:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"412:6:3"},"scope":858,"src":"355:205:3","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":789,"nodeType":"Block","src":"655:44:3","statements":[{"expression":{"baseExpression":{"baseExpression":{"id":783,"name":"allowances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":727,"src":"668:10:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":785,"indexExpression":{"id":784,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":776,"src":"679:5:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"668:17:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":787,"indexExpression":{"id":786,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":778,"src":"686:7:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"668:26:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":782,"id":788,"nodeType":"Return","src":"661:33:3"}]},"functionSelector":"dd62ed3e","id":790,"implemented":true,"kind":"function","modifiers":[],"name":"allowance","nameLocation":"573:9:3","nodeType":"FunctionDefinition","parameters":{"id":779,"nodeType":"ParameterList","parameters":[{"constant":false,"id":776,"mutability":"mutable","name":"owner","nameLocation":"591:5:3","nodeType":"VariableDeclaration","scope":790,"src":"583:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":775,"name":"address","nodeType":"ElementaryTypeName","src":"583:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":778,"mutability":"mutable","name":"spender","nameLocation":"606:7:3","nodeType":"VariableDeclaration","scope":790,"src":"598:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":777,"name":"address","nodeType":"ElementaryTypeName","src":"598:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"582:32:3"},"returnParameters":{"id":782,"nodeType":"ParameterList","parameters":[{"constant":false,"id":781,"mutability":"mutable","name":"remaining","nameLocation":"644:9:3","nodeType":"VariableDeclaration","scope":790,"src":"636:17:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":780,"name":"uint256","nodeType":"ElementaryTypeName","src":"636:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"635:19:3"},"scope":858,"src":"564:135:3","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":810,"nodeType":"Block","src":"782:67:3","statements":[{"expression":{"id":806,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":799,"name":"allowances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":727,"src":"788:10:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":803,"indexExpression":{"expression":{"id":800,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"799:3:3","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":801,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"799:10:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"788:22:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":804,"indexExpression":{"id":802,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":792,"src":"811:7:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"788:31:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":805,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":794,"src":"822:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"788:39:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":807,"nodeType":"ExpressionStatement","src":"788:39:3"},{"expression":{"hexValue":"74727565","id":808,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"840:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":798,"id":809,"nodeType":"Return","src":"833:11:3"}]},"functionSelector":"095ea7b3","id":811,"implemented":true,"kind":"function","modifiers":[],"name":"approve","nameLocation":"712:7:3","nodeType":"FunctionDefinition","parameters":{"id":795,"nodeType":"ParameterList","parameters":[{"constant":false,"id":792,"mutability":"mutable","name":"spender","nameLocation":"728:7:3","nodeType":"VariableDeclaration","scope":811,"src":"720:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":791,"name":"address","nodeType":"ElementaryTypeName","src":"720:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":794,"mutability":"mutable","name":"value","nameLocation":"745:5:3","nodeType":"VariableDeclaration","scope":811,"src":"737:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":793,"name":"uint256","nodeType":"ElementaryTypeName","src":"737:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"719:32:3"},"returnParameters":{"id":798,"nodeType":"ParameterList","parameters":[{"constant":false,"id":797,"mutability":"mutable","name":"success","nameLocation":"773:7:3","nodeType":"VariableDeclaration","scope":811,"src":"768:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":796,"name":"bool","nodeType":"ElementaryTypeName","src":"768:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"767:14:3"},"scope":858,"src":"703:146:3","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":856,"nodeType":"Block","src":"938:202:3","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":829,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":824,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":813,"src":"962:4:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":825,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"968:3:3","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":826,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"968:10:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":823,"name":"allowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":790,"src":"952:9:3","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view returns (uint256)"}},"id":827,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"952:27:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":828,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":817,"src":"983:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"952:36:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e73756666696369656e7420616c6c6f77616e6365","id":830,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"990:24:3","typeDescriptions":{"typeIdentifier":"t_stringliteral_45e3d26e36c3151c7f92a1eee9add9658cbb8e14605ee2452ec007389b9744bc","typeString":"literal_string \"Insufficient allowance\""},"value":"Insufficient allowance"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_45e3d26e36c3151c7f92a1eee9add9658cbb8e14605ee2452ec007389b9744bc","typeString":"literal_string \"Insufficient allowance\""}],"id":822,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"944:7:3","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":831,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"944:71:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":832,"nodeType":"ExpressionStatement","src":"944:71:3"},{"expression":{"id":840,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":833,"name":"allowances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":727,"src":"1022:10:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":837,"indexExpression":{"id":834,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":813,"src":"1033:4:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1022:16:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":838,"indexExpression":{"expression":{"id":835,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1039:3:3","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":836,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1039:10:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1022:28:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":839,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":817,"src":"1054:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1022:37:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":841,"nodeType":"ExpressionStatement","src":"1022:37:3"},{"expression":{"id":846,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":842,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":721,"src":"1065:9:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":844,"indexExpression":{"id":843,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":813,"src":"1075:4:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1065:15:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":845,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":817,"src":"1084:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1065:24:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":847,"nodeType":"ExpressionStatement","src":"1065:24:3"},{"expression":{"id":852,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":848,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":721,"src":"1095:9:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":850,"indexExpression":{"id":849,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":815,"src":"1105:2:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1095:13:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":851,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":817,"src":"1112:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1095:22:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":853,"nodeType":"ExpressionStatement","src":"1095:22:3"},{"expression":{"hexValue":"74727565","id":854,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1131:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":821,"id":855,"nodeType":"Return","src":"1124:11:3"}]},"functionSelector":"23b872dd","id":857,"implemented":true,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"862:12:3","nodeType":"FunctionDefinition","parameters":{"id":818,"nodeType":"ParameterList","parameters":[{"constant":false,"id":813,"mutability":"mutable","name":"from","nameLocation":"883:4:3","nodeType":"VariableDeclaration","scope":857,"src":"875:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":812,"name":"address","nodeType":"ElementaryTypeName","src":"875:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":815,"mutability":"mutable","name":"to","nameLocation":"897:2:3","nodeType":"VariableDeclaration","scope":857,"src":"889:10:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":814,"name":"address","nodeType":"ElementaryTypeName","src":"889:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":817,"mutability":"mutable","name":"value","nameLocation":"909:5:3","nodeType":"VariableDeclaration","scope":857,"src":"901:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":816,"name":"uint256","nodeType":"ElementaryTypeName","src":"901:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"874:41:3"},"returnParameters":{"id":821,"nodeType":"ParameterList","parameters":[{"constant":false,"id":820,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":857,"src":"932:4:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":819,"name":"bool","nodeType":"ElementaryTypeName","src":"932:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"931:6:3"},"scope":858,"src":"853:287:3","stateMutability":"nonpayable","virtual":false,"visibility":"public"}],"scope":875,"src":"57:1085:3","usedErrors":[]},{"abstract":false,"baseContracts":[{"baseName":{"id":859,"name":"TokenWithoutNameNorSymbol","nodeType":"IdentifierPath","referencedDeclaration":858,"src":"1174:25:3"},"id":860,"nodeType":"InheritanceSpecifier","src":"1174:25:3"}],"contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":864,"linearizedBaseContracts":[864,858],"name":"TokenWithOnlyName","nameLocation":"1153:17:3","nodeType":"ContractDefinition","nodes":[{"constant":false,"functionSelector":"06fdde03","id":863,"mutability":"mutable","name":"name","nameLocation":"1218:4:3","nodeType":"VariableDeclaration","scope":864,"src":"1204:32:3","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":861,"name":"string","nodeType":"ElementaryTypeName","src":"1204:6:3","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"4d6f636b546f6b656e","id":862,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1225:11:3","typeDescriptions":{"typeIdentifier":"t_stringliteral_59d91acf1a517d81ad15edcf2fd578e448883bcd506756a542295cb8c1c1be7e","typeString":"literal_string \"MockToken\""},"value":"MockToken"},"visibility":"public"}],"scope":875,"src":"1144:95:3","usedErrors":[]},{"abstract":false,"baseContracts":[{"baseName":{"id":865,"name":"TokenWithoutNameNorSymbol","nodeType":"IdentifierPath","referencedDeclaration":858,"src":"1263:25:3"},"id":866,"nodeType":"InheritanceSpecifier","src":"1263:25:3"}],"contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":873,"linearizedBaseContracts":[873,858],"name":"MockToken","nameLocation":"1250:9:3","nodeType":"ContractDefinition","nodes":[{"constant":false,"functionSelector":"06fdde03","id":869,"mutability":"mutable","name":"name","nameLocation":"1307:4:3","nodeType":"VariableDeclaration","scope":873,"src":"1293:32:3","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":867,"name":"string","nodeType":"ElementaryTypeName","src":"1293:6:3","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"4d6f636b546f6b656e","id":868,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1314:11:3","typeDescriptions":{"typeIdentifier":"t_stringliteral_59d91acf1a517d81ad15edcf2fd578e448883bcd506756a542295cb8c1c1be7e","typeString":"literal_string \"MockToken\""},"value":"MockToken"},"visibility":"public"},{"constant":false,"functionSelector":"95d89b41","id":872,"mutability":"mutable","name":"symbol","nameLocation":"1343:6:3","nodeType":"VariableDeclaration","scope":873,"src":"1329:28:3","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":870,"name":"string","nodeType":"ElementaryTypeName","src":"1329:6:3","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"4d434b","id":871,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1352:5:3","typeDescriptions":{"typeIdentifier":"t_stringliteral_9c3aa7d11ecb9affb5001de98d930d23db7380c6f51732a92986229c98447bc4","typeString":"literal_string \"MCK\""},"value":"MCK"},"visibility":"public"}],"scope":875,"src":"1241:119:3","usedErrors":[]},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":874,"linearizedBaseContracts":[874],"name":"NotAToken","nameLocation":"1371:9:3","nodeType":"ContractDefinition","nodes":[],"scope":875,"src":"1362:21:3","usedErrors":[]}],"src":"32:1352:3"},"id":3}},"contracts":{"contracts/ChangeEtherBalance.sol":{"ChangeEtherBalance":{"abi":[{"inputs":[],"name":"returnHalf","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"transferTo","outputs":[],"stateMutability":"payable","type":"function"},{"stateMutability":"payable","type":"receive"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"608060405234801561001057600080fd5b50610225806100206000396000f3fe60806040526004361061002d5760003560e01c8063a03fa7e314610039578063b019946e1461005557610034565b3661003457005b600080fd5b610053600480360381019061004e9190610113565b61005f565b005b61005d6100a9565b005b8073ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f193505050501580156100a5573d6000803e3d6000fd5b5050565b3373ffffffffffffffffffffffffffffffffffffffff166108fc6002346100d0919061013c565b9081150290604051600060405180830381858888f193505050501580156100fb573d6000803e3d6000fd5b50565b60008135905061010d816101d8565b92915050565b60006020828403121561012557600080fd5b6000610133848285016100fe565b91505092915050565b60006101478261019f565b91506101528361019f565b925082610162576101616101a9565b5b828204905092915050565b60006101788261017f565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6101e18161016d565b81146101ec57600080fd5b5056fea26469706673582212208e553461507bae731d37afa0d5a2a7dae74de7a6eab682733425a78884ed60b364736f6c63430008040033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x225 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x2D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xA03FA7E3 EQ PUSH2 0x39 JUMPI DUP1 PUSH4 0xB019946E EQ PUSH2 0x55 JUMPI PUSH2 0x34 JUMP JUMPDEST CALLDATASIZE PUSH2 0x34 JUMPI STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x53 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x4E SWAP2 SWAP1 PUSH2 0x113 JUMP JUMPDEST PUSH2 0x5F JUMP JUMPDEST STOP JUMPDEST PUSH2 0x5D PUSH2 0xA9 JUMP JUMPDEST STOP JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8FC CALLVALUE 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 0xA5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8FC PUSH1 0x2 CALLVALUE PUSH2 0xD0 SWAP2 SWAP1 PUSH2 0x13C JUMP JUMPDEST 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 0xFB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x10D DUP2 PUSH2 0x1D8 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x125 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x133 DUP5 DUP3 DUP6 ADD PUSH2 0xFE JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x147 DUP3 PUSH2 0x19F JUMP JUMPDEST SWAP2 POP PUSH2 0x152 DUP4 PUSH2 0x19F JUMP JUMPDEST SWAP3 POP DUP3 PUSH2 0x162 JUMPI PUSH2 0x161 PUSH2 0x1A9 JUMP JUMPDEST JUMPDEST DUP3 DUP3 DIV SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x178 DUP3 PUSH2 0x17F 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 PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH2 0x1E1 DUP2 PUSH2 0x16D JUMP JUMPDEST DUP2 EQ PUSH2 0x1EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP15 SSTORE CALLVALUE PUSH2 0x507B 0xAE PUSH20 0x1D37AFA0D5A2A7DAE74DE7A6EAB682733425A788 DUP5 0xED PUSH1 0xB3 PUSH5 0x736F6C6343 STOP ADDMOD DIV STOP CALLER ","sourceMap":"57:255:0:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:1425:4","statements":[{"body":{"nodeType":"YulBlock","src":"59:87:4","statements":[{"nodeType":"YulAssignment","src":"69:29:4","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"91:6:4"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"78:12:4"},"nodeType":"YulFunctionCall","src":"78:20:4"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"69:5:4"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"134:5:4"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"107:26:4"},"nodeType":"YulFunctionCall","src":"107:33:4"},"nodeType":"YulExpressionStatement","src":"107:33:4"}]},"name":"abi_decode_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"37:6:4","type":""},{"name":"end","nodeType":"YulTypedName","src":"45:3:4","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"53:5:4","type":""}],"src":"7:139:4"},{"body":{"nodeType":"YulBlock","src":"218:196:4","statements":[{"body":{"nodeType":"YulBlock","src":"264:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"273:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"276:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"266:6:4"},"nodeType":"YulFunctionCall","src":"266:12:4"},"nodeType":"YulExpressionStatement","src":"266:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"239:7:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"248:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"235:3:4"},"nodeType":"YulFunctionCall","src":"235:23:4"},{"kind":"number","nodeType":"YulLiteral","src":"260:2:4","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"231:3:4"},"nodeType":"YulFunctionCall","src":"231:32:4"},"nodeType":"YulIf","src":"228:2:4"},{"nodeType":"YulBlock","src":"290:117:4","statements":[{"nodeType":"YulVariableDeclaration","src":"305:15:4","value":{"kind":"number","nodeType":"YulLiteral","src":"319:1:4","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"309:6:4","type":""}]},{"nodeType":"YulAssignment","src":"334:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"369:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"380:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"365:3:4"},"nodeType":"YulFunctionCall","src":"365:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"389:7:4"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"344:20:4"},"nodeType":"YulFunctionCall","src":"344:53:4"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"334:6:4"}]}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"188:9:4","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"199:7:4","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"211:6:4","type":""}],"src":"152:262:4"},{"body":{"nodeType":"YulBlock","src":"462:143:4","statements":[{"nodeType":"YulAssignment","src":"472:25:4","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"495:1:4"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"477:17:4"},"nodeType":"YulFunctionCall","src":"477:20:4"},"variableNames":[{"name":"x","nodeType":"YulIdentifier","src":"472:1:4"}]},{"nodeType":"YulAssignment","src":"506:25:4","value":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"529:1:4"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"511:17:4"},"nodeType":"YulFunctionCall","src":"511:20:4"},"variableNames":[{"name":"y","nodeType":"YulIdentifier","src":"506:1:4"}]},{"body":{"nodeType":"YulBlock","src":"553:22:4","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x12","nodeType":"YulIdentifier","src":"555:16:4"},"nodeType":"YulFunctionCall","src":"555:18:4"},"nodeType":"YulExpressionStatement","src":"555:18:4"}]},"condition":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"550:1:4"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"543:6:4"},"nodeType":"YulFunctionCall","src":"543:9:4"},"nodeType":"YulIf","src":"540:2:4"},{"nodeType":"YulAssignment","src":"585:14:4","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"594:1:4"},{"name":"y","nodeType":"YulIdentifier","src":"597:1:4"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"590:3:4"},"nodeType":"YulFunctionCall","src":"590:9:4"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"585:1:4"}]}]},"name":"checked_div_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"451:1:4","type":""},{"name":"y","nodeType":"YulTypedName","src":"454:1:4","type":""}],"returnVariables":[{"name":"r","nodeType":"YulTypedName","src":"460:1:4","type":""}],"src":"420:185:4"},{"body":{"nodeType":"YulBlock","src":"656:51:4","statements":[{"nodeType":"YulAssignment","src":"666:35:4","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"695:5:4"}],"functionName":{"name":"cleanup_t_uint160","nodeType":"YulIdentifier","src":"677:17:4"},"nodeType":"YulFunctionCall","src":"677:24:4"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"666:7:4"}]}]},"name":"cleanup_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"638:5:4","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"648:7:4","type":""}],"src":"611:96:4"},{"body":{"nodeType":"YulBlock","src":"758:81:4","statements":[{"nodeType":"YulAssignment","src":"768:65:4","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"783:5:4"},{"kind":"number","nodeType":"YulLiteral","src":"790:42:4","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"779:3:4"},"nodeType":"YulFunctionCall","src":"779:54:4"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"768:7:4"}]}]},"name":"cleanup_t_uint160","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"740:5:4","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"750:7:4","type":""}],"src":"713:126:4"},{"body":{"nodeType":"YulBlock","src":"890:32:4","statements":[{"nodeType":"YulAssignment","src":"900:16:4","value":{"name":"value","nodeType":"YulIdentifier","src":"911:5:4"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"900:7:4"}]}]},"name":"cleanup_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"872:5:4","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"882:7:4","type":""}],"src":"845:77:4"},{"body":{"nodeType":"YulBlock","src":"956:152:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"973:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"976:77:4","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"966:6:4"},"nodeType":"YulFunctionCall","src":"966:88:4"},"nodeType":"YulExpressionStatement","src":"966:88:4"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1070:1:4","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"1073:4:4","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1063:6:4"},"nodeType":"YulFunctionCall","src":"1063:15:4"},"nodeType":"YulExpressionStatement","src":"1063:15:4"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1094:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1097:4:4","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1087:6:4"},"nodeType":"YulFunctionCall","src":"1087:15:4"},"nodeType":"YulExpressionStatement","src":"1087:15:4"}]},"name":"panic_error_0x11","nodeType":"YulFunctionDefinition","src":"928:180:4"},{"body":{"nodeType":"YulBlock","src":"1142:152:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1159:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1162:77:4","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1152:6:4"},"nodeType":"YulFunctionCall","src":"1152:88:4"},"nodeType":"YulExpressionStatement","src":"1152:88:4"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1256:1:4","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"1259:4:4","type":"","value":"0x12"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1249:6:4"},"nodeType":"YulFunctionCall","src":"1249:15:4"},"nodeType":"YulExpressionStatement","src":"1249:15:4"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1280:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1283:4:4","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1273:6:4"},"nodeType":"YulFunctionCall","src":"1273:15:4"},"nodeType":"YulExpressionStatement","src":"1273:15:4"}]},"name":"panic_error_0x12","nodeType":"YulFunctionDefinition","src":"1114:180:4"},{"body":{"nodeType":"YulBlock","src":"1343:79:4","statements":[{"body":{"nodeType":"YulBlock","src":"1400:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1409:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1412:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1402:6:4"},"nodeType":"YulFunctionCall","src":"1402:12:4"},"nodeType":"YulExpressionStatement","src":"1402:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1366:5:4"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1391:5:4"}],"functionName":{"name":"cleanup_t_address","nodeType":"YulIdentifier","src":"1373:17:4"},"nodeType":"YulFunctionCall","src":"1373:24:4"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1363:2:4"},"nodeType":"YulFunctionCall","src":"1363:35:4"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1356:6:4"},"nodeType":"YulFunctionCall","src":"1356:43:4"},"nodeType":"YulIf","src":"1353:2:4"}]},"name":"validator_revert_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1336:5:4","type":""}],"src":"1300:122:4"}]},"contents":"{\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_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 checked_div_t_uint256(x, y) -> r {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n if iszero(y) { panic_error_0x12() }\n\n r := div(x, y)\n }\n\n function cleanup_t_address(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 panic_error_0x11() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n\n function panic_error_0x12() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x12)\n revert(0, 0x24)\n }\n\n function validator_revert_t_address(value) {\n if iszero(eq(value, cleanup_t_address(value))) { revert(0, 0) }\n }\n\n}\n","id":4,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"60806040526004361061002d5760003560e01c8063a03fa7e314610039578063b019946e1461005557610034565b3661003457005b600080fd5b610053600480360381019061004e9190610113565b61005f565b005b61005d6100a9565b005b8073ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f193505050501580156100a5573d6000803e3d6000fd5b5050565b3373ffffffffffffffffffffffffffffffffffffffff166108fc6002346100d0919061013c565b9081150290604051600060405180830381858888f193505050501580156100fb573d6000803e3d6000fd5b50565b60008135905061010d816101d8565b92915050565b60006020828403121561012557600080fd5b6000610133848285016100fe565b91505092915050565b60006101478261019f565b91506101528361019f565b925082610162576101616101a9565b5b828204905092915050565b60006101788261017f565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6101e18161016d565b81146101ec57600080fd5b5056fea26469706673582212208e553461507bae731d37afa0d5a2a7dae74de7a6eab682733425a78884ed60b364736f6c63430008040033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x2D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xA03FA7E3 EQ PUSH2 0x39 JUMPI DUP1 PUSH4 0xB019946E EQ PUSH2 0x55 JUMPI PUSH2 0x34 JUMP JUMPDEST CALLDATASIZE PUSH2 0x34 JUMPI STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x53 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x4E SWAP2 SWAP1 PUSH2 0x113 JUMP JUMPDEST PUSH2 0x5F JUMP JUMPDEST STOP JUMPDEST PUSH2 0x5D PUSH2 0xA9 JUMP JUMPDEST STOP JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8FC CALLVALUE 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 0xA5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8FC PUSH1 0x2 CALLVALUE PUSH2 0xD0 SWAP2 SWAP1 PUSH2 0x13C JUMP JUMPDEST 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 0xFB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x10D DUP2 PUSH2 0x1D8 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x125 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x133 DUP5 DUP3 DUP6 ADD PUSH2 0xFE JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x147 DUP3 PUSH2 0x19F JUMP JUMPDEST SWAP2 POP PUSH2 0x152 DUP4 PUSH2 0x19F JUMP JUMPDEST SWAP3 POP DUP3 PUSH2 0x162 JUMPI PUSH2 0x161 PUSH2 0x1A9 JUMP JUMPDEST JUMPDEST DUP3 DUP3 DIV SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x178 DUP3 PUSH2 0x17F 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 PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH2 0x1E1 DUP2 PUSH2 0x16D JUMP JUMPDEST DUP2 EQ PUSH2 0x1EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP15 SSTORE CALLVALUE PUSH2 0x507B 0xAE PUSH20 0x1D37AFA0D5A2A7DAE74DE7A6EAB682733425A788 DUP5 0xED PUSH1 0xB3 PUSH5 0x736F6C6343 STOP ADDMOD DIV STOP CALLER ","sourceMap":"57:255:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;184:93;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;89:91;;;:::i;:::-;;184:93;247:4;239:22;;:33;262:9;239:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;184:93;:::o;89:91::-;140:10;132:28;;:43;173:1;161:9;:13;;;;:::i;:::-;132:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;89:91::o;7:139:4:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:262::-;211:6;260:2;248:9;239:7;235:23;231:32;228:2;;;276:1;273;266:12;228:2;319:1;344:53;389:7;380:6;369:9;365:22;344:53;:::i;:::-;334:63;;290:117;218:196;;;;:::o;420:185::-;460:1;477:20;495:1;477:20;:::i;:::-;472:25;;511:20;529:1;511:20;:::i;:::-;506:25;;550:1;540:2;;555:18;;:::i;:::-;540:2;597:1;594;590:9;585:14;;462:143;;;;:::o;611:96::-;648:7;677:24;695:5;677:24;:::i;:::-;666:35;;656:51;;;:::o;713:126::-;750:7;790:42;783:5;779:54;768:65;;758:81;;;:::o;845:77::-;882:7;911:5;900:16;;890:32;;;:::o;1114:180::-;1162:77;1159:1;1152:88;1259:4;1256:1;1249:15;1283:4;1280:1;1273:15;1300:122;1373:24;1391:5;1373:24;:::i;:::-;1366:5;1363:35;1353:2;;1412:1;1409;1402:12;1353:2;1343:79;:::o"},"methodIdentifiers":{"returnHalf()":"b019946e","transferTo(address)":"a03fa7e3"}},"metadata":"{\"compiler\":{\"version\":\"0.8.4+commit.c7e474f2\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"returnHalf\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"transferTo\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/ChangeEtherBalance.sol\":\"ChangeEtherBalance\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/ChangeEtherBalance.sol\":{\"keccak256\":\"0x9c266d442b9dd1fdb8311deec6e6dc9b59612eee5279091d54a006779b1db3f0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://533b87dc323c18ae4775141b46443e8bce865632e9af58eee3b044cfb37f9ef7\",\"dweb:/ipfs/QmbUkSPQDMQ1jEt6n3wwNK9s7BrQhNuy2iYLM4df36AWma\"]}},\"version\":1}"}},"contracts/Events.sol":{"AnotherContract":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"u","type":"uint256"}],"name":"WithUintArg","type":"event"},{"inputs":[{"internalType":"uint256","name":"u","type":"uint256"}],"name":"emitUint","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"608060405234801561001057600080fd5b50610130806100206000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c80639194024414602d575b600080fd5b60436004803603810190603f91906090565b6045565b005b7f97535d4b4270d3f1a499c85ae918ba6798cbdcc83a26529331a25dcd2194cfce816040516072919060c3565b60405180910390a150565b600081359050608a8160e6565b92915050565b60006020828403121560a157600080fd5b600060ad84828501607d565b91505092915050565b60bd8160dc565b82525050565b600060208201905060d6600083018460b6565b92915050565b6000819050919050565b60ed8160dc565b811460f757600080fd5b5056fea264697066735822122083cb9b1ec00d6d1ec78d28771d3bf4778c5ba00b0532a2448d42cbab653355a064736f6c63430008040033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x130 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x28 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x91940244 EQ PUSH1 0x2D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x43 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH1 0x3F SWAP2 SWAP1 PUSH1 0x90 JUMP JUMPDEST PUSH1 0x45 JUMP JUMPDEST STOP JUMPDEST PUSH32 0x97535D4B4270D3F1A499C85AE918BA6798CBDCC83A26529331A25DCD2194CFCE DUP2 PUSH1 0x40 MLOAD PUSH1 0x72 SWAP2 SWAP1 PUSH1 0xC3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH1 0x8A DUP2 PUSH1 0xE6 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH1 0xA1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0xAD DUP5 DUP3 DUP6 ADD PUSH1 0x7D JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0xBD DUP2 PUSH1 0xDC JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH1 0xD6 PUSH1 0x0 DUP4 ADD DUP5 PUSH1 0xB6 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0xED DUP2 PUSH1 0xDC JUMP JUMPDEST DUP2 EQ PUSH1 0xF7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP4 0xCB SWAP12 0x1E 0xC0 0xD PUSH14 0x1EC78D28771D3BF4778C5BA00B05 ORIGIN LOG2 DIFFICULTY DUP14 TIMESTAMP 0xCB 0xAB PUSH6 0x3355A064736F PUSH13 0x63430008040033000000000000 ","sourceMap":"2530:124:1:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:980:4","statements":[{"body":{"nodeType":"YulBlock","src":"59:87:4","statements":[{"nodeType":"YulAssignment","src":"69:29:4","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"91:6:4"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"78:12:4"},"nodeType":"YulFunctionCall","src":"78:20:4"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"69:5:4"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"134:5:4"}],"functionName":{"name":"validator_revert_t_uint256","nodeType":"YulIdentifier","src":"107:26:4"},"nodeType":"YulFunctionCall","src":"107:33:4"},"nodeType":"YulExpressionStatement","src":"107:33:4"}]},"name":"abi_decode_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"37:6:4","type":""},{"name":"end","nodeType":"YulTypedName","src":"45:3:4","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"53:5:4","type":""}],"src":"7:139:4"},{"body":{"nodeType":"YulBlock","src":"218:196:4","statements":[{"body":{"nodeType":"YulBlock","src":"264:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"273:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"276:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"266:6:4"},"nodeType":"YulFunctionCall","src":"266:12:4"},"nodeType":"YulExpressionStatement","src":"266:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"239:7:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"248:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"235:3:4"},"nodeType":"YulFunctionCall","src":"235:23:4"},{"kind":"number","nodeType":"YulLiteral","src":"260:2:4","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"231:3:4"},"nodeType":"YulFunctionCall","src":"231:32:4"},"nodeType":"YulIf","src":"228:2:4"},{"nodeType":"YulBlock","src":"290:117:4","statements":[{"nodeType":"YulVariableDeclaration","src":"305:15:4","value":{"kind":"number","nodeType":"YulLiteral","src":"319:1:4","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"309:6:4","type":""}]},{"nodeType":"YulAssignment","src":"334:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"369:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"380:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"365:3:4"},"nodeType":"YulFunctionCall","src":"365:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"389:7:4"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"344:20:4"},"nodeType":"YulFunctionCall","src":"344:53:4"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"334:6:4"}]}]}]},"name":"abi_decode_tuple_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"188:9:4","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"199:7:4","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"211:6:4","type":""}],"src":"152:262:4"},{"body":{"nodeType":"YulBlock","src":"485:53:4","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"502:3:4"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"525:5:4"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"507:17:4"},"nodeType":"YulFunctionCall","src":"507:24:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"495:6:4"},"nodeType":"YulFunctionCall","src":"495:37:4"},"nodeType":"YulExpressionStatement","src":"495:37:4"}]},"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"473:5:4","type":""},{"name":"pos","nodeType":"YulTypedName","src":"480:3:4","type":""}],"src":"420:118:4"},{"body":{"nodeType":"YulBlock","src":"642:124:4","statements":[{"nodeType":"YulAssignment","src":"652:26:4","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"664:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"675:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"660:3:4"},"nodeType":"YulFunctionCall","src":"660:18:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"652:4:4"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"732:6:4"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"745:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"756:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"741:3:4"},"nodeType":"YulFunctionCall","src":"741:17:4"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"688:43:4"},"nodeType":"YulFunctionCall","src":"688:71:4"},"nodeType":"YulExpressionStatement","src":"688:71:4"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"614:9:4","type":""},{"name":"value0","nodeType":"YulTypedName","src":"626:6:4","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"637:4:4","type":""}],"src":"544:222:4"},{"body":{"nodeType":"YulBlock","src":"817:32:4","statements":[{"nodeType":"YulAssignment","src":"827:16:4","value":{"name":"value","nodeType":"YulIdentifier","src":"838:5:4"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"827:7:4"}]}]},"name":"cleanup_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"799:5:4","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"809:7:4","type":""}],"src":"772:77:4"},{"body":{"nodeType":"YulBlock","src":"898:79:4","statements":[{"body":{"nodeType":"YulBlock","src":"955:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"964:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"967:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"957:6:4"},"nodeType":"YulFunctionCall","src":"957:12:4"},"nodeType":"YulExpressionStatement","src":"957:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"921:5:4"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"946:5:4"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"928:17:4"},"nodeType":"YulFunctionCall","src":"928:24:4"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"918:2:4"},"nodeType":"YulFunctionCall","src":"918:35:4"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"911:6:4"},"nodeType":"YulFunctionCall","src":"911:43:4"},"nodeType":"YulIf","src":"908:2:4"}]},"name":"validator_revert_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"891:5:4","type":""}],"src":"855:122:4"}]},"contents":"{\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_uint256(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_uint256(add(headStart, offset), dataEnd)\n }\n\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_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 cleanup_t_uint256(value) -> cleaned {\n cleaned := value\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":4,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"6080604052348015600f57600080fd5b506004361060285760003560e01c80639194024414602d575b600080fd5b60436004803603810190603f91906090565b6045565b005b7f97535d4b4270d3f1a499c85ae918ba6798cbdcc83a26529331a25dcd2194cfce816040516072919060c3565b60405180910390a150565b600081359050608a8160e6565b92915050565b60006020828403121560a157600080fd5b600060ad84828501607d565b91505092915050565b60bd8160dc565b82525050565b600060208201905060d6600083018460b6565b92915050565b6000819050919050565b60ed8160dc565b811460f757600080fd5b5056fea264697066735822122083cb9b1ec00d6d1ec78d28771d3bf4778c5ba00b0532a2448d42cbab653355a064736f6c63430008040033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x28 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x91940244 EQ PUSH1 0x2D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x43 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH1 0x3F SWAP2 SWAP1 PUSH1 0x90 JUMP JUMPDEST PUSH1 0x45 JUMP JUMPDEST STOP JUMPDEST PUSH32 0x97535D4B4270D3F1A499C85AE918BA6798CBDCC83A26529331A25DCD2194CFCE DUP2 PUSH1 0x40 MLOAD PUSH1 0x72 SWAP2 SWAP1 PUSH1 0xC3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH1 0x8A DUP2 PUSH1 0xE6 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH1 0xA1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0xAD DUP5 DUP3 DUP6 ADD PUSH1 0x7D JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0xBD DUP2 PUSH1 0xDC JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH1 0xD6 PUSH1 0x0 DUP4 ADD DUP5 PUSH1 0xB6 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0xED DUP2 PUSH1 0xDC JUMP JUMPDEST DUP2 EQ PUSH1 0xF7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP4 0xCB SWAP12 0x1E 0xC0 0xD PUSH14 0x1EC78D28771D3BF4778C5BA00B05 ORIGIN LOG2 DIFFICULTY DUP14 TIMESTAMP 0xCB 0xAB PUSH6 0x3355A064736F PUSH13 0x63430008040033000000000000 ","sourceMap":"2530:124:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2589:63;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;2633:14;2645:1;2633:14;;;;;;:::i;:::-;;;;;;;;2589:63;:::o;7:139:4:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:262::-;211:6;260:2;248:9;239:7;235:23;231:32;228:2;;;276:1;273;266:12;228:2;319:1;344:53;389:7;380:6;369:9;365:22;344:53;:::i;:::-;334:63;;290:117;218:196;;;;:::o;420:118::-;507:24;525:5;507:24;:::i;:::-;502:3;495:37;485:53;;:::o;544:222::-;637:4;675:2;664:9;660:18;652:26;;688:71;756:1;745:9;741:17;732:6;688:71;:::i;:::-;642:124;;;;:::o;772:77::-;809:7;838:5;827:16;;817:32;;;:::o;855:122::-;928:24;946:5;928:24;:::i;:::-;921:5;918:35;908:2;;967:1;964;957:12;908:2;898:79;:::o"},"methodIdentifiers":{"emitUint(uint256)":"91940244"}},"metadata":"{\"compiler\":{\"version\":\"0.8.4+commit.c7e474f2\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"u\",\"type\":\"uint256\"}],\"name\":\"WithUintArg\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"u\",\"type\":\"uint256\"}],\"name\":\"emitUint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/Events.sol\":\"AnotherContract\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/Events.sol\":{\"keccak256\":\"0x1f12bbd1b991a4eb017f864e7ca09d99cee0730630313442e99fc32a29b28b91\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c8ba3dbc99ecfbb05a95a9a89e8ea74e86f7cbd5441a53fca9f3de94651313d5\",\"dweb:/ipfs/QmYr9HUxkuQxuEwxtLn3f9gB7i2epM95Znt6fRj9xL9T6Y\"]}},\"version\":1}"},"Events":{"abi":[{"inputs":[{"internalType":"contract AnotherContract","name":"c","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"a","type":"address"}],"name":"WithAddressArg","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"b","type":"bytes32"}],"name":"WithBytes32Arg","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32[2]","name":"a","type":"bytes32[2]"}],"name":"WithBytes32Array","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes","name":"b","type":"bytes"}],"name":"WithBytesArg","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"b","type":"bytes32"}],"name":"WithIndexedBytes32Arg","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes","name":"b","type":"bytes"}],"name":"WithIndexedBytesArg","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"string","name":"s","type":"string"}],"name":"WithIndexedStringArg","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"int256","name":"i","type":"int256"}],"name":"WithIntArg","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"s","type":"string"}],"name":"WithStringArg","type":"event"},{"anonymous":false,"inputs":[{"components":[{"internalType":"uint256","name":"u","type":"uint256"},{"internalType":"uint256","name":"v","type":"uint256"}],"indexed":false,"internalType":"struct Events.Struct","name":"s","type":"tuple"}],"name":"WithStructArg","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"s","type":"string"},{"indexed":false,"internalType":"string","name":"t","type":"string"}],"name":"WithTwoStringArgs","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"u","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"v","type":"uint256"}],"name":"WithTwoUintArgs","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"u","type":"uint256"}],"name":"WithUintArg","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256[2]","name":"a","type":"uint256[2]"}],"name":"WithUintArray","type":"event"},{"anonymous":false,"inputs":[],"name":"WithoutArgs","type":"event"},{"inputs":[],"name":"doNotEmit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"a","type":"address"}],"name":"emitAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"b","type":"bytes"}],"name":"emitBytes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"b","type":"bytes32"}],"name":"emitBytes32","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"b","type":"bytes32"},{"internalType":"bytes32","name":"c","type":"bytes32"}],"name":"emitBytes32Array","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"b","type":"bytes"}],"name":"emitIndexedBytes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"b","type":"bytes32"}],"name":"emitIndexedBytes32","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"s","type":"string"}],"name":"emitIndexedString","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"int256","name":"i","type":"int256"}],"name":"emitInt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"u","type":"uint256"}],"name":"emitNestedUintFromAnotherContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"u","type":"uint256"}],"name":"emitNestedUintFromSameContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"s","type":"string"}],"name":"emitString","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"u","type":"uint256"},{"internalType":"uint256","name":"v","type":"uint256"}],"name":"emitStruct","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"u","type":"uint256"},{"internalType":"uint256","name":"v","type":"uint256"}],"name":"emitTwoUints","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"u","type":"uint256"},{"internalType":"uint256","name":"v","type":"uint256"},{"internalType":"string","name":"s","type":"string"},{"internalType":"string","name":"t","type":"string"}],"name":"emitTwoUintsAndTwoStrings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"u","type":"uint256"}],"name":"emitUint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"u","type":"uint256"},{"internalType":"string","name":"s","type":"string"}],"name":"emitUintAndString","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"u","type":"uint256"},{"internalType":"uint256","name":"v","type":"uint256"}],"name":"emitUintArray","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"u","type":"uint256"},{"internalType":"uint256","name":"v","type":"uint256"}],"name":"emitUintTwice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"emitWithoutArgs","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:1068:4","statements":[{"body":{"nodeType":"YulBlock","src":"93:103:4","statements":[{"nodeType":"YulAssignment","src":"103:22:4","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"118:6:4"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"112:5:4"},"nodeType":"YulFunctionCall","src":"112:13:4"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"103:5:4"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"184:5:4"}],"functionName":{"name":"validator_revert_t_contract$_AnotherContract_$374","nodeType":"YulIdentifier","src":"134:49:4"},"nodeType":"YulFunctionCall","src":"134:56:4"},"nodeType":"YulExpressionStatement","src":"134:56:4"}]},"name":"abi_decode_t_contract$_AnotherContract_$374_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"71:6:4","type":""},{"name":"end","nodeType":"YulTypedName","src":"79:3:4","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"87:5:4","type":""}],"src":"7:189:4"},{"body":{"nodeType":"YulBlock","src":"302:230:4","statements":[{"body":{"nodeType":"YulBlock","src":"348:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"357:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"360:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"350:6:4"},"nodeType":"YulFunctionCall","src":"350:12:4"},"nodeType":"YulExpressionStatement","src":"350:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"323:7:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"332:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"319:3:4"},"nodeType":"YulFunctionCall","src":"319:23:4"},{"kind":"number","nodeType":"YulLiteral","src":"344:2:4","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"315:3:4"},"nodeType":"YulFunctionCall","src":"315:32:4"},"nodeType":"YulIf","src":"312:2:4"},{"nodeType":"YulBlock","src":"374:151:4","statements":[{"nodeType":"YulVariableDeclaration","src":"389:15:4","value":{"kind":"number","nodeType":"YulLiteral","src":"403:1:4","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"393:6:4","type":""}]},{"nodeType":"YulAssignment","src":"418:97:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"487:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"498:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"483:3:4"},"nodeType":"YulFunctionCall","src":"483:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"507:7:4"}],"functionName":{"name":"abi_decode_t_contract$_AnotherContract_$374_fromMemory","nodeType":"YulIdentifier","src":"428:54:4"},"nodeType":"YulFunctionCall","src":"428:87:4"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"418:6:4"}]}]}]},"name":"abi_decode_tuple_t_contract$_AnotherContract_$374_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"272:9:4","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"283:7:4","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"295:6:4","type":""}],"src":"202:330:4"},{"body":{"nodeType":"YulBlock","src":"583:51:4","statements":[{"nodeType":"YulAssignment","src":"593:35:4","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"622:5:4"}],"functionName":{"name":"cleanup_t_uint160","nodeType":"YulIdentifier","src":"604:17:4"},"nodeType":"YulFunctionCall","src":"604:24:4"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"593:7:4"}]}]},"name":"cleanup_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"565:5:4","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"575:7:4","type":""}],"src":"538:96:4"},{"body":{"nodeType":"YulBlock","src":"708:51:4","statements":[{"nodeType":"YulAssignment","src":"718:35:4","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"747:5:4"}],"functionName":{"name":"cleanup_t_address","nodeType":"YulIdentifier","src":"729:17:4"},"nodeType":"YulFunctionCall","src":"729:24:4"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"718:7:4"}]}]},"name":"cleanup_t_contract$_AnotherContract_$374","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"690:5:4","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"700:7:4","type":""}],"src":"640:119:4"},{"body":{"nodeType":"YulBlock","src":"810:81:4","statements":[{"nodeType":"YulAssignment","src":"820:65:4","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"835:5:4"},{"kind":"number","nodeType":"YulLiteral","src":"842:42:4","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"831:3:4"},"nodeType":"YulFunctionCall","src":"831:54:4"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"820:7:4"}]}]},"name":"cleanup_t_uint160","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"792:5:4","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"802:7:4","type":""}],"src":"765:126:4"},{"body":{"nodeType":"YulBlock","src":"963:102:4","statements":[{"body":{"nodeType":"YulBlock","src":"1043:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1052:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1055:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1045:6:4"},"nodeType":"YulFunctionCall","src":"1045:12:4"},"nodeType":"YulExpressionStatement","src":"1045:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"986:5:4"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1034:5:4"}],"functionName":{"name":"cleanup_t_contract$_AnotherContract_$374","nodeType":"YulIdentifier","src":"993:40:4"},"nodeType":"YulFunctionCall","src":"993:47:4"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"983:2:4"},"nodeType":"YulFunctionCall","src":"983:58:4"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"976:6:4"},"nodeType":"YulFunctionCall","src":"976:66:4"},"nodeType":"YulIf","src":"973:2:4"}]},"name":"validator_revert_t_contract$_AnotherContract_$374","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"956:5:4","type":""}],"src":"897:168:4"}]},"contents":"{\n\n function abi_decode_t_contract$_AnotherContract_$374_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_contract$_AnotherContract_$374(value)\n }\n\n function abi_decode_tuple_t_contract$_AnotherContract_$374_fromMemory(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_contract$_AnotherContract_$374_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function cleanup_t_contract$_AnotherContract_$374(value) -> cleaned {\n cleaned := cleanup_t_address(value)\n }\n\n function cleanup_t_uint160(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n }\n\n function validator_revert_t_contract$_AnotherContract_$374(value) {\n if iszero(eq(value, cleanup_t_contract$_AnotherContract_$374(value))) { revert(0, 0) }\n }\n\n}\n","id":4,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"60806040523480156200001157600080fd5b506040516200140d3803806200140d833981810160405281019062000037919062000095565b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505062000123565b6000815190506200008f8162000109565b92915050565b600060208284031215620000a857600080fd5b6000620000b8848285016200007e565b91505092915050565b6000620000ce82620000e9565b9050919050565b6000620000e282620000c1565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6200011481620000d5565b81146200012057600080fd5b50565b6112da80620001336000396000f3fe608060405234801561001057600080fd5b506004361061012c5760003560e01c80638a618191116100ad578063c76f063511610071578063c76f0635146102c3578063cc07e605146102df578063d3931e57146102fb578063db6cdf6814610317578063ec5c3ede146103215761012c565b80638a6181911461024957806390b37ea214610265578063919402441461026f5780639f31a2231461028b578063c0cd80e6146102a75761012c565b806333311ef3116100f457806333311ef3146101bd57806338393646146101d9578063443690a0146101f5578063532b9cce14610211578063813a8cf51461022d5761012c565b8063048858e5146101315780630c0c941a1461014d57806317aba537146101695780632536f127146101855780632785f8d6146101a1575b600080fd5b61014b600480360381019061014691906109f0565b61033d565b005b61016760048036038101906101629190610b7d565b61036d565b005b610183600480360381019061017e9190610b7d565b6103df565b005b61019f600480360381019061019a9190610abf565b61042e565b005b6101bb60048036038101906101b69190610b29565b610468565b005b6101d760048036038101906101d291906109f0565b6104da565b005b6101f360048036038101906101ee9190610b7d565b610514565b005b61020f600480360381019061020a9190610abf565b610551565b005b61022b60048036038101906102269190610bb9565b610596565b005b61024760048036038101906102429190610b00565b61060e565b005b610263600480360381019061025e9190610a96565b61061a565b005b61026d610654565b005b61028960048036038101906102849190610b00565b610682565b005b6102a560048036038101906102a09190610b7d565b6106bc565b005b6102c160048036038101906102bc9190610a19565b61070b565b005b6102dd60048036038101906102d89190610a55565b61075a565b005b6102f960048036038101906102f49190610a55565b610794565b005b61031560048036038101906103109190610b00565b6107d9565b005b61031f610867565b005b61033b600480360381019061033691906109c7565b610869565b005b807fb421ad092cfce88844bfbfaa9654e824ba0ee5b6b0a220f822406b62c05364c060405160405180910390a250565b7f97535d4b4270d3f1a499c85ae918ba6798cbdcc83a26529331a25dcd2194cfce8260405161039c9190610fd2565b60405180910390a17f97535d4b4270d3f1a499c85ae918ba6798cbdcc83a26529331a25dcd2194cfce816040516103d39190610fd2565b60405180910390a15050565b7f73e687a2685d698f7acf934b4929a29ae783a4bcb640d71c5d6994d74e2380ca6040518060400160405280848152602001838152506040516104229190610eeb565b60405180910390a15050565b7f9b7ddcbde8dac280e036f87acafec72f9eee31a640c08087e8439139c7e5b52a8160405161045d9190610f5e565b60405180910390a150565b7f9b7ddcbde8dac280e036f87acafec72f9eee31a640c08087e8439139c7e5b52a816040516104979190610f5e565b60405180910390a17f97535d4b4270d3f1a499c85ae918ba6798cbdcc83a26529331a25dcd2194cfce826040516104ce9190610fd2565b60405180910390a15050565b7f425517d2678bbca3c0d9d8d9fdbec34c81194e7935ed48a6a19f97db93bcef6a816040516105099190610f06565b60405180910390a150565b7f8b268bb46a33a55bece084a8b6858719c9f2985c860fa06c155a341df0b73c0e8282604051610545929190610fed565b60405180910390a15050565b8060405161055f9190610e9e565b60405180910390207fd9ca28363e2d8739e0e9c4fea1d2df98d1bd7d9d915d00e5fccbf78c0fddcdb060405160405180910390a250565b7f8b268bb46a33a55bece084a8b6858719c9f2985c860fa06c155a341df0b73c0e84846040516105c7929190610fed565b60405180910390a17f1f1a2c748505fcd8f16a719fa88d517b1b41111c4f5e07bb28311cdc4d1515388282604051610600929190610f80565b60405180910390a150505050565b61061781610682565b50565b7f39feab747bb4f579008aea963d7ebac85ad410bb83ee663a42af01464654e93f816040516106499190610f43565b60405180910390a150565b7f917b7bf7ab24d61500cb699921a3a1cc22b8833da6484fea20f262b2610604af60405160405180910390a1565b7f97535d4b4270d3f1a499c85ae918ba6798cbdcc83a26529331a25dcd2194cfce816040516106b19190610fd2565b60405180910390a150565b7fd59ab87bf64b9d737998f3dc70c649d16b135f085029c1666ca0634beb75a7736040518060400160405280848152602001838152506040516106ff9190610fb7565b60405180910390a15050565b7f15100859f3ffe92910dc3f11ed3db4e9cf32ff657c05066e44be4e69b2b488bc60405180604001604052808481526020018381525060405161074e9190610ed0565b60405180910390a15050565b7f433470edcdd53b50238be4d8e048e2baa269af5be2a4e29515c138883c745aa8816040516107899190610f21565b60405180910390a150565b806040516107a29190610e87565b60405180910390207f160e4655df40987951accf7c731d5c504f77d20c139bd73032821b91a426dd9860405160405180910390a250565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166391940244826040518263ffffffff1660e01b81526004016108329190610fd2565b600060405180830381600087803b15801561084c57600080fd5b505af1158015610860573d6000803e3d6000fd5b5050505050565b565b7f336bcd960d2e5a52cef6094ba33727f309dc2c675eebefc6d9b6b6d79abac877816040516108989190610eb5565b60405180910390a150565b60006108b66108b18461103b565b611016565b9050828152602081018484840111156108ce57600080fd5b6108d9848285611195565b509392505050565b60006108f46108ef8461106c565b611016565b90508281526020810184848401111561090c57600080fd5b610917848285611195565b509392505050565b60008135905061092e81611248565b92915050565b6000813590506109438161125f565b92915050565b600082601f83011261095a57600080fd5b813561096a8482602086016108a3565b91505092915050565b60008135905061098281611276565b92915050565b600082601f83011261099957600080fd5b81356109a98482602086016108e1565b91505092915050565b6000813590506109c18161128d565b92915050565b6000602082840312156109d957600080fd5b60006109e78482850161091f565b91505092915050565b600060208284031215610a0257600080fd5b6000610a1084828501610934565b91505092915050565b60008060408385031215610a2c57600080fd5b6000610a3a85828601610934565b9250506020610a4b85828601610934565b9150509250929050565b600060208284031215610a6757600080fd5b600082013567ffffffffffffffff811115610a8157600080fd5b610a8d84828501610949565b91505092915050565b600060208284031215610aa857600080fd5b6000610ab684828501610973565b91505092915050565b600060208284031215610ad157600080fd5b600082013567ffffffffffffffff811115610aeb57600080fd5b610af784828501610988565b91505092915050565b600060208284031215610b1257600080fd5b6000610b20848285016109b2565b91505092915050565b60008060408385031215610b3c57600080fd5b6000610b4a858286016109b2565b925050602083013567ffffffffffffffff811115610b6757600080fd5b610b7385828601610988565b9150509250929050565b60008060408385031215610b9057600080fd5b6000610b9e858286016109b2565b9250506020610baf858286016109b2565b9150509250929050565b60008060008060808587031215610bcf57600080fd5b6000610bdd878288016109b2565b9450506020610bee878288016109b2565b935050604085013567ffffffffffffffff811115610c0b57600080fd5b610c1787828801610988565b925050606085013567ffffffffffffffff811115610c3457600080fd5b610c4087828801610988565b91505092959194509250565b6000610c588383610d39565b60208301905092915050565b6000610c708383610e69565b60208301905092915050565b610c8581611145565b82525050565b610c94816110b1565b610c9e81846110f7565b9250610ca98261109d565b8060005b83811015610cda578151610cc18782610c4c565b9650610ccc836110dd565b925050600181019050610cad565b505050505050565b610ceb816110bc565b610cf58184611102565b9250610d00826110a7565b8060005b83811015610d31578151610d188782610c64565b9650610d23836110ea565b925050600181019050610d04565b505050505050565b610d4281611157565b82525050565b610d5181611157565b82525050565b6000610d62826110c7565b610d6c818561110d565b9350610d7c8185602086016111a4565b610d8581611237565b840191505092915050565b6000610d9b826110c7565b610da5818561111e565b9350610db58185602086016111a4565b80840191505092915050565b610dca81611161565b82525050565b6000610ddb826110d2565b610de58185611129565b9350610df58185602086016111a4565b610dfe81611237565b840191505092915050565b6000610e14826110d2565b610e1e818561113a565b9350610e2e8185602086016111a4565b80840191505092915050565b604082016000820151610e506000850182610e69565b506020820151610e636020850182610e69565b50505050565b610e728161118b565b82525050565b610e818161118b565b82525050565b6000610e938284610d90565b915081905092915050565b6000610eaa8284610e09565b915081905092915050565b6000602082019050610eca6000830184610c7c565b92915050565b6000604082019050610ee56000830184610c8b565b92915050565b6000604082019050610f006000830184610ce2565b92915050565b6000602082019050610f1b6000830184610d48565b92915050565b60006020820190508181036000830152610f3b8184610d57565b905092915050565b6000602082019050610f586000830184610dc1565b92915050565b60006020820190508181036000830152610f788184610dd0565b905092915050565b60006040820190508181036000830152610f9a8185610dd0565b90508181036020830152610fae8184610dd0565b90509392505050565b6000604082019050610fcc6000830184610e3a565b92915050565b6000602082019050610fe76000830184610e78565b92915050565b60006040820190506110026000830185610e78565b61100f6020830184610e78565b9392505050565b6000611020611031565b905061102c82826111d7565b919050565b6000604051905090565b600067ffffffffffffffff82111561105657611055611208565b5b61105f82611237565b9050602081019050919050565b600067ffffffffffffffff82111561108757611086611208565b5b61109082611237565b9050602081019050919050565b6000819050919050565b6000819050919050565b600060029050919050565b600060029050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b600081905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b60006111508261116b565b9050919050565b6000819050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b838110156111c25780820151818401526020810190506111a7565b838111156111d1576000848401525b50505050565b6111e082611237565b810181811067ffffffffffffffff821117156111ff576111fe611208565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b61125181611145565b811461125c57600080fd5b50565b61126881611157565b811461127357600080fd5b50565b61127f81611161565b811461128a57600080fd5b50565b6112968161118b565b81146112a157600080fd5b5056fea264697066735822122073a91a740c0de3883c5213c5981d98d2396a8b60b3cf2fb364d7e4cc826a841e64736f6c63430008040033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x140D CODESIZE SUB DUP1 PUSH3 0x140D DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE DUP2 ADD SWAP1 PUSH3 0x37 SWAP2 SWAP1 PUSH3 0x95 JUMP JUMPDEST DUP1 PUSH1 0x0 DUP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP PUSH3 0x123 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH3 0x8F DUP2 PUSH3 0x109 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0xA8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH3 0xB8 DUP5 DUP3 DUP6 ADD PUSH3 0x7E JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0xCE DUP3 PUSH3 0xE9 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0xE2 DUP3 PUSH3 0xC1 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x114 DUP2 PUSH3 0xD5 JUMP JUMPDEST DUP2 EQ PUSH3 0x120 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x12DA DUP1 PUSH3 0x133 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x12C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8A618191 GT PUSH2 0xAD JUMPI DUP1 PUSH4 0xC76F0635 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xC76F0635 EQ PUSH2 0x2C3 JUMPI DUP1 PUSH4 0xCC07E605 EQ PUSH2 0x2DF JUMPI DUP1 PUSH4 0xD3931E57 EQ PUSH2 0x2FB JUMPI DUP1 PUSH4 0xDB6CDF68 EQ PUSH2 0x317 JUMPI DUP1 PUSH4 0xEC5C3EDE EQ PUSH2 0x321 JUMPI PUSH2 0x12C JUMP JUMPDEST DUP1 PUSH4 0x8A618191 EQ PUSH2 0x249 JUMPI DUP1 PUSH4 0x90B37EA2 EQ PUSH2 0x265 JUMPI DUP1 PUSH4 0x91940244 EQ PUSH2 0x26F JUMPI DUP1 PUSH4 0x9F31A223 EQ PUSH2 0x28B JUMPI DUP1 PUSH4 0xC0CD80E6 EQ PUSH2 0x2A7 JUMPI PUSH2 0x12C JUMP JUMPDEST DUP1 PUSH4 0x33311EF3 GT PUSH2 0xF4 JUMPI DUP1 PUSH4 0x33311EF3 EQ PUSH2 0x1BD JUMPI DUP1 PUSH4 0x38393646 EQ PUSH2 0x1D9 JUMPI DUP1 PUSH4 0x443690A0 EQ PUSH2 0x1F5 JUMPI DUP1 PUSH4 0x532B9CCE EQ PUSH2 0x211 JUMPI DUP1 PUSH4 0x813A8CF5 EQ PUSH2 0x22D JUMPI PUSH2 0x12C JUMP JUMPDEST DUP1 PUSH4 0x48858E5 EQ PUSH2 0x131 JUMPI DUP1 PUSH4 0xC0C941A EQ PUSH2 0x14D JUMPI DUP1 PUSH4 0x17ABA537 EQ PUSH2 0x169 JUMPI DUP1 PUSH4 0x2536F127 EQ PUSH2 0x185 JUMPI DUP1 PUSH4 0x2785F8D6 EQ PUSH2 0x1A1 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x14B PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x146 SWAP2 SWAP1 PUSH2 0x9F0 JUMP JUMPDEST PUSH2 0x33D JUMP JUMPDEST STOP JUMPDEST PUSH2 0x167 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x162 SWAP2 SWAP1 PUSH2 0xB7D JUMP JUMPDEST PUSH2 0x36D JUMP JUMPDEST STOP JUMPDEST PUSH2 0x183 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x17E SWAP2 SWAP1 PUSH2 0xB7D JUMP JUMPDEST PUSH2 0x3DF JUMP JUMPDEST STOP JUMPDEST PUSH2 0x19F PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x19A SWAP2 SWAP1 PUSH2 0xABF JUMP JUMPDEST PUSH2 0x42E JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1BB PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1B6 SWAP2 SWAP1 PUSH2 0xB29 JUMP JUMPDEST PUSH2 0x468 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1D7 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1D2 SWAP2 SWAP1 PUSH2 0x9F0 JUMP JUMPDEST PUSH2 0x4DA JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1F3 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1EE SWAP2 SWAP1 PUSH2 0xB7D JUMP JUMPDEST PUSH2 0x514 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x20F PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x20A SWAP2 SWAP1 PUSH2 0xABF JUMP JUMPDEST PUSH2 0x551 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x22B PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x226 SWAP2 SWAP1 PUSH2 0xBB9 JUMP JUMPDEST PUSH2 0x596 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x247 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x242 SWAP2 SWAP1 PUSH2 0xB00 JUMP JUMPDEST PUSH2 0x60E JUMP JUMPDEST STOP JUMPDEST PUSH2 0x263 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x25E SWAP2 SWAP1 PUSH2 0xA96 JUMP JUMPDEST PUSH2 0x61A JUMP JUMPDEST STOP JUMPDEST PUSH2 0x26D PUSH2 0x654 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x289 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x284 SWAP2 SWAP1 PUSH2 0xB00 JUMP JUMPDEST PUSH2 0x682 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2A5 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2A0 SWAP2 SWAP1 PUSH2 0xB7D JUMP JUMPDEST PUSH2 0x6BC JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2C1 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2BC SWAP2 SWAP1 PUSH2 0xA19 JUMP JUMPDEST PUSH2 0x70B JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2DD PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2D8 SWAP2 SWAP1 PUSH2 0xA55 JUMP JUMPDEST PUSH2 0x75A JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2F9 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2F4 SWAP2 SWAP1 PUSH2 0xA55 JUMP JUMPDEST PUSH2 0x794 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x315 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x310 SWAP2 SWAP1 PUSH2 0xB00 JUMP JUMPDEST PUSH2 0x7D9 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x31F PUSH2 0x867 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x33B PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x336 SWAP2 SWAP1 PUSH2 0x9C7 JUMP JUMPDEST PUSH2 0x869 JUMP JUMPDEST STOP JUMPDEST DUP1 PUSH32 0xB421AD092CFCE88844BFBFAA9654E824BA0EE5B6B0A220F822406B62C05364C0 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP JUMP JUMPDEST PUSH32 0x97535D4B4270D3F1A499C85AE918BA6798CBDCC83A26529331A25DCD2194CFCE DUP3 PUSH1 0x40 MLOAD PUSH2 0x39C SWAP2 SWAP1 PUSH2 0xFD2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH32 0x97535D4B4270D3F1A499C85AE918BA6798CBDCC83A26529331A25DCD2194CFCE DUP2 PUSH1 0x40 MLOAD PUSH2 0x3D3 SWAP2 SWAP1 PUSH2 0xFD2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH32 0x73E687A2685D698F7ACF934B4929A29AE783A4BCB640D71C5D6994D74E2380CA PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE POP PUSH1 0x40 MLOAD PUSH2 0x422 SWAP2 SWAP1 PUSH2 0xEEB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH32 0x9B7DDCBDE8DAC280E036F87ACAFEC72F9EEE31A640C08087E8439139C7E5B52A DUP2 PUSH1 0x40 MLOAD PUSH2 0x45D SWAP2 SWAP1 PUSH2 0xF5E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH32 0x9B7DDCBDE8DAC280E036F87ACAFEC72F9EEE31A640C08087E8439139C7E5B52A DUP2 PUSH1 0x40 MLOAD PUSH2 0x497 SWAP2 SWAP1 PUSH2 0xF5E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH32 0x97535D4B4270D3F1A499C85AE918BA6798CBDCC83A26529331A25DCD2194CFCE DUP3 PUSH1 0x40 MLOAD PUSH2 0x4CE SWAP2 SWAP1 PUSH2 0xFD2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH32 0x425517D2678BBCA3C0D9D8D9FDBEC34C81194E7935ED48A6A19F97DB93BCEF6A DUP2 PUSH1 0x40 MLOAD PUSH2 0x509 SWAP2 SWAP1 PUSH2 0xF06 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH32 0x8B268BB46A33A55BECE084A8B6858719C9F2985C860FA06C155A341DF0B73C0E DUP3 DUP3 PUSH1 0x40 MLOAD PUSH2 0x545 SWAP3 SWAP2 SWAP1 PUSH2 0xFED JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH2 0x55F SWAP2 SWAP1 PUSH2 0xE9E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 PUSH32 0xD9CA28363E2D8739E0E9C4FEA1D2DF98D1BD7D9D915D00E5FCCBF78C0FDDCDB0 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP JUMP JUMPDEST PUSH32 0x8B268BB46A33A55BECE084A8B6858719C9F2985C860FA06C155A341DF0B73C0E DUP5 DUP5 PUSH1 0x40 MLOAD PUSH2 0x5C7 SWAP3 SWAP2 SWAP1 PUSH2 0xFED JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH32 0x1F1A2C748505FCD8F16A719FA88D517B1B41111C4F5E07BB28311CDC4D151538 DUP3 DUP3 PUSH1 0x40 MLOAD PUSH2 0x600 SWAP3 SWAP2 SWAP1 PUSH2 0xF80 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP JUMP JUMPDEST PUSH2 0x617 DUP2 PUSH2 0x682 JUMP JUMPDEST POP JUMP JUMPDEST PUSH32 0x39FEAB747BB4F579008AEA963D7EBAC85AD410BB83EE663A42AF01464654E93F DUP2 PUSH1 0x40 MLOAD PUSH2 0x649 SWAP2 SWAP1 PUSH2 0xF43 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH32 0x917B7BF7AB24D61500CB699921A3A1CC22B8833DA6484FEA20F262B2610604AF PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMP JUMPDEST PUSH32 0x97535D4B4270D3F1A499C85AE918BA6798CBDCC83A26529331A25DCD2194CFCE DUP2 PUSH1 0x40 MLOAD PUSH2 0x6B1 SWAP2 SWAP1 PUSH2 0xFD2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH32 0xD59AB87BF64B9D737998F3DC70C649D16B135F085029C1666CA0634BEB75A773 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE POP PUSH1 0x40 MLOAD PUSH2 0x6FF SWAP2 SWAP1 PUSH2 0xFB7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH32 0x15100859F3FFE92910DC3F11ED3DB4E9CF32FF657C05066E44BE4E69B2B488BC PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE POP PUSH1 0x40 MLOAD PUSH2 0x74E SWAP2 SWAP1 PUSH2 0xED0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH32 0x433470EDCDD53B50238BE4D8E048E2BAA269AF5BE2A4E29515C138883C745AA8 DUP2 PUSH1 0x40 MLOAD PUSH2 0x789 SWAP2 SWAP1 PUSH2 0xF21 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH2 0x7A2 SWAP2 SWAP1 PUSH2 0xE87 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 PUSH32 0x160E4655DF40987951ACCF7C731D5C504F77D20C139BD73032821B91A426DD98 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x91940244 DUP3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x832 SWAP2 SWAP1 PUSH2 0xFD2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x84C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x860 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST JUMP JUMPDEST PUSH32 0x336BCD960D2E5A52CEF6094BA33727F309DC2C675EEBEFC6D9B6B6D79ABAC877 DUP2 PUSH1 0x40 MLOAD PUSH2 0x898 SWAP2 SWAP1 PUSH2 0xEB5 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8B6 PUSH2 0x8B1 DUP5 PUSH2 0x103B JUMP JUMPDEST PUSH2 0x1016 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 DUP5 DUP5 ADD GT ISZERO PUSH2 0x8CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8D9 DUP5 DUP3 DUP6 PUSH2 0x1195 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8F4 PUSH2 0x8EF DUP5 PUSH2 0x106C JUMP JUMPDEST PUSH2 0x1016 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 DUP5 DUP5 ADD GT ISZERO PUSH2 0x90C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x917 DUP5 DUP3 DUP6 PUSH2 0x1195 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x92E DUP2 PUSH2 0x1248 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x943 DUP2 PUSH2 0x125F JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x95A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x96A DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x8A3 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x982 DUP2 PUSH2 0x1276 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x999 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x9A9 DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x8E1 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x9C1 DUP2 PUSH2 0x128D JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x9D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x9E7 DUP5 DUP3 DUP6 ADD PUSH2 0x91F JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xA02 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xA10 DUP5 DUP3 DUP6 ADD PUSH2 0x934 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xA2C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xA3A DUP6 DUP3 DUP7 ADD PUSH2 0x934 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0xA4B DUP6 DUP3 DUP7 ADD PUSH2 0x934 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xA67 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xA81 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA8D DUP5 DUP3 DUP6 ADD PUSH2 0x949 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xAA8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xAB6 DUP5 DUP3 DUP6 ADD PUSH2 0x973 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xAD1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xAEB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xAF7 DUP5 DUP3 DUP6 ADD PUSH2 0x988 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xB12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xB20 DUP5 DUP3 DUP6 ADD PUSH2 0x9B2 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xB3C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xB4A DUP6 DUP3 DUP7 ADD PUSH2 0x9B2 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xB67 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB73 DUP6 DUP3 DUP7 ADD PUSH2 0x988 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xB90 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xB9E DUP6 DUP3 DUP7 ADD PUSH2 0x9B2 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0xBAF DUP6 DUP3 DUP7 ADD PUSH2 0x9B2 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0xBCF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xBDD DUP8 DUP3 DUP9 ADD PUSH2 0x9B2 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 PUSH2 0xBEE DUP8 DUP3 DUP9 ADD PUSH2 0x9B2 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xC0B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xC17 DUP8 DUP3 DUP9 ADD PUSH2 0x988 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xC34 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xC40 DUP8 DUP3 DUP9 ADD PUSH2 0x988 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC58 DUP4 DUP4 PUSH2 0xD39 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC70 DUP4 DUP4 PUSH2 0xE69 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xC85 DUP2 PUSH2 0x1145 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0xC94 DUP2 PUSH2 0x10B1 JUMP JUMPDEST PUSH2 0xC9E DUP2 DUP5 PUSH2 0x10F7 JUMP JUMPDEST SWAP3 POP PUSH2 0xCA9 DUP3 PUSH2 0x109D JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xCDA JUMPI DUP2 MLOAD PUSH2 0xCC1 DUP8 DUP3 PUSH2 0xC4C JUMP JUMPDEST SWAP7 POP PUSH2 0xCCC DUP4 PUSH2 0x10DD JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0xCAD JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0xCEB DUP2 PUSH2 0x10BC JUMP JUMPDEST PUSH2 0xCF5 DUP2 DUP5 PUSH2 0x1102 JUMP JUMPDEST SWAP3 POP PUSH2 0xD00 DUP3 PUSH2 0x10A7 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xD31 JUMPI DUP2 MLOAD PUSH2 0xD18 DUP8 DUP3 PUSH2 0xC64 JUMP JUMPDEST SWAP7 POP PUSH2 0xD23 DUP4 PUSH2 0x10EA JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0xD04 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0xD42 DUP2 PUSH2 0x1157 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0xD51 DUP2 PUSH2 0x1157 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD62 DUP3 PUSH2 0x10C7 JUMP JUMPDEST PUSH2 0xD6C DUP2 DUP6 PUSH2 0x110D JUMP JUMPDEST SWAP4 POP PUSH2 0xD7C DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x11A4 JUMP JUMPDEST PUSH2 0xD85 DUP2 PUSH2 0x1237 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD9B DUP3 PUSH2 0x10C7 JUMP JUMPDEST PUSH2 0xDA5 DUP2 DUP6 PUSH2 0x111E JUMP JUMPDEST SWAP4 POP PUSH2 0xDB5 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x11A4 JUMP JUMPDEST DUP1 DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xDCA DUP2 PUSH2 0x1161 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xDDB DUP3 PUSH2 0x10D2 JUMP JUMPDEST PUSH2 0xDE5 DUP2 DUP6 PUSH2 0x1129 JUMP JUMPDEST SWAP4 POP PUSH2 0xDF5 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x11A4 JUMP JUMPDEST PUSH2 0xDFE DUP2 PUSH2 0x1237 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE14 DUP3 PUSH2 0x10D2 JUMP JUMPDEST PUSH2 0xE1E DUP2 DUP6 PUSH2 0x113A JUMP JUMPDEST SWAP4 POP PUSH2 0xE2E DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x11A4 JUMP JUMPDEST DUP1 DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP3 ADD PUSH1 0x0 DUP3 ADD MLOAD PUSH2 0xE50 PUSH1 0x0 DUP6 ADD DUP3 PUSH2 0xE69 JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0xE63 PUSH1 0x20 DUP6 ADD DUP3 PUSH2 0xE69 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0xE72 DUP2 PUSH2 0x118B JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0xE81 DUP2 PUSH2 0x118B JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE93 DUP3 DUP5 PUSH2 0xD90 JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xEAA DUP3 DUP5 PUSH2 0xE09 JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xECA PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xC7C JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0xEE5 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xC8B JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0xF00 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xCE2 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xF1B PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xD48 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 0xF3B DUP2 DUP5 PUSH2 0xD57 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xF58 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xDC1 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 0xF78 DUP2 DUP5 PUSH2 0xDD0 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0xF9A DUP2 DUP6 PUSH2 0xDD0 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0xFAE DUP2 DUP5 PUSH2 0xDD0 JUMP JUMPDEST SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0xFCC PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xE3A JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xFE7 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xE78 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x1002 PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0xE78 JUMP JUMPDEST PUSH2 0x100F PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0xE78 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1020 PUSH2 0x1031 JUMP JUMPDEST SWAP1 POP PUSH2 0x102C DUP3 DUP3 PUSH2 0x11D7 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 0x1056 JUMPI PUSH2 0x1055 PUSH2 0x1208 JUMP JUMPDEST JUMPDEST PUSH2 0x105F DUP3 PUSH2 0x1237 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x1087 JUMPI PUSH2 0x1086 PUSH2 0x1208 JUMP JUMPDEST JUMPDEST PUSH2 0x1090 DUP3 PUSH2 0x1237 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1150 DUP3 PUSH2 0x116B JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 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 0x11C2 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x11A7 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x11D1 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x11E0 DUP3 PUSH2 0x1237 JUMP JUMPDEST DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x11FF JUMPI PUSH2 0x11FE PUSH2 0x1208 JUMP JUMPDEST JUMPDEST DUP1 PUSH1 0x40 MSTORE POP POP POP JUMP 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 PUSH2 0x1251 DUP2 PUSH2 0x1145 JUMP JUMPDEST DUP2 EQ PUSH2 0x125C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x1268 DUP2 PUSH2 0x1157 JUMP JUMPDEST DUP2 EQ PUSH2 0x1273 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x127F DUP2 PUSH2 0x1161 JUMP JUMPDEST DUP2 EQ PUSH2 0x128A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x1296 DUP2 PUSH2 0x118B JUMP JUMPDEST DUP2 EQ PUSH2 0x12A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH20 0xA91A740C0DE3883C5213C5981D98D2396A8B60B3 0xCF 0x2F 0xB3 PUSH5 0xD7E4CC826A DUP5 0x1E PUSH5 0x736F6C6343 STOP ADDMOD DIV STOP CALLER ","sourceMap":"57:2471:1:-:0;;;713:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;769:1;751:15;;:19;;;;;;;;;;;;;;;;;;713:62;57:2471;;7:189:4;87:5;118:6;112:13;103:22;;134:56;184:5;134:56;:::i;:::-;93:103;;;;:::o;202:330::-;295:6;344:2;332:9;323:7;319:23;315:32;312:2;;;360:1;357;350:12;312:2;403:1;428:87;507:7;498:6;487:9;483:22;428:87;:::i;:::-;418:97;;374:151;302:230;;;;:::o;538:96::-;575:7;604:24;622:5;604:24;:::i;:::-;593:35;;583:51;;;:::o;640:119::-;700:7;729:24;747:5;729:24;:::i;:::-;718:35;;708:51;;;:::o;765:126::-;802:7;842:42;835:5;831:54;820:65;;810:81;;;:::o;897:168::-;993:47;1034:5;993:47;:::i;:::-;986:5;983:58;973:2;;1055:1;1052;1045:12;973:2;963:102;:::o;57:2471:1:-;;;;;;;"},"deployedBytecode":{"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:19211:4","statements":[{"body":{"nodeType":"YulBlock","src":"90:260:4","statements":[{"nodeType":"YulAssignment","src":"100:74:4","value":{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"166:6:4"}],"functionName":{"name":"array_allocation_size_t_bytes_memory_ptr","nodeType":"YulIdentifier","src":"125:40:4"},"nodeType":"YulFunctionCall","src":"125:48:4"}],"functionName":{"name":"allocate_memory","nodeType":"YulIdentifier","src":"109:15:4"},"nodeType":"YulFunctionCall","src":"109:65:4"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"100:5:4"}]},{"expression":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"190:5:4"},{"name":"length","nodeType":"YulIdentifier","src":"197:6:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"183:6:4"},"nodeType":"YulFunctionCall","src":"183:21:4"},"nodeType":"YulExpressionStatement","src":"183:21:4"},{"nodeType":"YulVariableDeclaration","src":"213:27:4","value":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"228:5:4"},{"kind":"number","nodeType":"YulLiteral","src":"235:4:4","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"224:3:4"},"nodeType":"YulFunctionCall","src":"224:16:4"},"variables":[{"name":"dst","nodeType":"YulTypedName","src":"217:3:4","type":""}]},{"body":{"nodeType":"YulBlock","src":"278:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"287:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"290:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"280:6:4"},"nodeType":"YulFunctionCall","src":"280:12:4"},"nodeType":"YulExpressionStatement","src":"280:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"259:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"264:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"255:3:4"},"nodeType":"YulFunctionCall","src":"255:16:4"},{"name":"end","nodeType":"YulIdentifier","src":"273:3:4"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"252:2:4"},"nodeType":"YulFunctionCall","src":"252:25:4"},"nodeType":"YulIf","src":"249:2:4"},{"expression":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"327:3:4"},{"name":"dst","nodeType":"YulIdentifier","src":"332:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"337:6:4"}],"functionName":{"name":"copy_calldata_to_memory","nodeType":"YulIdentifier","src":"303:23:4"},"nodeType":"YulFunctionCall","src":"303:41:4"},"nodeType":"YulExpressionStatement","src":"303:41:4"}]},"name":"abi_decode_available_length_t_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"63:3:4","type":""},{"name":"length","nodeType":"YulTypedName","src":"68:6:4","type":""},{"name":"end","nodeType":"YulTypedName","src":"76:3:4","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"84:5:4","type":""}],"src":"7:343:4"},{"body":{"nodeType":"YulBlock","src":"440:261:4","statements":[{"nodeType":"YulAssignment","src":"450:75:4","value":{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"517:6:4"}],"functionName":{"name":"array_allocation_size_t_string_memory_ptr","nodeType":"YulIdentifier","src":"475:41:4"},"nodeType":"YulFunctionCall","src":"475:49:4"}],"functionName":{"name":"allocate_memory","nodeType":"YulIdentifier","src":"459:15:4"},"nodeType":"YulFunctionCall","src":"459:66:4"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"450:5:4"}]},{"expression":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"541:5:4"},{"name":"length","nodeType":"YulIdentifier","src":"548:6:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"534:6:4"},"nodeType":"YulFunctionCall","src":"534:21:4"},"nodeType":"YulExpressionStatement","src":"534:21:4"},{"nodeType":"YulVariableDeclaration","src":"564:27:4","value":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"579:5:4"},{"kind":"number","nodeType":"YulLiteral","src":"586:4:4","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"575:3:4"},"nodeType":"YulFunctionCall","src":"575:16:4"},"variables":[{"name":"dst","nodeType":"YulTypedName","src":"568:3:4","type":""}]},{"body":{"nodeType":"YulBlock","src":"629:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"638:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"641:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"631:6:4"},"nodeType":"YulFunctionCall","src":"631:12:4"},"nodeType":"YulExpressionStatement","src":"631:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"610:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"615:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"606:3:4"},"nodeType":"YulFunctionCall","src":"606:16:4"},{"name":"end","nodeType":"YulIdentifier","src":"624:3:4"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"603:2:4"},"nodeType":"YulFunctionCall","src":"603:25:4"},"nodeType":"YulIf","src":"600:2:4"},{"expression":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"678:3:4"},{"name":"dst","nodeType":"YulIdentifier","src":"683:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"688:6:4"}],"functionName":{"name":"copy_calldata_to_memory","nodeType":"YulIdentifier","src":"654:23:4"},"nodeType":"YulFunctionCall","src":"654:41:4"},"nodeType":"YulExpressionStatement","src":"654:41:4"}]},"name":"abi_decode_available_length_t_string_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"413:3:4","type":""},{"name":"length","nodeType":"YulTypedName","src":"418:6:4","type":""},{"name":"end","nodeType":"YulTypedName","src":"426:3:4","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"434:5:4","type":""}],"src":"356:345:4"},{"body":{"nodeType":"YulBlock","src":"759:87:4","statements":[{"nodeType":"YulAssignment","src":"769:29:4","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"791:6:4"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"778:12:4"},"nodeType":"YulFunctionCall","src":"778:20:4"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"769:5:4"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"834:5:4"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"807:26:4"},"nodeType":"YulFunctionCall","src":"807:33:4"},"nodeType":"YulExpressionStatement","src":"807:33:4"}]},"name":"abi_decode_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"737:6:4","type":""},{"name":"end","nodeType":"YulTypedName","src":"745:3:4","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"753:5:4","type":""}],"src":"707:139:4"},{"body":{"nodeType":"YulBlock","src":"904:87:4","statements":[{"nodeType":"YulAssignment","src":"914:29:4","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"936:6:4"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"923:12:4"},"nodeType":"YulFunctionCall","src":"923:20:4"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"914:5:4"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"979:5:4"}],"functionName":{"name":"validator_revert_t_bytes32","nodeType":"YulIdentifier","src":"952:26:4"},"nodeType":"YulFunctionCall","src":"952:33:4"},"nodeType":"YulExpressionStatement","src":"952:33:4"}]},"name":"abi_decode_t_bytes32","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"882:6:4","type":""},{"name":"end","nodeType":"YulTypedName","src":"890:3:4","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"898:5:4","type":""}],"src":"852:139:4"},{"body":{"nodeType":"YulBlock","src":"1071:210:4","statements":[{"body":{"nodeType":"YulBlock","src":"1120:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1129:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1132:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1122:6:4"},"nodeType":"YulFunctionCall","src":"1122:12:4"},"nodeType":"YulExpressionStatement","src":"1122:12:4"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1099:6:4"},{"kind":"number","nodeType":"YulLiteral","src":"1107:4:4","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1095:3:4"},"nodeType":"YulFunctionCall","src":"1095:17:4"},{"name":"end","nodeType":"YulIdentifier","src":"1114:3:4"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1091:3:4"},"nodeType":"YulFunctionCall","src":"1091:27:4"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1084:6:4"},"nodeType":"YulFunctionCall","src":"1084:35:4"},"nodeType":"YulIf","src":"1081:2:4"},{"nodeType":"YulVariableDeclaration","src":"1145:34:4","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1172:6:4"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1159:12:4"},"nodeType":"YulFunctionCall","src":"1159:20:4"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"1149:6:4","type":""}]},{"nodeType":"YulAssignment","src":"1188:87:4","value":{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1248:6:4"},{"kind":"number","nodeType":"YulLiteral","src":"1256:4:4","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1244:3:4"},"nodeType":"YulFunctionCall","src":"1244:17:4"},{"name":"length","nodeType":"YulIdentifier","src":"1263:6:4"},{"name":"end","nodeType":"YulIdentifier","src":"1271:3:4"}],"functionName":{"name":"abi_decode_available_length_t_bytes_memory_ptr","nodeType":"YulIdentifier","src":"1197:46:4"},"nodeType":"YulFunctionCall","src":"1197:78:4"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"1188:5:4"}]}]},"name":"abi_decode_t_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"1049:6:4","type":""},{"name":"end","nodeType":"YulTypedName","src":"1057:3:4","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"1065:5:4","type":""}],"src":"1010:271:4"},{"body":{"nodeType":"YulBlock","src":"1338:86:4","statements":[{"nodeType":"YulAssignment","src":"1348:29:4","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1370:6:4"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1357:12:4"},"nodeType":"YulFunctionCall","src":"1357:20:4"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"1348:5:4"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1412:5:4"}],"functionName":{"name":"validator_revert_t_int256","nodeType":"YulIdentifier","src":"1386:25:4"},"nodeType":"YulFunctionCall","src":"1386:32:4"},"nodeType":"YulExpressionStatement","src":"1386:32:4"}]},"name":"abi_decode_t_int256","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"1316:6:4","type":""},{"name":"end","nodeType":"YulTypedName","src":"1324:3:4","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"1332:5:4","type":""}],"src":"1287:137:4"},{"body":{"nodeType":"YulBlock","src":"1506:211:4","statements":[{"body":{"nodeType":"YulBlock","src":"1555:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1564:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1567:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1557:6:4"},"nodeType":"YulFunctionCall","src":"1557:12:4"},"nodeType":"YulExpressionStatement","src":"1557:12:4"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1534:6:4"},{"kind":"number","nodeType":"YulLiteral","src":"1542:4:4","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1530:3:4"},"nodeType":"YulFunctionCall","src":"1530:17:4"},{"name":"end","nodeType":"YulIdentifier","src":"1549:3:4"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1526:3:4"},"nodeType":"YulFunctionCall","src":"1526:27:4"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1519:6:4"},"nodeType":"YulFunctionCall","src":"1519:35:4"},"nodeType":"YulIf","src":"1516:2:4"},{"nodeType":"YulVariableDeclaration","src":"1580:34:4","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1607:6:4"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1594:12:4"},"nodeType":"YulFunctionCall","src":"1594:20:4"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"1584:6:4","type":""}]},{"nodeType":"YulAssignment","src":"1623:88:4","value":{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1684:6:4"},{"kind":"number","nodeType":"YulLiteral","src":"1692:4:4","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1680:3:4"},"nodeType":"YulFunctionCall","src":"1680:17:4"},{"name":"length","nodeType":"YulIdentifier","src":"1699:6:4"},{"name":"end","nodeType":"YulIdentifier","src":"1707:3:4"}],"functionName":{"name":"abi_decode_available_length_t_string_memory_ptr","nodeType":"YulIdentifier","src":"1632:47:4"},"nodeType":"YulFunctionCall","src":"1632:79:4"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"1623:5:4"}]}]},"name":"abi_decode_t_string_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"1484:6:4","type":""},{"name":"end","nodeType":"YulTypedName","src":"1492:3:4","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"1500:5:4","type":""}],"src":"1444:273:4"},{"body":{"nodeType":"YulBlock","src":"1775:87:4","statements":[{"nodeType":"YulAssignment","src":"1785:29:4","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1807:6:4"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1794:12:4"},"nodeType":"YulFunctionCall","src":"1794:20:4"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"1785:5:4"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1850:5:4"}],"functionName":{"name":"validator_revert_t_uint256","nodeType":"YulIdentifier","src":"1823:26:4"},"nodeType":"YulFunctionCall","src":"1823:33:4"},"nodeType":"YulExpressionStatement","src":"1823:33:4"}]},"name":"abi_decode_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"1753:6:4","type":""},{"name":"end","nodeType":"YulTypedName","src":"1761:3:4","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"1769:5:4","type":""}],"src":"1723:139:4"},{"body":{"nodeType":"YulBlock","src":"1934:196:4","statements":[{"body":{"nodeType":"YulBlock","src":"1980:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1989:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1992:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1982:6:4"},"nodeType":"YulFunctionCall","src":"1982:12:4"},"nodeType":"YulExpressionStatement","src":"1982:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1955:7:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"1964:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1951:3:4"},"nodeType":"YulFunctionCall","src":"1951:23:4"},{"kind":"number","nodeType":"YulLiteral","src":"1976:2:4","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1947:3:4"},"nodeType":"YulFunctionCall","src":"1947:32:4"},"nodeType":"YulIf","src":"1944:2:4"},{"nodeType":"YulBlock","src":"2006:117:4","statements":[{"nodeType":"YulVariableDeclaration","src":"2021:15:4","value":{"kind":"number","nodeType":"YulLiteral","src":"2035:1:4","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"2025:6:4","type":""}]},{"nodeType":"YulAssignment","src":"2050:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2085:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"2096:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2081:3:4"},"nodeType":"YulFunctionCall","src":"2081:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2105:7:4"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"2060:20:4"},"nodeType":"YulFunctionCall","src":"2060:53:4"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2050:6:4"}]}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1904:9:4","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1915:7:4","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1927:6:4","type":""}],"src":"1868:262:4"},{"body":{"nodeType":"YulBlock","src":"2202:196:4","statements":[{"body":{"nodeType":"YulBlock","src":"2248:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2257:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2260:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2250:6:4"},"nodeType":"YulFunctionCall","src":"2250:12:4"},"nodeType":"YulExpressionStatement","src":"2250:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2223:7:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"2232:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2219:3:4"},"nodeType":"YulFunctionCall","src":"2219:23:4"},{"kind":"number","nodeType":"YulLiteral","src":"2244:2:4","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2215:3:4"},"nodeType":"YulFunctionCall","src":"2215:32:4"},"nodeType":"YulIf","src":"2212:2:4"},{"nodeType":"YulBlock","src":"2274:117:4","statements":[{"nodeType":"YulVariableDeclaration","src":"2289:15:4","value":{"kind":"number","nodeType":"YulLiteral","src":"2303:1:4","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"2293:6:4","type":""}]},{"nodeType":"YulAssignment","src":"2318:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2353:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"2364:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2349:3:4"},"nodeType":"YulFunctionCall","src":"2349:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2373:7:4"}],"functionName":{"name":"abi_decode_t_bytes32","nodeType":"YulIdentifier","src":"2328:20:4"},"nodeType":"YulFunctionCall","src":"2328:53:4"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2318:6:4"}]}]}]},"name":"abi_decode_tuple_t_bytes32","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2172:9:4","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2183:7:4","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2195:6:4","type":""}],"src":"2136:262:4"},{"body":{"nodeType":"YulBlock","src":"2487:324:4","statements":[{"body":{"nodeType":"YulBlock","src":"2533:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2542:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2545:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2535:6:4"},"nodeType":"YulFunctionCall","src":"2535:12:4"},"nodeType":"YulExpressionStatement","src":"2535:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2508:7:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"2517:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2504:3:4"},"nodeType":"YulFunctionCall","src":"2504:23:4"},{"kind":"number","nodeType":"YulLiteral","src":"2529:2:4","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2500:3:4"},"nodeType":"YulFunctionCall","src":"2500:32:4"},"nodeType":"YulIf","src":"2497:2:4"},{"nodeType":"YulBlock","src":"2559:117:4","statements":[{"nodeType":"YulVariableDeclaration","src":"2574:15:4","value":{"kind":"number","nodeType":"YulLiteral","src":"2588:1:4","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"2578:6:4","type":""}]},{"nodeType":"YulAssignment","src":"2603:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2638:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"2649:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2634:3:4"},"nodeType":"YulFunctionCall","src":"2634:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2658:7:4"}],"functionName":{"name":"abi_decode_t_bytes32","nodeType":"YulIdentifier","src":"2613:20:4"},"nodeType":"YulFunctionCall","src":"2613:53:4"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2603:6:4"}]}]},{"nodeType":"YulBlock","src":"2686:118:4","statements":[{"nodeType":"YulVariableDeclaration","src":"2701:16:4","value":{"kind":"number","nodeType":"YulLiteral","src":"2715:2:4","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"2705:6:4","type":""}]},{"nodeType":"YulAssignment","src":"2731:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2766:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"2777:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2762:3:4"},"nodeType":"YulFunctionCall","src":"2762:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2786:7:4"}],"functionName":{"name":"abi_decode_t_bytes32","nodeType":"YulIdentifier","src":"2741:20:4"},"nodeType":"YulFunctionCall","src":"2741:53:4"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"2731:6:4"}]}]}]},"name":"abi_decode_tuple_t_bytes32t_bytes32","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2449:9:4","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2460:7:4","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2472:6:4","type":""},{"name":"value1","nodeType":"YulTypedName","src":"2480:6:4","type":""}],"src":"2404:407:4"},{"body":{"nodeType":"YulBlock","src":"2892:298:4","statements":[{"body":{"nodeType":"YulBlock","src":"2938:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2947:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2950:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2940:6:4"},"nodeType":"YulFunctionCall","src":"2940:12:4"},"nodeType":"YulExpressionStatement","src":"2940:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2913:7:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"2922:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2909:3:4"},"nodeType":"YulFunctionCall","src":"2909:23:4"},{"kind":"number","nodeType":"YulLiteral","src":"2934:2:4","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2905:3:4"},"nodeType":"YulFunctionCall","src":"2905:32:4"},"nodeType":"YulIf","src":"2902:2:4"},{"nodeType":"YulBlock","src":"2964:219:4","statements":[{"nodeType":"YulVariableDeclaration","src":"2979:45:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3010:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"3021:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3006:3:4"},"nodeType":"YulFunctionCall","src":"3006:17:4"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2993:12:4"},"nodeType":"YulFunctionCall","src":"2993:31:4"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"2983:6:4","type":""}]},{"body":{"nodeType":"YulBlock","src":"3071:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3080:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3083:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3073:6:4"},"nodeType":"YulFunctionCall","src":"3073:12:4"},"nodeType":"YulExpressionStatement","src":"3073:12:4"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"3043:6:4"},{"kind":"number","nodeType":"YulLiteral","src":"3051:18:4","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3040:2:4"},"nodeType":"YulFunctionCall","src":"3040:30:4"},"nodeType":"YulIf","src":"3037:2:4"},{"nodeType":"YulAssignment","src":"3101:72:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3145:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"3156:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3141:3:4"},"nodeType":"YulFunctionCall","src":"3141:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"3165:7:4"}],"functionName":{"name":"abi_decode_t_bytes_memory_ptr","nodeType":"YulIdentifier","src":"3111:29:4"},"nodeType":"YulFunctionCall","src":"3111:62:4"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3101:6:4"}]}]}]},"name":"abi_decode_tuple_t_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2862:9:4","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2873:7:4","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2885:6:4","type":""}],"src":"2817:373:4"},{"body":{"nodeType":"YulBlock","src":"3261:195:4","statements":[{"body":{"nodeType":"YulBlock","src":"3307:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3316:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3319:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3309:6:4"},"nodeType":"YulFunctionCall","src":"3309:12:4"},"nodeType":"YulExpressionStatement","src":"3309:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3282:7:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"3291:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3278:3:4"},"nodeType":"YulFunctionCall","src":"3278:23:4"},{"kind":"number","nodeType":"YulLiteral","src":"3303:2:4","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3274:3:4"},"nodeType":"YulFunctionCall","src":"3274:32:4"},"nodeType":"YulIf","src":"3271:2:4"},{"nodeType":"YulBlock","src":"3333:116:4","statements":[{"nodeType":"YulVariableDeclaration","src":"3348:15:4","value":{"kind":"number","nodeType":"YulLiteral","src":"3362:1:4","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"3352:6:4","type":""}]},{"nodeType":"YulAssignment","src":"3377:62:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3411:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"3422:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3407:3:4"},"nodeType":"YulFunctionCall","src":"3407:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"3431:7:4"}],"functionName":{"name":"abi_decode_t_int256","nodeType":"YulIdentifier","src":"3387:19:4"},"nodeType":"YulFunctionCall","src":"3387:52:4"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3377:6:4"}]}]}]},"name":"abi_decode_tuple_t_int256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3231:9:4","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3242:7:4","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3254:6:4","type":""}],"src":"3196:260:4"},{"body":{"nodeType":"YulBlock","src":"3538:299:4","statements":[{"body":{"nodeType":"YulBlock","src":"3584:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3593:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3596:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3586:6:4"},"nodeType":"YulFunctionCall","src":"3586:12:4"},"nodeType":"YulExpressionStatement","src":"3586:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3559:7:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"3568:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3555:3:4"},"nodeType":"YulFunctionCall","src":"3555:23:4"},{"kind":"number","nodeType":"YulLiteral","src":"3580:2:4","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3551:3:4"},"nodeType":"YulFunctionCall","src":"3551:32:4"},"nodeType":"YulIf","src":"3548:2:4"},{"nodeType":"YulBlock","src":"3610:220:4","statements":[{"nodeType":"YulVariableDeclaration","src":"3625:45:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3656:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"3667:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3652:3:4"},"nodeType":"YulFunctionCall","src":"3652:17:4"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3639:12:4"},"nodeType":"YulFunctionCall","src":"3639:31:4"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"3629:6:4","type":""}]},{"body":{"nodeType":"YulBlock","src":"3717:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3726:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3729:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3719:6:4"},"nodeType":"YulFunctionCall","src":"3719:12:4"},"nodeType":"YulExpressionStatement","src":"3719:12:4"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"3689:6:4"},{"kind":"number","nodeType":"YulLiteral","src":"3697:18:4","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3686:2:4"},"nodeType":"YulFunctionCall","src":"3686:30:4"},"nodeType":"YulIf","src":"3683:2:4"},{"nodeType":"YulAssignment","src":"3747:73:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3792:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"3803:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3788:3:4"},"nodeType":"YulFunctionCall","src":"3788:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"3812:7:4"}],"functionName":{"name":"abi_decode_t_string_memory_ptr","nodeType":"YulIdentifier","src":"3757:30:4"},"nodeType":"YulFunctionCall","src":"3757:63:4"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3747:6:4"}]}]}]},"name":"abi_decode_tuple_t_string_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3508:9:4","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3519:7:4","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3531:6:4","type":""}],"src":"3462:375:4"},{"body":{"nodeType":"YulBlock","src":"3909:196:4","statements":[{"body":{"nodeType":"YulBlock","src":"3955:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3964:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3967:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3957:6:4"},"nodeType":"YulFunctionCall","src":"3957:12:4"},"nodeType":"YulExpressionStatement","src":"3957:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3930:7:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"3939:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3926:3:4"},"nodeType":"YulFunctionCall","src":"3926:23:4"},{"kind":"number","nodeType":"YulLiteral","src":"3951:2:4","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3922:3:4"},"nodeType":"YulFunctionCall","src":"3922:32:4"},"nodeType":"YulIf","src":"3919:2:4"},{"nodeType":"YulBlock","src":"3981:117:4","statements":[{"nodeType":"YulVariableDeclaration","src":"3996:15:4","value":{"kind":"number","nodeType":"YulLiteral","src":"4010:1:4","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"4000:6:4","type":""}]},{"nodeType":"YulAssignment","src":"4025:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4060:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"4071:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4056:3:4"},"nodeType":"YulFunctionCall","src":"4056:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4080:7:4"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"4035:20:4"},"nodeType":"YulFunctionCall","src":"4035:53:4"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"4025:6:4"}]}]}]},"name":"abi_decode_tuple_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3879:9:4","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3890:7:4","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3902:6:4","type":""}],"src":"3843:262:4"},{"body":{"nodeType":"YulBlock","src":"4204:427:4","statements":[{"body":{"nodeType":"YulBlock","src":"4250:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4259:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4262:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4252:6:4"},"nodeType":"YulFunctionCall","src":"4252:12:4"},"nodeType":"YulExpressionStatement","src":"4252:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"4225:7:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"4234:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4221:3:4"},"nodeType":"YulFunctionCall","src":"4221:23:4"},{"kind":"number","nodeType":"YulLiteral","src":"4246:2:4","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4217:3:4"},"nodeType":"YulFunctionCall","src":"4217:32:4"},"nodeType":"YulIf","src":"4214:2:4"},{"nodeType":"YulBlock","src":"4276:117:4","statements":[{"nodeType":"YulVariableDeclaration","src":"4291:15:4","value":{"kind":"number","nodeType":"YulLiteral","src":"4305:1:4","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"4295:6:4","type":""}]},{"nodeType":"YulAssignment","src":"4320:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4355:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"4366:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4351:3:4"},"nodeType":"YulFunctionCall","src":"4351:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4375:7:4"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"4330:20:4"},"nodeType":"YulFunctionCall","src":"4330:53:4"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"4320:6:4"}]}]},{"nodeType":"YulBlock","src":"4403:221:4","statements":[{"nodeType":"YulVariableDeclaration","src":"4418:46:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4449:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"4460:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4445:3:4"},"nodeType":"YulFunctionCall","src":"4445:18:4"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4432:12:4"},"nodeType":"YulFunctionCall","src":"4432:32:4"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"4422:6:4","type":""}]},{"body":{"nodeType":"YulBlock","src":"4511:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4520:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4523:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4513:6:4"},"nodeType":"YulFunctionCall","src":"4513:12:4"},"nodeType":"YulExpressionStatement","src":"4513:12:4"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"4483:6:4"},{"kind":"number","nodeType":"YulLiteral","src":"4491:18:4","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4480:2:4"},"nodeType":"YulFunctionCall","src":"4480:30:4"},"nodeType":"YulIf","src":"4477:2:4"},{"nodeType":"YulAssignment","src":"4541:73:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4586:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"4597:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4582:3:4"},"nodeType":"YulFunctionCall","src":"4582:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4606:7:4"}],"functionName":{"name":"abi_decode_t_string_memory_ptr","nodeType":"YulIdentifier","src":"4551:30:4"},"nodeType":"YulFunctionCall","src":"4551:63:4"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"4541:6:4"}]}]}]},"name":"abi_decode_tuple_t_uint256t_string_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4166:9:4","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"4177:7:4","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"4189:6:4","type":""},{"name":"value1","nodeType":"YulTypedName","src":"4197:6:4","type":""}],"src":"4111:520:4"},{"body":{"nodeType":"YulBlock","src":"4720:324:4","statements":[{"body":{"nodeType":"YulBlock","src":"4766:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4775:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4778:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4768:6:4"},"nodeType":"YulFunctionCall","src":"4768:12:4"},"nodeType":"YulExpressionStatement","src":"4768:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"4741:7:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"4750:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4737:3:4"},"nodeType":"YulFunctionCall","src":"4737:23:4"},{"kind":"number","nodeType":"YulLiteral","src":"4762:2:4","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4733:3:4"},"nodeType":"YulFunctionCall","src":"4733:32:4"},"nodeType":"YulIf","src":"4730:2:4"},{"nodeType":"YulBlock","src":"4792:117:4","statements":[{"nodeType":"YulVariableDeclaration","src":"4807:15:4","value":{"kind":"number","nodeType":"YulLiteral","src":"4821:1:4","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"4811:6:4","type":""}]},{"nodeType":"YulAssignment","src":"4836:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4871:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"4882:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4867:3:4"},"nodeType":"YulFunctionCall","src":"4867:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4891:7:4"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"4846:20:4"},"nodeType":"YulFunctionCall","src":"4846:53:4"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"4836:6:4"}]}]},{"nodeType":"YulBlock","src":"4919:118:4","statements":[{"nodeType":"YulVariableDeclaration","src":"4934:16:4","value":{"kind":"number","nodeType":"YulLiteral","src":"4948:2:4","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"4938:6:4","type":""}]},{"nodeType":"YulAssignment","src":"4964:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4999:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"5010:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4995:3:4"},"nodeType":"YulFunctionCall","src":"4995:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"5019:7:4"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"4974:20:4"},"nodeType":"YulFunctionCall","src":"4974:53:4"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"4964:6:4"}]}]}]},"name":"abi_decode_tuple_t_uint256t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4682:9:4","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"4693:7:4","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"4705:6:4","type":""},{"name":"value1","nodeType":"YulTypedName","src":"4713:6:4","type":""}],"src":"4637:407:4"},{"body":{"nodeType":"YulBlock","src":"5187:787:4","statements":[{"body":{"nodeType":"YulBlock","src":"5234:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5243:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5246:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5236:6:4"},"nodeType":"YulFunctionCall","src":"5236:12:4"},"nodeType":"YulExpressionStatement","src":"5236:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"5208:7:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"5217:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5204:3:4"},"nodeType":"YulFunctionCall","src":"5204:23:4"},{"kind":"number","nodeType":"YulLiteral","src":"5229:3:4","type":"","value":"128"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"5200:3:4"},"nodeType":"YulFunctionCall","src":"5200:33:4"},"nodeType":"YulIf","src":"5197:2:4"},{"nodeType":"YulBlock","src":"5260:117:4","statements":[{"nodeType":"YulVariableDeclaration","src":"5275:15:4","value":{"kind":"number","nodeType":"YulLiteral","src":"5289:1:4","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"5279:6:4","type":""}]},{"nodeType":"YulAssignment","src":"5304:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5339:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"5350:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5335:3:4"},"nodeType":"YulFunctionCall","src":"5335:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"5359:7:4"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"5314:20:4"},"nodeType":"YulFunctionCall","src":"5314:53:4"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"5304:6:4"}]}]},{"nodeType":"YulBlock","src":"5387:118:4","statements":[{"nodeType":"YulVariableDeclaration","src":"5402:16:4","value":{"kind":"number","nodeType":"YulLiteral","src":"5416:2:4","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"5406:6:4","type":""}]},{"nodeType":"YulAssignment","src":"5432:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5467:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"5478:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5463:3:4"},"nodeType":"YulFunctionCall","src":"5463:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"5487:7:4"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"5442:20:4"},"nodeType":"YulFunctionCall","src":"5442:53:4"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"5432:6:4"}]}]},{"nodeType":"YulBlock","src":"5515:221:4","statements":[{"nodeType":"YulVariableDeclaration","src":"5530:46:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5561:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"5572:2:4","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5557:3:4"},"nodeType":"YulFunctionCall","src":"5557:18:4"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"5544:12:4"},"nodeType":"YulFunctionCall","src":"5544:32:4"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"5534:6:4","type":""}]},{"body":{"nodeType":"YulBlock","src":"5623:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5632:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5635:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5625:6:4"},"nodeType":"YulFunctionCall","src":"5625:12:4"},"nodeType":"YulExpressionStatement","src":"5625:12:4"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"5595:6:4"},{"kind":"number","nodeType":"YulLiteral","src":"5603:18:4","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5592:2:4"},"nodeType":"YulFunctionCall","src":"5592:30:4"},"nodeType":"YulIf","src":"5589:2:4"},{"nodeType":"YulAssignment","src":"5653:73:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5698:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"5709:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5694:3:4"},"nodeType":"YulFunctionCall","src":"5694:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"5718:7:4"}],"functionName":{"name":"abi_decode_t_string_memory_ptr","nodeType":"YulIdentifier","src":"5663:30:4"},"nodeType":"YulFunctionCall","src":"5663:63:4"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"5653:6:4"}]}]},{"nodeType":"YulBlock","src":"5746:221:4","statements":[{"nodeType":"YulVariableDeclaration","src":"5761:46:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5792:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"5803:2:4","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5788:3:4"},"nodeType":"YulFunctionCall","src":"5788:18:4"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"5775:12:4"},"nodeType":"YulFunctionCall","src":"5775:32:4"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"5765:6:4","type":""}]},{"body":{"nodeType":"YulBlock","src":"5854:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5863:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5866:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5856:6:4"},"nodeType":"YulFunctionCall","src":"5856:12:4"},"nodeType":"YulExpressionStatement","src":"5856:12:4"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"5826:6:4"},{"kind":"number","nodeType":"YulLiteral","src":"5834:18:4","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5823:2:4"},"nodeType":"YulFunctionCall","src":"5823:30:4"},"nodeType":"YulIf","src":"5820:2:4"},{"nodeType":"YulAssignment","src":"5884:73:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5929:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"5940:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5925:3:4"},"nodeType":"YulFunctionCall","src":"5925:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"5949:7:4"}],"functionName":{"name":"abi_decode_t_string_memory_ptr","nodeType":"YulIdentifier","src":"5894:30:4"},"nodeType":"YulFunctionCall","src":"5894:63:4"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"5884:6:4"}]}]}]},"name":"abi_decode_tuple_t_uint256t_uint256t_string_memory_ptrt_string_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5133:9:4","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"5144:7:4","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"5156:6:4","type":""},{"name":"value1","nodeType":"YulTypedName","src":"5164:6:4","type":""},{"name":"value2","nodeType":"YulTypedName","src":"5172:6:4","type":""},{"name":"value3","nodeType":"YulTypedName","src":"5180:6:4","type":""}],"src":"5050:924:4"},{"body":{"nodeType":"YulBlock","src":"6060:99:4","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6104:6:4"},{"name":"pos","nodeType":"YulIdentifier","src":"6112:3:4"}],"functionName":{"name":"abi_encode_t_bytes32_to_t_bytes32","nodeType":"YulIdentifier","src":"6070:33:4"},"nodeType":"YulFunctionCall","src":"6070:46:4"},"nodeType":"YulExpressionStatement","src":"6070:46:4"},{"nodeType":"YulAssignment","src":"6125:28:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6143:3:4"},{"kind":"number","nodeType":"YulLiteral","src":"6148:4:4","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6139:3:4"},"nodeType":"YulFunctionCall","src":"6139:14:4"},"variableNames":[{"name":"updatedPos","nodeType":"YulIdentifier","src":"6125:10:4"}]}]},"name":"abi_encodeUpdatedPos_t_bytes32_to_t_bytes32","nodeType":"YulFunctionDefinition","parameters":[{"name":"value0","nodeType":"YulTypedName","src":"6033:6:4","type":""},{"name":"pos","nodeType":"YulTypedName","src":"6041:3:4","type":""}],"returnVariables":[{"name":"updatedPos","nodeType":"YulTypedName","src":"6049:10:4","type":""}],"src":"5980:179:4"},{"body":{"nodeType":"YulBlock","src":"6245:99:4","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6289:6:4"},{"name":"pos","nodeType":"YulIdentifier","src":"6297:3:4"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256","nodeType":"YulIdentifier","src":"6255:33:4"},"nodeType":"YulFunctionCall","src":"6255:46:4"},"nodeType":"YulExpressionStatement","src":"6255:46:4"},{"nodeType":"YulAssignment","src":"6310:28:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6328:3:4"},{"kind":"number","nodeType":"YulLiteral","src":"6333:4:4","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6324:3:4"},"nodeType":"YulFunctionCall","src":"6324:14:4"},"variableNames":[{"name":"updatedPos","nodeType":"YulIdentifier","src":"6310:10:4"}]}]},"name":"abi_encodeUpdatedPos_t_uint256_to_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value0","nodeType":"YulTypedName","src":"6218:6:4","type":""},{"name":"pos","nodeType":"YulTypedName","src":"6226:3:4","type":""}],"returnVariables":[{"name":"updatedPos","nodeType":"YulTypedName","src":"6234:10:4","type":""}],"src":"6165:179:4"},{"body":{"nodeType":"YulBlock","src":"6415:53:4","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6432:3:4"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6455:5:4"}],"functionName":{"name":"cleanup_t_address","nodeType":"YulIdentifier","src":"6437:17:4"},"nodeType":"YulFunctionCall","src":"6437:24:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6425:6:4"},"nodeType":"YulFunctionCall","src":"6425:37:4"},"nodeType":"YulExpressionStatement","src":"6425:37:4"}]},"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"6403:5:4","type":""},{"name":"pos","nodeType":"YulTypedName","src":"6410:3:4","type":""}],"src":"6350:118:4"},{"body":{"nodeType":"YulBlock","src":"6618:582:4","statements":[{"nodeType":"YulVariableDeclaration","src":"6628:66:4","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6688:5:4"}],"functionName":{"name":"array_length_t_array$_t_bytes32_$2_memory_ptr","nodeType":"YulIdentifier","src":"6642:45:4"},"nodeType":"YulFunctionCall","src":"6642:52:4"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"6632:6:4","type":""}]},{"nodeType":"YulAssignment","src":"6703:91:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6782:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"6787:6:4"}],"functionName":{"name":"array_storeLengthForEncoding_t_array$_t_bytes32_$2_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"6710:71:4"},"nodeType":"YulFunctionCall","src":"6710:84:4"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"6703:3:4"}]},{"nodeType":"YulVariableDeclaration","src":"6803:69:4","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6866:5:4"}],"functionName":{"name":"array_dataslot_t_array$_t_bytes32_$2_memory_ptr","nodeType":"YulIdentifier","src":"6818:47:4"},"nodeType":"YulFunctionCall","src":"6818:54:4"},"variables":[{"name":"baseRef","nodeType":"YulTypedName","src":"6807:7:4","type":""}]},{"nodeType":"YulVariableDeclaration","src":"6881:21:4","value":{"name":"baseRef","nodeType":"YulIdentifier","src":"6895:7:4"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"6885:6:4","type":""}]},{"body":{"nodeType":"YulBlock","src":"6971:222:4","statements":[{"nodeType":"YulVariableDeclaration","src":"6985:34:4","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"7012:6:4"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"7006:5:4"},"nodeType":"YulFunctionCall","src":"7006:13:4"},"variables":[{"name":"elementValue0","nodeType":"YulTypedName","src":"6989:13:4","type":""}]},{"nodeType":"YulAssignment","src":"7032:70:4","value":{"arguments":[{"name":"elementValue0","nodeType":"YulIdentifier","src":"7083:13:4"},{"name":"pos","nodeType":"YulIdentifier","src":"7098:3:4"}],"functionName":{"name":"abi_encodeUpdatedPos_t_bytes32_to_t_bytes32","nodeType":"YulIdentifier","src":"7039:43:4"},"nodeType":"YulFunctionCall","src":"7039:63:4"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"7032:3:4"}]},{"nodeType":"YulAssignment","src":"7115:68:4","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"7176:6:4"}],"functionName":{"name":"array_nextElement_t_array$_t_bytes32_$2_memory_ptr","nodeType":"YulIdentifier","src":"7125:50:4"},"nodeType":"YulFunctionCall","src":"7125:58:4"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"7115:6:4"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"6933:1:4"},{"name":"length","nodeType":"YulIdentifier","src":"6936:6:4"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"6930:2:4"},"nodeType":"YulFunctionCall","src":"6930:13:4"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"6944:18:4","statements":[{"nodeType":"YulAssignment","src":"6946:14:4","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"6955:1:4"},{"kind":"number","nodeType":"YulLiteral","src":"6958:1:4","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6951:3:4"},"nodeType":"YulFunctionCall","src":"6951:9:4"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"6946:1:4"}]}]},"pre":{"nodeType":"YulBlock","src":"6915:14:4","statements":[{"nodeType":"YulVariableDeclaration","src":"6917:10:4","value":{"kind":"number","nodeType":"YulLiteral","src":"6926:1:4","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"6921:1:4","type":""}]}]},"src":"6911:282:4"}]},"name":"abi_encode_t_array$_t_bytes32_$2_memory_ptr_to_t_array$_t_bytes32_$2_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"6605:5:4","type":""},{"name":"pos","nodeType":"YulTypedName","src":"6612:3:4","type":""}],"src":"6506:694:4"},{"body":{"nodeType":"YulBlock","src":"7350:582:4","statements":[{"nodeType":"YulVariableDeclaration","src":"7360:66:4","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"7420:5:4"}],"functionName":{"name":"array_length_t_array$_t_uint256_$2_memory_ptr","nodeType":"YulIdentifier","src":"7374:45:4"},"nodeType":"YulFunctionCall","src":"7374:52:4"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"7364:6:4","type":""}]},{"nodeType":"YulAssignment","src":"7435:91:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"7514:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"7519:6:4"}],"functionName":{"name":"array_storeLengthForEncoding_t_array$_t_uint256_$2_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"7442:71:4"},"nodeType":"YulFunctionCall","src":"7442:84:4"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"7435:3:4"}]},{"nodeType":"YulVariableDeclaration","src":"7535:69:4","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"7598:5:4"}],"functionName":{"name":"array_dataslot_t_array$_t_uint256_$2_memory_ptr","nodeType":"YulIdentifier","src":"7550:47:4"},"nodeType":"YulFunctionCall","src":"7550:54:4"},"variables":[{"name":"baseRef","nodeType":"YulTypedName","src":"7539:7:4","type":""}]},{"nodeType":"YulVariableDeclaration","src":"7613:21:4","value":{"name":"baseRef","nodeType":"YulIdentifier","src":"7627:7:4"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"7617:6:4","type":""}]},{"body":{"nodeType":"YulBlock","src":"7703:222:4","statements":[{"nodeType":"YulVariableDeclaration","src":"7717:34:4","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"7744:6:4"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"7738:5:4"},"nodeType":"YulFunctionCall","src":"7738:13:4"},"variables":[{"name":"elementValue0","nodeType":"YulTypedName","src":"7721:13:4","type":""}]},{"nodeType":"YulAssignment","src":"7764:70:4","value":{"arguments":[{"name":"elementValue0","nodeType":"YulIdentifier","src":"7815:13:4"},{"name":"pos","nodeType":"YulIdentifier","src":"7830:3:4"}],"functionName":{"name":"abi_encodeUpdatedPos_t_uint256_to_t_uint256","nodeType":"YulIdentifier","src":"7771:43:4"},"nodeType":"YulFunctionCall","src":"7771:63:4"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"7764:3:4"}]},{"nodeType":"YulAssignment","src":"7847:68:4","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"7908:6:4"}],"functionName":{"name":"array_nextElement_t_array$_t_uint256_$2_memory_ptr","nodeType":"YulIdentifier","src":"7857:50:4"},"nodeType":"YulFunctionCall","src":"7857:58:4"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"7847:6:4"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"7665:1:4"},{"name":"length","nodeType":"YulIdentifier","src":"7668:6:4"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"7662:2:4"},"nodeType":"YulFunctionCall","src":"7662:13:4"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"7676:18:4","statements":[{"nodeType":"YulAssignment","src":"7678:14:4","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"7687:1:4"},{"kind":"number","nodeType":"YulLiteral","src":"7690:1:4","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7683:3:4"},"nodeType":"YulFunctionCall","src":"7683:9:4"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"7678:1:4"}]}]},"pre":{"nodeType":"YulBlock","src":"7647:14:4","statements":[{"nodeType":"YulVariableDeclaration","src":"7649:10:4","value":{"kind":"number","nodeType":"YulLiteral","src":"7658:1:4","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"7653:1:4","type":""}]}]},"src":"7643:282:4"}]},"name":"abi_encode_t_array$_t_uint256_$2_memory_ptr_to_t_array$_t_uint256_$2_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"7337:5:4","type":""},{"name":"pos","nodeType":"YulTypedName","src":"7344:3:4","type":""}],"src":"7238:694:4"},{"body":{"nodeType":"YulBlock","src":"7993:53:4","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"8010:3:4"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8033:5:4"}],"functionName":{"name":"cleanup_t_bytes32","nodeType":"YulIdentifier","src":"8015:17:4"},"nodeType":"YulFunctionCall","src":"8015:24:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8003:6:4"},"nodeType":"YulFunctionCall","src":"8003:37:4"},"nodeType":"YulExpressionStatement","src":"8003:37:4"}]},"name":"abi_encode_t_bytes32_to_t_bytes32","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"7981:5:4","type":""},{"name":"pos","nodeType":"YulTypedName","src":"7988:3:4","type":""}],"src":"7938:108:4"},{"body":{"nodeType":"YulBlock","src":"8117:53:4","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"8134:3:4"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8157:5:4"}],"functionName":{"name":"cleanup_t_bytes32","nodeType":"YulIdentifier","src":"8139:17:4"},"nodeType":"YulFunctionCall","src":"8139:24:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8127:6:4"},"nodeType":"YulFunctionCall","src":"8127:37:4"},"nodeType":"YulExpressionStatement","src":"8127:37:4"}]},"name":"abi_encode_t_bytes32_to_t_bytes32_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"8105:5:4","type":""},{"name":"pos","nodeType":"YulTypedName","src":"8112:3:4","type":""}],"src":"8052:118:4"},{"body":{"nodeType":"YulBlock","src":"8266:270:4","statements":[{"nodeType":"YulVariableDeclaration","src":"8276:52:4","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8322:5:4"}],"functionName":{"name":"array_length_t_bytes_memory_ptr","nodeType":"YulIdentifier","src":"8290:31:4"},"nodeType":"YulFunctionCall","src":"8290:38:4"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"8280:6:4","type":""}]},{"nodeType":"YulAssignment","src":"8337:77:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"8402:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"8407:6:4"}],"functionName":{"name":"array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"8344:57:4"},"nodeType":"YulFunctionCall","src":"8344:70:4"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"8337:3:4"}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8449:5:4"},{"kind":"number","nodeType":"YulLiteral","src":"8456:4:4","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8445:3:4"},"nodeType":"YulFunctionCall","src":"8445:16:4"},{"name":"pos","nodeType":"YulIdentifier","src":"8463:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"8468:6:4"}],"functionName":{"name":"copy_memory_to_memory","nodeType":"YulIdentifier","src":"8423:21:4"},"nodeType":"YulFunctionCall","src":"8423:52:4"},"nodeType":"YulExpressionStatement","src":"8423:52:4"},{"nodeType":"YulAssignment","src":"8484:46:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"8495:3:4"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"8522:6:4"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"8500:21:4"},"nodeType":"YulFunctionCall","src":"8500:29:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8491:3:4"},"nodeType":"YulFunctionCall","src":"8491:39:4"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"8484:3:4"}]}]},"name":"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"8247:5:4","type":""},{"name":"pos","nodeType":"YulTypedName","src":"8254:3:4","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"8262:3:4","type":""}],"src":"8176:360:4"},{"body":{"nodeType":"YulBlock","src":"8650:265:4","statements":[{"nodeType":"YulVariableDeclaration","src":"8660:52:4","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8706:5:4"}],"functionName":{"name":"array_length_t_bytes_memory_ptr","nodeType":"YulIdentifier","src":"8674:31:4"},"nodeType":"YulFunctionCall","src":"8674:38:4"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"8664:6:4","type":""}]},{"nodeType":"YulAssignment","src":"8721:95:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"8804:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"8809:6:4"}],"functionName":{"name":"array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulIdentifier","src":"8728:75:4"},"nodeType":"YulFunctionCall","src":"8728:88:4"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"8721:3:4"}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8851:5:4"},{"kind":"number","nodeType":"YulLiteral","src":"8858:4:4","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8847:3:4"},"nodeType":"YulFunctionCall","src":"8847:16:4"},{"name":"pos","nodeType":"YulIdentifier","src":"8865:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"8870:6:4"}],"functionName":{"name":"copy_memory_to_memory","nodeType":"YulIdentifier","src":"8825:21:4"},"nodeType":"YulFunctionCall","src":"8825:52:4"},"nodeType":"YulExpressionStatement","src":"8825:52:4"},{"nodeType":"YulAssignment","src":"8886:23:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"8897:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"8902:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8893:3:4"},"nodeType":"YulFunctionCall","src":"8893:16:4"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"8886:3:4"}]}]},"name":"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"8631:5:4","type":""},{"name":"pos","nodeType":"YulTypedName","src":"8638:3:4","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"8646:3:4","type":""}],"src":"8542:373:4"},{"body":{"nodeType":"YulBlock","src":"8984:52:4","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"9001:3:4"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9023:5:4"}],"functionName":{"name":"cleanup_t_int256","nodeType":"YulIdentifier","src":"9006:16:4"},"nodeType":"YulFunctionCall","src":"9006:23:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8994:6:4"},"nodeType":"YulFunctionCall","src":"8994:36:4"},"nodeType":"YulExpressionStatement","src":"8994:36:4"}]},"name":"abi_encode_t_int256_to_t_int256_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"8972:5:4","type":""},{"name":"pos","nodeType":"YulTypedName","src":"8979:3:4","type":""}],"src":"8921:115:4"},{"body":{"nodeType":"YulBlock","src":"9134:272:4","statements":[{"nodeType":"YulVariableDeclaration","src":"9144:53:4","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9191:5:4"}],"functionName":{"name":"array_length_t_string_memory_ptr","nodeType":"YulIdentifier","src":"9158:32:4"},"nodeType":"YulFunctionCall","src":"9158:39:4"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"9148:6:4","type":""}]},{"nodeType":"YulAssignment","src":"9206:78:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"9272:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"9277:6:4"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"9213:58:4"},"nodeType":"YulFunctionCall","src":"9213:71:4"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"9206:3:4"}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9319:5:4"},{"kind":"number","nodeType":"YulLiteral","src":"9326:4:4","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9315:3:4"},"nodeType":"YulFunctionCall","src":"9315:16:4"},{"name":"pos","nodeType":"YulIdentifier","src":"9333:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"9338:6:4"}],"functionName":{"name":"copy_memory_to_memory","nodeType":"YulIdentifier","src":"9293:21:4"},"nodeType":"YulFunctionCall","src":"9293:52:4"},"nodeType":"YulExpressionStatement","src":"9293:52:4"},{"nodeType":"YulAssignment","src":"9354:46:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"9365:3:4"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"9392:6:4"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"9370:21:4"},"nodeType":"YulFunctionCall","src":"9370:29:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9361:3:4"},"nodeType":"YulFunctionCall","src":"9361:39:4"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"9354:3:4"}]}]},"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"9115:5:4","type":""},{"name":"pos","nodeType":"YulTypedName","src":"9122:3:4","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"9130:3:4","type":""}],"src":"9042:364:4"},{"body":{"nodeType":"YulBlock","src":"9522:267:4","statements":[{"nodeType":"YulVariableDeclaration","src":"9532:53:4","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9579:5:4"}],"functionName":{"name":"array_length_t_string_memory_ptr","nodeType":"YulIdentifier","src":"9546:32:4"},"nodeType":"YulFunctionCall","src":"9546:39:4"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"9536:6:4","type":""}]},{"nodeType":"YulAssignment","src":"9594:96:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"9678:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"9683:6:4"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulIdentifier","src":"9601:76:4"},"nodeType":"YulFunctionCall","src":"9601:89:4"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"9594:3:4"}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9725:5:4"},{"kind":"number","nodeType":"YulLiteral","src":"9732:4:4","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9721:3:4"},"nodeType":"YulFunctionCall","src":"9721:16:4"},{"name":"pos","nodeType":"YulIdentifier","src":"9739:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"9744:6:4"}],"functionName":{"name":"copy_memory_to_memory","nodeType":"YulIdentifier","src":"9699:21:4"},"nodeType":"YulFunctionCall","src":"9699:52:4"},"nodeType":"YulExpressionStatement","src":"9699:52:4"},{"nodeType":"YulAssignment","src":"9760:23:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"9771:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"9776:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9767:3:4"},"nodeType":"YulFunctionCall","src":"9767:16:4"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"9760:3:4"}]}]},"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"9503:5:4","type":""},{"name":"pos","nodeType":"YulTypedName","src":"9510:3:4","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"9518:3:4","type":""}],"src":"9412:377:4"},{"body":{"nodeType":"YulBlock","src":"9957:385:4","statements":[{"nodeType":"YulVariableDeclaration","src":"9967:26:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"9983:3:4"},{"kind":"number","nodeType":"YulLiteral","src":"9988:4:4","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9979:3:4"},"nodeType":"YulFunctionCall","src":"9979:14:4"},"variables":[{"name":"tail","nodeType":"YulTypedName","src":"9971:4:4","type":""}]},{"nodeType":"YulBlock","src":"10003:161:4","statements":[{"nodeType":"YulVariableDeclaration","src":"10035:43:4","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"10065:5:4"},{"kind":"number","nodeType":"YulLiteral","src":"10072:4:4","type":"","value":"0x00"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10061:3:4"},"nodeType":"YulFunctionCall","src":"10061:16:4"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"10055:5:4"},"nodeType":"YulFunctionCall","src":"10055:23:4"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"10039:12:4","type":""}]},{"expression":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"10125:12:4"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"10143:3:4"},{"kind":"number","nodeType":"YulLiteral","src":"10148:4:4","type":"","value":"0x00"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10139:3:4"},"nodeType":"YulFunctionCall","src":"10139:14:4"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256","nodeType":"YulIdentifier","src":"10091:33:4"},"nodeType":"YulFunctionCall","src":"10091:63:4"},"nodeType":"YulExpressionStatement","src":"10091:63:4"}]},{"nodeType":"YulBlock","src":"10174:161:4","statements":[{"nodeType":"YulVariableDeclaration","src":"10206:43:4","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"10236:5:4"},{"kind":"number","nodeType":"YulLiteral","src":"10243:4:4","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10232:3:4"},"nodeType":"YulFunctionCall","src":"10232:16:4"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"10226:5:4"},"nodeType":"YulFunctionCall","src":"10226:23:4"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"10210:12:4","type":""}]},{"expression":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"10296:12:4"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"10314:3:4"},{"kind":"number","nodeType":"YulLiteral","src":"10319:4:4","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10310:3:4"},"nodeType":"YulFunctionCall","src":"10310:14:4"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256","nodeType":"YulIdentifier","src":"10262:33:4"},"nodeType":"YulFunctionCall","src":"10262:63:4"},"nodeType":"YulExpressionStatement","src":"10262:63:4"}]}]},"name":"abi_encode_t_struct$_Struct_$47_memory_ptr_to_t_struct$_Struct_$47_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"9944:5:4","type":""},{"name":"pos","nodeType":"YulTypedName","src":"9951:3:4","type":""}],"src":"9847:495:4"},{"body":{"nodeType":"YulBlock","src":"10403:53:4","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"10420:3:4"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"10443:5:4"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"10425:17:4"},"nodeType":"YulFunctionCall","src":"10425:24:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10413:6:4"},"nodeType":"YulFunctionCall","src":"10413:37:4"},"nodeType":"YulExpressionStatement","src":"10413:37:4"}]},"name":"abi_encode_t_uint256_to_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"10391:5:4","type":""},{"name":"pos","nodeType":"YulTypedName","src":"10398:3:4","type":""}],"src":"10348:108:4"},{"body":{"nodeType":"YulBlock","src":"10527:53:4","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"10544:3:4"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"10567:5:4"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"10549:17:4"},"nodeType":"YulFunctionCall","src":"10549:24:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10537:6:4"},"nodeType":"YulFunctionCall","src":"10537:37:4"},"nodeType":"YulExpressionStatement","src":"10537:37:4"}]},"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"10515:5:4","type":""},{"name":"pos","nodeType":"YulTypedName","src":"10522:3:4","type":""}],"src":"10462:118:4"},{"body":{"nodeType":"YulBlock","src":"10720:137:4","statements":[{"nodeType":"YulAssignment","src":"10731:100:4","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"10818:6:4"},{"name":"pos","nodeType":"YulIdentifier","src":"10827:3:4"}],"functionName":{"name":"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulIdentifier","src":"10738:79:4"},"nodeType":"YulFunctionCall","src":"10738:93:4"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"10731:3:4"}]},{"nodeType":"YulAssignment","src":"10841:10:4","value":{"name":"pos","nodeType":"YulIdentifier","src":"10848:3:4"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"10841:3:4"}]}]},"name":"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"10699:3:4","type":""},{"name":"value0","nodeType":"YulTypedName","src":"10705:6:4","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"10716:3:4","type":""}],"src":"10586:271:4"},{"body":{"nodeType":"YulBlock","src":"10999:139:4","statements":[{"nodeType":"YulAssignment","src":"11010:102:4","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"11099:6:4"},{"name":"pos","nodeType":"YulIdentifier","src":"11108:3:4"}],"functionName":{"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulIdentifier","src":"11017:81:4"},"nodeType":"YulFunctionCall","src":"11017:95:4"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"11010:3:4"}]},{"nodeType":"YulAssignment","src":"11122:10:4","value":{"name":"pos","nodeType":"YulIdentifier","src":"11129:3:4"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"11122:3:4"}]}]},"name":"abi_encode_tuple_packed_t_string_memory_ptr__to_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"10978:3:4","type":""},{"name":"value0","nodeType":"YulTypedName","src":"10984:6:4","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"10995:3:4","type":""}],"src":"10863:275:4"},{"body":{"nodeType":"YulBlock","src":"11242:124:4","statements":[{"nodeType":"YulAssignment","src":"11252:26:4","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11264:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"11275:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11260:3:4"},"nodeType":"YulFunctionCall","src":"11260:18:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"11252:4:4"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"11332:6:4"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11345:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"11356:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11341:3:4"},"nodeType":"YulFunctionCall","src":"11341:17:4"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"11288:43:4"},"nodeType":"YulFunctionCall","src":"11288:71:4"},"nodeType":"YulExpressionStatement","src":"11288:71:4"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"11214:9:4","type":""},{"name":"value0","nodeType":"YulTypedName","src":"11226:6:4","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"11237:4:4","type":""}],"src":"11144:222:4"},{"body":{"nodeType":"YulBlock","src":"11516:170:4","statements":[{"nodeType":"YulAssignment","src":"11526:26:4","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11538:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"11549:2:4","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11534:3:4"},"nodeType":"YulFunctionCall","src":"11534:18:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"11526:4:4"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"11652:6:4"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11665:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"11676:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11661:3:4"},"nodeType":"YulFunctionCall","src":"11661:17:4"}],"functionName":{"name":"abi_encode_t_array$_t_bytes32_$2_memory_ptr_to_t_array$_t_bytes32_$2_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"11562:89:4"},"nodeType":"YulFunctionCall","src":"11562:117:4"},"nodeType":"YulExpressionStatement","src":"11562:117:4"}]},"name":"abi_encode_tuple_t_array$_t_bytes32_$2_memory_ptr__to_t_array$_t_bytes32_$2_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"11488:9:4","type":""},{"name":"value0","nodeType":"YulTypedName","src":"11500:6:4","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"11511:4:4","type":""}],"src":"11372:314:4"},{"body":{"nodeType":"YulBlock","src":"11836:170:4","statements":[{"nodeType":"YulAssignment","src":"11846:26:4","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11858:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"11869:2:4","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11854:3:4"},"nodeType":"YulFunctionCall","src":"11854:18:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"11846:4:4"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"11972:6:4"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11985:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"11996:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11981:3:4"},"nodeType":"YulFunctionCall","src":"11981:17:4"}],"functionName":{"name":"abi_encode_t_array$_t_uint256_$2_memory_ptr_to_t_array$_t_uint256_$2_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"11882:89:4"},"nodeType":"YulFunctionCall","src":"11882:117:4"},"nodeType":"YulExpressionStatement","src":"11882:117:4"}]},"name":"abi_encode_tuple_t_array$_t_uint256_$2_memory_ptr__to_t_array$_t_uint256_$2_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"11808:9:4","type":""},{"name":"value0","nodeType":"YulTypedName","src":"11820:6:4","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"11831:4:4","type":""}],"src":"11692:314:4"},{"body":{"nodeType":"YulBlock","src":"12110:124:4","statements":[{"nodeType":"YulAssignment","src":"12120:26:4","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12132:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"12143:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12128:3:4"},"nodeType":"YulFunctionCall","src":"12128:18:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"12120:4:4"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"12200:6:4"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12213:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"12224:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12209:3:4"},"nodeType":"YulFunctionCall","src":"12209:17:4"}],"functionName":{"name":"abi_encode_t_bytes32_to_t_bytes32_fromStack","nodeType":"YulIdentifier","src":"12156:43:4"},"nodeType":"YulFunctionCall","src":"12156:71:4"},"nodeType":"YulExpressionStatement","src":"12156:71:4"}]},"name":"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"12082:9:4","type":""},{"name":"value0","nodeType":"YulTypedName","src":"12094:6:4","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"12105:4:4","type":""}],"src":"12012:222:4"},{"body":{"nodeType":"YulBlock","src":"12356:193:4","statements":[{"nodeType":"YulAssignment","src":"12366:26:4","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12378:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"12389:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12374:3:4"},"nodeType":"YulFunctionCall","src":"12374:18:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"12366:4:4"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12413:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"12424:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12409:3:4"},"nodeType":"YulFunctionCall","src":"12409:17:4"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"12432:4:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"12438:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"12428:3:4"},"nodeType":"YulFunctionCall","src":"12428:20:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12402:6:4"},"nodeType":"YulFunctionCall","src":"12402:47:4"},"nodeType":"YulExpressionStatement","src":"12402:47:4"},{"nodeType":"YulAssignment","src":"12458:84:4","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"12528:6:4"},{"name":"tail","nodeType":"YulIdentifier","src":"12537:4:4"}],"functionName":{"name":"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"12466:61:4"},"nodeType":"YulFunctionCall","src":"12466:76:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"12458:4:4"}]}]},"name":"abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"12328:9:4","type":""},{"name":"value0","nodeType":"YulTypedName","src":"12340:6:4","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"12351:4:4","type":""}],"src":"12240:309:4"},{"body":{"nodeType":"YulBlock","src":"12651:122:4","statements":[{"nodeType":"YulAssignment","src":"12661:26:4","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12673:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"12684:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12669:3:4"},"nodeType":"YulFunctionCall","src":"12669:18:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"12661:4:4"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"12739:6:4"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12752:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"12763:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12748:3:4"},"nodeType":"YulFunctionCall","src":"12748:17:4"}],"functionName":{"name":"abi_encode_t_int256_to_t_int256_fromStack","nodeType":"YulIdentifier","src":"12697:41:4"},"nodeType":"YulFunctionCall","src":"12697:69:4"},"nodeType":"YulExpressionStatement","src":"12697:69:4"}]},"name":"abi_encode_tuple_t_int256__to_t_int256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"12623:9:4","type":""},{"name":"value0","nodeType":"YulTypedName","src":"12635:6:4","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"12646:4:4","type":""}],"src":"12555:218:4"},{"body":{"nodeType":"YulBlock","src":"12897:195:4","statements":[{"nodeType":"YulAssignment","src":"12907:26:4","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12919:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"12930:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12915:3:4"},"nodeType":"YulFunctionCall","src":"12915:18:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"12907:4:4"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12954:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"12965:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12950:3:4"},"nodeType":"YulFunctionCall","src":"12950:17:4"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"12973:4:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"12979:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"12969:3:4"},"nodeType":"YulFunctionCall","src":"12969:20:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12943:6:4"},"nodeType":"YulFunctionCall","src":"12943:47:4"},"nodeType":"YulExpressionStatement","src":"12943:47:4"},{"nodeType":"YulAssignment","src":"12999:86:4","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"13071:6:4"},{"name":"tail","nodeType":"YulIdentifier","src":"13080:4:4"}],"functionName":{"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"13007:63:4"},"nodeType":"YulFunctionCall","src":"13007:78:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"12999:4:4"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"12869:9:4","type":""},{"name":"value0","nodeType":"YulTypedName","src":"12881:6:4","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"12892:4:4","type":""}],"src":"12779:313:4"},{"body":{"nodeType":"YulBlock","src":"13264:348:4","statements":[{"nodeType":"YulAssignment","src":"13274:26:4","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13286:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"13297:2:4","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13282:3:4"},"nodeType":"YulFunctionCall","src":"13282:18:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"13274:4:4"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13321:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"13332:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13317:3:4"},"nodeType":"YulFunctionCall","src":"13317:17:4"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"13340:4:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"13346:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"13336:3:4"},"nodeType":"YulFunctionCall","src":"13336:20:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13310:6:4"},"nodeType":"YulFunctionCall","src":"13310:47:4"},"nodeType":"YulExpressionStatement","src":"13310:47:4"},{"nodeType":"YulAssignment","src":"13366:86:4","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"13438:6:4"},{"name":"tail","nodeType":"YulIdentifier","src":"13447:4:4"}],"functionName":{"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"13374:63:4"},"nodeType":"YulFunctionCall","src":"13374:78:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"13366:4:4"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13473:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"13484:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13469:3:4"},"nodeType":"YulFunctionCall","src":"13469:18:4"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"13493:4:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"13499:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"13489:3:4"},"nodeType":"YulFunctionCall","src":"13489:20:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13462:6:4"},"nodeType":"YulFunctionCall","src":"13462:48:4"},"nodeType":"YulExpressionStatement","src":"13462:48:4"},{"nodeType":"YulAssignment","src":"13519:86:4","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"13591:6:4"},{"name":"tail","nodeType":"YulIdentifier","src":"13600:4:4"}],"functionName":{"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"13527:63:4"},"nodeType":"YulFunctionCall","src":"13527:78:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"13519:4:4"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"13228:9:4","type":""},{"name":"value1","nodeType":"YulTypedName","src":"13240:6:4","type":""},{"name":"value0","nodeType":"YulTypedName","src":"13248:6:4","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"13259:4:4","type":""}],"src":"13098:514:4"},{"body":{"nodeType":"YulBlock","src":"13760:168:4","statements":[{"nodeType":"YulAssignment","src":"13770:26:4","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13782:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"13793:2:4","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13778:3:4"},"nodeType":"YulFunctionCall","src":"13778:18:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"13770:4:4"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"13894:6:4"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13907:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"13918:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13903:3:4"},"nodeType":"YulFunctionCall","src":"13903:17:4"}],"functionName":{"name":"abi_encode_t_struct$_Struct_$47_memory_ptr_to_t_struct$_Struct_$47_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"13806:87:4"},"nodeType":"YulFunctionCall","src":"13806:115:4"},"nodeType":"YulExpressionStatement","src":"13806:115:4"}]},"name":"abi_encode_tuple_t_struct$_Struct_$47_memory_ptr__to_t_struct$_Struct_$47_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"13732:9:4","type":""},{"name":"value0","nodeType":"YulTypedName","src":"13744:6:4","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"13755:4:4","type":""}],"src":"13618:310:4"},{"body":{"nodeType":"YulBlock","src":"14032:124:4","statements":[{"nodeType":"YulAssignment","src":"14042:26:4","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14054:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"14065:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14050:3:4"},"nodeType":"YulFunctionCall","src":"14050:18:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"14042:4:4"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"14122:6:4"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14135:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"14146:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14131:3:4"},"nodeType":"YulFunctionCall","src":"14131:17:4"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"14078:43:4"},"nodeType":"YulFunctionCall","src":"14078:71:4"},"nodeType":"YulExpressionStatement","src":"14078:71:4"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"14004:9:4","type":""},{"name":"value0","nodeType":"YulTypedName","src":"14016:6:4","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"14027:4:4","type":""}],"src":"13934:222:4"},{"body":{"nodeType":"YulBlock","src":"14288:206:4","statements":[{"nodeType":"YulAssignment","src":"14298:26:4","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14310:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"14321:2:4","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14306:3:4"},"nodeType":"YulFunctionCall","src":"14306:18:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"14298:4:4"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"14378:6:4"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14391:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"14402:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14387:3:4"},"nodeType":"YulFunctionCall","src":"14387:17:4"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"14334:43:4"},"nodeType":"YulFunctionCall","src":"14334:71:4"},"nodeType":"YulExpressionStatement","src":"14334:71:4"},{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"14459:6:4"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14472:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"14483:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14468:3:4"},"nodeType":"YulFunctionCall","src":"14468:18:4"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"14415:43:4"},"nodeType":"YulFunctionCall","src":"14415:72:4"},"nodeType":"YulExpressionStatement","src":"14415:72:4"}]},"name":"abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"14252:9:4","type":""},{"name":"value1","nodeType":"YulTypedName","src":"14264:6:4","type":""},{"name":"value0","nodeType":"YulTypedName","src":"14272:6:4","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"14283:4:4","type":""}],"src":"14162:332:4"},{"body":{"nodeType":"YulBlock","src":"14541:88:4","statements":[{"nodeType":"YulAssignment","src":"14551:30:4","value":{"arguments":[],"functionName":{"name":"allocate_unbounded","nodeType":"YulIdentifier","src":"14561:18:4"},"nodeType":"YulFunctionCall","src":"14561:20:4"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"14551:6:4"}]},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"14610:6:4"},{"name":"size","nodeType":"YulIdentifier","src":"14618:4:4"}],"functionName":{"name":"finalize_allocation","nodeType":"YulIdentifier","src":"14590:19:4"},"nodeType":"YulFunctionCall","src":"14590:33:4"},"nodeType":"YulExpressionStatement","src":"14590:33:4"}]},"name":"allocate_memory","nodeType":"YulFunctionDefinition","parameters":[{"name":"size","nodeType":"YulTypedName","src":"14525:4:4","type":""}],"returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"14534:6:4","type":""}],"src":"14500:129:4"},{"body":{"nodeType":"YulBlock","src":"14675:35:4","statements":[{"nodeType":"YulAssignment","src":"14685:19:4","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"14701:2:4","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"14695:5:4"},"nodeType":"YulFunctionCall","src":"14695:9:4"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"14685:6:4"}]}]},"name":"allocate_unbounded","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"14668:6:4","type":""}],"src":"14635:75:4"},{"body":{"nodeType":"YulBlock","src":"14782:241:4","statements":[{"body":{"nodeType":"YulBlock","src":"14887:22:4","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"14889:16:4"},"nodeType":"YulFunctionCall","src":"14889:18:4"},"nodeType":"YulExpressionStatement","src":"14889:18:4"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"14859:6:4"},{"kind":"number","nodeType":"YulLiteral","src":"14867:18:4","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"14856:2:4"},"nodeType":"YulFunctionCall","src":"14856:30:4"},"nodeType":"YulIf","src":"14853:2:4"},{"nodeType":"YulAssignment","src":"14919:37:4","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"14949:6:4"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"14927:21:4"},"nodeType":"YulFunctionCall","src":"14927:29:4"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"14919:4:4"}]},{"nodeType":"YulAssignment","src":"14993:23:4","value":{"arguments":[{"name":"size","nodeType":"YulIdentifier","src":"15005:4:4"},{"kind":"number","nodeType":"YulLiteral","src":"15011:4:4","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15001:3:4"},"nodeType":"YulFunctionCall","src":"15001:15:4"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"14993:4:4"}]}]},"name":"array_allocation_size_t_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"length","nodeType":"YulTypedName","src":"14766:6:4","type":""}],"returnVariables":[{"name":"size","nodeType":"YulTypedName","src":"14777:4:4","type":""}],"src":"14716:307:4"},{"body":{"nodeType":"YulBlock","src":"15096:241:4","statements":[{"body":{"nodeType":"YulBlock","src":"15201:22:4","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"15203:16:4"},"nodeType":"YulFunctionCall","src":"15203:18:4"},"nodeType":"YulExpressionStatement","src":"15203:18:4"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"15173:6:4"},{"kind":"number","nodeType":"YulLiteral","src":"15181:18:4","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"15170:2:4"},"nodeType":"YulFunctionCall","src":"15170:30:4"},"nodeType":"YulIf","src":"15167:2:4"},{"nodeType":"YulAssignment","src":"15233:37:4","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"15263:6:4"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"15241:21:4"},"nodeType":"YulFunctionCall","src":"15241:29:4"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"15233:4:4"}]},{"nodeType":"YulAssignment","src":"15307:23:4","value":{"arguments":[{"name":"size","nodeType":"YulIdentifier","src":"15319:4:4"},{"kind":"number","nodeType":"YulLiteral","src":"15325:4:4","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15315:3:4"},"nodeType":"YulFunctionCall","src":"15315:15:4"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"15307:4:4"}]}]},"name":"array_allocation_size_t_string_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"length","nodeType":"YulTypedName","src":"15080:6:4","type":""}],"returnVariables":[{"name":"size","nodeType":"YulTypedName","src":"15091:4:4","type":""}],"src":"15029:308:4"},{"body":{"nodeType":"YulBlock","src":"15413:28:4","statements":[{"nodeType":"YulAssignment","src":"15423:11:4","value":{"name":"ptr","nodeType":"YulIdentifier","src":"15431:3:4"},"variableNames":[{"name":"data","nodeType":"YulIdentifier","src":"15423:4:4"}]}]},"name":"array_dataslot_t_array$_t_bytes32_$2_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nodeType":"YulTypedName","src":"15400:3:4","type":""}],"returnVariables":[{"name":"data","nodeType":"YulTypedName","src":"15408:4:4","type":""}],"src":"15343:98:4"},{"body":{"nodeType":"YulBlock","src":"15517:28:4","statements":[{"nodeType":"YulAssignment","src":"15527:11:4","value":{"name":"ptr","nodeType":"YulIdentifier","src":"15535:3:4"},"variableNames":[{"name":"data","nodeType":"YulIdentifier","src":"15527:4:4"}]}]},"name":"array_dataslot_t_array$_t_uint256_$2_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nodeType":"YulTypedName","src":"15504:3:4","type":""}],"returnVariables":[{"name":"data","nodeType":"YulTypedName","src":"15512:4:4","type":""}],"src":"15447:98:4"},{"body":{"nodeType":"YulBlock","src":"15623:32:4","statements":[{"nodeType":"YulAssignment","src":"15634:14:4","value":{"kind":"number","nodeType":"YulLiteral","src":"15644:4:4","type":"","value":"0x02"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"15634:6:4"}]}]},"name":"array_length_t_array$_t_bytes32_$2_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"15606:5:4","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"15616:6:4","type":""}],"src":"15551:104:4"},{"body":{"nodeType":"YulBlock","src":"15733:32:4","statements":[{"nodeType":"YulAssignment","src":"15744:14:4","value":{"kind":"number","nodeType":"YulLiteral","src":"15754:4:4","type":"","value":"0x02"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"15744:6:4"}]}]},"name":"array_length_t_array$_t_uint256_$2_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"15716:5:4","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"15726:6:4","type":""}],"src":"15661:104:4"},{"body":{"nodeType":"YulBlock","src":"15829:40:4","statements":[{"nodeType":"YulAssignment","src":"15840:22:4","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"15856:5:4"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"15850:5:4"},"nodeType":"YulFunctionCall","src":"15850:12:4"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"15840:6:4"}]}]},"name":"array_length_t_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"15812:5:4","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"15822:6:4","type":""}],"src":"15771:98:4"},{"body":{"nodeType":"YulBlock","src":"15934:40:4","statements":[{"nodeType":"YulAssignment","src":"15945:22:4","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"15961:5:4"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"15955:5:4"},"nodeType":"YulFunctionCall","src":"15955:12:4"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"15945:6:4"}]}]},"name":"array_length_t_string_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"15917:5:4","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"15927:6:4","type":""}],"src":"15875:99:4"},{"body":{"nodeType":"YulBlock","src":"16053:38:4","statements":[{"nodeType":"YulAssignment","src":"16063:22:4","value":{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"16075:3:4"},{"kind":"number","nodeType":"YulLiteral","src":"16080:4:4","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16071:3:4"},"nodeType":"YulFunctionCall","src":"16071:14:4"},"variableNames":[{"name":"next","nodeType":"YulIdentifier","src":"16063:4:4"}]}]},"name":"array_nextElement_t_array$_t_bytes32_$2_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nodeType":"YulTypedName","src":"16040:3:4","type":""}],"returnVariables":[{"name":"next","nodeType":"YulTypedName","src":"16048:4:4","type":""}],"src":"15980:111:4"},{"body":{"nodeType":"YulBlock","src":"16170:38:4","statements":[{"nodeType":"YulAssignment","src":"16180:22:4","value":{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"16192:3:4"},{"kind":"number","nodeType":"YulLiteral","src":"16197:4:4","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16188:3:4"},"nodeType":"YulFunctionCall","src":"16188:14:4"},"variableNames":[{"name":"next","nodeType":"YulIdentifier","src":"16180:4:4"}]}]},"name":"array_nextElement_t_array$_t_uint256_$2_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nodeType":"YulTypedName","src":"16157:3:4","type":""}],"returnVariables":[{"name":"next","nodeType":"YulTypedName","src":"16165:4:4","type":""}],"src":"16097:111:4"},{"body":{"nodeType":"YulBlock","src":"16323:34:4","statements":[{"nodeType":"YulAssignment","src":"16333:18:4","value":{"name":"pos","nodeType":"YulIdentifier","src":"16348:3:4"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"16333:11:4"}]}]},"name":"array_storeLengthForEncoding_t_array$_t_bytes32_$2_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"16295:3:4","type":""},{"name":"length","nodeType":"YulTypedName","src":"16300:6:4","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"16311:11:4","type":""}],"src":"16214:143:4"},{"body":{"nodeType":"YulBlock","src":"16472:34:4","statements":[{"nodeType":"YulAssignment","src":"16482:18:4","value":{"name":"pos","nodeType":"YulIdentifier","src":"16497:3:4"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"16482:11:4"}]}]},"name":"array_storeLengthForEncoding_t_array$_t_uint256_$2_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"16444:3:4","type":""},{"name":"length","nodeType":"YulTypedName","src":"16449:6:4","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"16460:11:4","type":""}],"src":"16363:143:4"},{"body":{"nodeType":"YulBlock","src":"16607:73:4","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"16624:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"16629:6:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"16617:6:4"},"nodeType":"YulFunctionCall","src":"16617:19:4"},"nodeType":"YulExpressionStatement","src":"16617:19:4"},{"nodeType":"YulAssignment","src":"16645:29:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"16664:3:4"},{"kind":"number","nodeType":"YulLiteral","src":"16669:4:4","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16660:3:4"},"nodeType":"YulFunctionCall","src":"16660:14:4"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"16645:11:4"}]}]},"name":"array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"16579:3:4","type":""},{"name":"length","nodeType":"YulTypedName","src":"16584:6:4","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"16595:11:4","type":""}],"src":"16512:168:4"},{"body":{"nodeType":"YulBlock","src":"16799:34:4","statements":[{"nodeType":"YulAssignment","src":"16809:18:4","value":{"name":"pos","nodeType":"YulIdentifier","src":"16824:3:4"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"16809:11:4"}]}]},"name":"array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"16771:3:4","type":""},{"name":"length","nodeType":"YulTypedName","src":"16776:6:4","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"16787:11:4","type":""}],"src":"16686:147:4"},{"body":{"nodeType":"YulBlock","src":"16935:73:4","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"16952:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"16957:6:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"16945:6:4"},"nodeType":"YulFunctionCall","src":"16945:19:4"},"nodeType":"YulExpressionStatement","src":"16945:19:4"},{"nodeType":"YulAssignment","src":"16973:29:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"16992:3:4"},{"kind":"number","nodeType":"YulLiteral","src":"16997:4:4","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16988:3:4"},"nodeType":"YulFunctionCall","src":"16988:14:4"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"16973:11:4"}]}]},"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"16907:3:4","type":""},{"name":"length","nodeType":"YulTypedName","src":"16912:6:4","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"16923:11:4","type":""}],"src":"16839:169:4"},{"body":{"nodeType":"YulBlock","src":"17128:34:4","statements":[{"nodeType":"YulAssignment","src":"17138:18:4","value":{"name":"pos","nodeType":"YulIdentifier","src":"17153:3:4"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"17138:11:4"}]}]},"name":"array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"17100:3:4","type":""},{"name":"length","nodeType":"YulTypedName","src":"17105:6:4","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"17116:11:4","type":""}],"src":"17014:148:4"},{"body":{"nodeType":"YulBlock","src":"17213:51:4","statements":[{"nodeType":"YulAssignment","src":"17223:35:4","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"17252:5:4"}],"functionName":{"name":"cleanup_t_uint160","nodeType":"YulIdentifier","src":"17234:17:4"},"nodeType":"YulFunctionCall","src":"17234:24:4"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"17223:7:4"}]}]},"name":"cleanup_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"17195:5:4","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"17205:7:4","type":""}],"src":"17168:96:4"},{"body":{"nodeType":"YulBlock","src":"17315:32:4","statements":[{"nodeType":"YulAssignment","src":"17325:16:4","value":{"name":"value","nodeType":"YulIdentifier","src":"17336:5:4"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"17325:7:4"}]}]},"name":"cleanup_t_bytes32","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"17297:5:4","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"17307:7:4","type":""}],"src":"17270:77:4"},{"body":{"nodeType":"YulBlock","src":"17397:32:4","statements":[{"nodeType":"YulAssignment","src":"17407:16:4","value":{"name":"value","nodeType":"YulIdentifier","src":"17418:5:4"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"17407:7:4"}]}]},"name":"cleanup_t_int256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"17379:5:4","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"17389:7:4","type":""}],"src":"17353:76:4"},{"body":{"nodeType":"YulBlock","src":"17480:81:4","statements":[{"nodeType":"YulAssignment","src":"17490:65:4","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"17505:5:4"},{"kind":"number","nodeType":"YulLiteral","src":"17512:42:4","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"17501:3:4"},"nodeType":"YulFunctionCall","src":"17501:54:4"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"17490:7:4"}]}]},"name":"cleanup_t_uint160","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"17462:5:4","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"17472:7:4","type":""}],"src":"17435:126:4"},{"body":{"nodeType":"YulBlock","src":"17612:32:4","statements":[{"nodeType":"YulAssignment","src":"17622:16:4","value":{"name":"value","nodeType":"YulIdentifier","src":"17633:5:4"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"17622:7:4"}]}]},"name":"cleanup_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"17594:5:4","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"17604:7:4","type":""}],"src":"17567:77:4"},{"body":{"nodeType":"YulBlock","src":"17701:103:4","statements":[{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"17724:3:4"},{"name":"src","nodeType":"YulIdentifier","src":"17729:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"17734:6:4"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"17711:12:4"},"nodeType":"YulFunctionCall","src":"17711:30:4"},"nodeType":"YulExpressionStatement","src":"17711:30:4"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"17782:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"17787:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17778:3:4"},"nodeType":"YulFunctionCall","src":"17778:16:4"},{"kind":"number","nodeType":"YulLiteral","src":"17796:1:4","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17771:6:4"},"nodeType":"YulFunctionCall","src":"17771:27:4"},"nodeType":"YulExpressionStatement","src":"17771:27:4"}]},"name":"copy_calldata_to_memory","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"17683:3:4","type":""},{"name":"dst","nodeType":"YulTypedName","src":"17688:3:4","type":""},{"name":"length","nodeType":"YulTypedName","src":"17693:6:4","type":""}],"src":"17650:154:4"},{"body":{"nodeType":"YulBlock","src":"17859:258:4","statements":[{"nodeType":"YulVariableDeclaration","src":"17869:10:4","value":{"kind":"number","nodeType":"YulLiteral","src":"17878:1:4","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"17873:1:4","type":""}]},{"body":{"nodeType":"YulBlock","src":"17938:63:4","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"17963:3:4"},{"name":"i","nodeType":"YulIdentifier","src":"17968:1:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17959:3:4"},"nodeType":"YulFunctionCall","src":"17959:11:4"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"17982:3:4"},{"name":"i","nodeType":"YulIdentifier","src":"17987:1:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17978:3:4"},"nodeType":"YulFunctionCall","src":"17978:11:4"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"17972:5:4"},"nodeType":"YulFunctionCall","src":"17972:18:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17952:6:4"},"nodeType":"YulFunctionCall","src":"17952:39:4"},"nodeType":"YulExpressionStatement","src":"17952:39:4"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"17899:1:4"},{"name":"length","nodeType":"YulIdentifier","src":"17902:6:4"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"17896:2:4"},"nodeType":"YulFunctionCall","src":"17896:13:4"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"17910:19:4","statements":[{"nodeType":"YulAssignment","src":"17912:15:4","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"17921:1:4"},{"kind":"number","nodeType":"YulLiteral","src":"17924:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17917:3:4"},"nodeType":"YulFunctionCall","src":"17917:10:4"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"17912:1:4"}]}]},"pre":{"nodeType":"YulBlock","src":"17892:3:4","statements":[]},"src":"17888:113:4"},{"body":{"nodeType":"YulBlock","src":"18035:76:4","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"18085:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"18090:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18081:3:4"},"nodeType":"YulFunctionCall","src":"18081:16:4"},{"kind":"number","nodeType":"YulLiteral","src":"18099:1:4","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"18074:6:4"},"nodeType":"YulFunctionCall","src":"18074:27:4"},"nodeType":"YulExpressionStatement","src":"18074:27:4"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"18016:1:4"},{"name":"length","nodeType":"YulIdentifier","src":"18019:6:4"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"18013:2:4"},"nodeType":"YulFunctionCall","src":"18013:13:4"},"nodeType":"YulIf","src":"18010:2:4"}]},"name":"copy_memory_to_memory","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"17841:3:4","type":""},{"name":"dst","nodeType":"YulTypedName","src":"17846:3:4","type":""},{"name":"length","nodeType":"YulTypedName","src":"17851:6:4","type":""}],"src":"17810:307:4"},{"body":{"nodeType":"YulBlock","src":"18166:238:4","statements":[{"nodeType":"YulVariableDeclaration","src":"18176:58:4","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"18198:6:4"},{"arguments":[{"name":"size","nodeType":"YulIdentifier","src":"18228:4:4"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"18206:21:4"},"nodeType":"YulFunctionCall","src":"18206:27:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18194:3:4"},"nodeType":"YulFunctionCall","src":"18194:40:4"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"18180:10:4","type":""}]},{"body":{"nodeType":"YulBlock","src":"18345:22:4","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"18347:16:4"},"nodeType":"YulFunctionCall","src":"18347:18:4"},"nodeType":"YulExpressionStatement","src":"18347:18:4"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"18288:10:4"},{"kind":"number","nodeType":"YulLiteral","src":"18300:18:4","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"18285:2:4"},"nodeType":"YulFunctionCall","src":"18285:34:4"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"18324:10:4"},{"name":"memPtr","nodeType":"YulIdentifier","src":"18336:6:4"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"18321:2:4"},"nodeType":"YulFunctionCall","src":"18321:22:4"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"18282:2:4"},"nodeType":"YulFunctionCall","src":"18282:62:4"},"nodeType":"YulIf","src":"18279:2:4"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"18383:2:4","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"18387:10:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"18376:6:4"},"nodeType":"YulFunctionCall","src":"18376:22:4"},"nodeType":"YulExpressionStatement","src":"18376:22:4"}]},"name":"finalize_allocation","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"18152:6:4","type":""},{"name":"size","nodeType":"YulTypedName","src":"18160:4:4","type":""}],"src":"18123:281:4"},{"body":{"nodeType":"YulBlock","src":"18438:152:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"18455:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"18458:77:4","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"18448:6:4"},"nodeType":"YulFunctionCall","src":"18448:88:4"},"nodeType":"YulExpressionStatement","src":"18448:88:4"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"18552:1:4","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"18555:4:4","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"18545:6:4"},"nodeType":"YulFunctionCall","src":"18545:15:4"},"nodeType":"YulExpressionStatement","src":"18545:15:4"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"18576:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"18579:4:4","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"18569:6:4"},"nodeType":"YulFunctionCall","src":"18569:15:4"},"nodeType":"YulExpressionStatement","src":"18569:15:4"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"18410:180:4"},{"body":{"nodeType":"YulBlock","src":"18644:54:4","statements":[{"nodeType":"YulAssignment","src":"18654:38:4","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"18672:5:4"},{"kind":"number","nodeType":"YulLiteral","src":"18679:2:4","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18668:3:4"},"nodeType":"YulFunctionCall","src":"18668:14:4"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"18688:2:4","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"18684:3:4"},"nodeType":"YulFunctionCall","src":"18684:7:4"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"18664:3:4"},"nodeType":"YulFunctionCall","src":"18664:28:4"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"18654:6:4"}]}]},"name":"round_up_to_mul_of_32","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"18627:5:4","type":""}],"returnVariables":[{"name":"result","nodeType":"YulTypedName","src":"18637:6:4","type":""}],"src":"18596:102:4"},{"body":{"nodeType":"YulBlock","src":"18747:79:4","statements":[{"body":{"nodeType":"YulBlock","src":"18804:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"18813:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"18816:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"18806:6:4"},"nodeType":"YulFunctionCall","src":"18806:12:4"},"nodeType":"YulExpressionStatement","src":"18806:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"18770:5:4"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"18795:5:4"}],"functionName":{"name":"cleanup_t_address","nodeType":"YulIdentifier","src":"18777:17:4"},"nodeType":"YulFunctionCall","src":"18777:24:4"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"18767:2:4"},"nodeType":"YulFunctionCall","src":"18767:35:4"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"18760:6:4"},"nodeType":"YulFunctionCall","src":"18760:43:4"},"nodeType":"YulIf","src":"18757:2:4"}]},"name":"validator_revert_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"18740:5:4","type":""}],"src":"18704:122:4"},{"body":{"nodeType":"YulBlock","src":"18875:79:4","statements":[{"body":{"nodeType":"YulBlock","src":"18932:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"18941:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"18944:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"18934:6:4"},"nodeType":"YulFunctionCall","src":"18934:12:4"},"nodeType":"YulExpressionStatement","src":"18934:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"18898:5:4"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"18923:5:4"}],"functionName":{"name":"cleanup_t_bytes32","nodeType":"YulIdentifier","src":"18905:17:4"},"nodeType":"YulFunctionCall","src":"18905:24:4"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"18895:2:4"},"nodeType":"YulFunctionCall","src":"18895:35:4"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"18888:6:4"},"nodeType":"YulFunctionCall","src":"18888:43:4"},"nodeType":"YulIf","src":"18885:2:4"}]},"name":"validator_revert_t_bytes32","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"18868:5:4","type":""}],"src":"18832:122:4"},{"body":{"nodeType":"YulBlock","src":"19002:78:4","statements":[{"body":{"nodeType":"YulBlock","src":"19058:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"19067:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"19070:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"19060:6:4"},"nodeType":"YulFunctionCall","src":"19060:12:4"},"nodeType":"YulExpressionStatement","src":"19060:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"19025:5:4"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"19049:5:4"}],"functionName":{"name":"cleanup_t_int256","nodeType":"YulIdentifier","src":"19032:16:4"},"nodeType":"YulFunctionCall","src":"19032:23:4"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"19022:2:4"},"nodeType":"YulFunctionCall","src":"19022:34:4"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"19015:6:4"},"nodeType":"YulFunctionCall","src":"19015:42:4"},"nodeType":"YulIf","src":"19012:2:4"}]},"name":"validator_revert_t_int256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"18995:5:4","type":""}],"src":"18960:120:4"},{"body":{"nodeType":"YulBlock","src":"19129:79:4","statements":[{"body":{"nodeType":"YulBlock","src":"19186:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"19195:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"19198:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"19188:6:4"},"nodeType":"YulFunctionCall","src":"19188:12:4"},"nodeType":"YulExpressionStatement","src":"19188:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"19152:5:4"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"19177:5:4"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"19159:17:4"},"nodeType":"YulFunctionCall","src":"19159:24:4"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"19149:2:4"},"nodeType":"YulFunctionCall","src":"19149:35:4"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"19142:6:4"},"nodeType":"YulFunctionCall","src":"19142:43:4"},"nodeType":"YulIf","src":"19139:2:4"}]},"name":"validator_revert_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"19122:5:4","type":""}],"src":"19086:122:4"}]},"contents":"{\n\n function abi_decode_available_length_t_bytes_memory_ptr(src, length, end) -> array {\n array := allocate_memory(array_allocation_size_t_bytes_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_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_bytes32(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_bytes32(value)\n }\n\n // bytes\n function abi_decode_t_bytes_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_bytes_memory_ptr(add(offset, 0x20), length, end)\n }\n\n function abi_decode_t_int256(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_int256(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_bytes32(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_bytes32(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_bytes32t_bytes32(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_bytes32(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_bytes32(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_bytes_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_bytes_memory_ptr(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_int256(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_int256(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_decode_tuple_t_uint256(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_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_uint256t_string_memory_ptr(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_uint256(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := calldataload(add(headStart, 32))\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n\n value1 := abi_decode_t_string_memory_ptr(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_uint256t_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_uint256(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_uint256t_uint256t_string_memory_ptrt_string_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3 {\n if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint256(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 let offset := calldataload(add(headStart, 64))\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n\n value2 := abi_decode_t_string_memory_ptr(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := calldataload(add(headStart, 96))\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n\n value3 := abi_decode_t_string_memory_ptr(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encodeUpdatedPos_t_bytes32_to_t_bytes32(value0, pos) -> updatedPos {\n abi_encode_t_bytes32_to_t_bytes32(value0, pos)\n updatedPos := add(pos, 0x20)\n }\n\n function abi_encodeUpdatedPos_t_uint256_to_t_uint256(value0, pos) -> updatedPos {\n abi_encode_t_uint256_to_t_uint256(value0, pos)\n updatedPos := add(pos, 0x20)\n }\n\n function abi_encode_t_address_to_t_address_fromStack(value, pos) {\n mstore(pos, cleanup_t_address(value))\n }\n\n // bytes32[2] -> bytes32[2]\n function abi_encode_t_array$_t_bytes32_$2_memory_ptr_to_t_array$_t_bytes32_$2_memory_ptr_fromStack(value, pos) {\n let length := array_length_t_array$_t_bytes32_$2_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_array$_t_bytes32_$2_memory_ptr_fromStack(pos, length)\n let baseRef := array_dataslot_t_array$_t_bytes32_$2_memory_ptr(value)\n let srcPtr := baseRef\n for { let i := 0 } lt(i, length) { i := add(i, 1) }\n {\n let elementValue0 := mload(srcPtr)\n pos := abi_encodeUpdatedPos_t_bytes32_to_t_bytes32(elementValue0, pos)\n srcPtr := array_nextElement_t_array$_t_bytes32_$2_memory_ptr(srcPtr)\n }\n\n }\n\n // uint256[2] -> uint256[2]\n function abi_encode_t_array$_t_uint256_$2_memory_ptr_to_t_array$_t_uint256_$2_memory_ptr_fromStack(value, pos) {\n let length := array_length_t_array$_t_uint256_$2_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_array$_t_uint256_$2_memory_ptr_fromStack(pos, length)\n let baseRef := array_dataslot_t_array$_t_uint256_$2_memory_ptr(value)\n let srcPtr := baseRef\n for { let i := 0 } lt(i, length) { i := add(i, 1) }\n {\n let elementValue0 := mload(srcPtr)\n pos := abi_encodeUpdatedPos_t_uint256_to_t_uint256(elementValue0, pos)\n srcPtr := array_nextElement_t_array$_t_uint256_$2_memory_ptr(srcPtr)\n }\n\n }\n\n function abi_encode_t_bytes32_to_t_bytes32(value, pos) {\n mstore(pos, cleanup_t_bytes32(value))\n }\n\n function abi_encode_t_bytes32_to_t_bytes32_fromStack(value, pos) {\n mstore(pos, cleanup_t_bytes32(value))\n }\n\n function abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack(value, pos) -> end {\n let length := array_length_t_bytes_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_bytes_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_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack(value, pos) -> end {\n let length := array_length_t_bytes_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack(pos, length)\n copy_memory_to_memory(add(value, 0x20), pos, length)\n end := add(pos, length)\n }\n\n function abi_encode_t_int256_to_t_int256_fromStack(value, pos) {\n mstore(pos, cleanup_t_int256(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_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack(value, pos) -> end {\n let length := array_length_t_string_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack(pos, length)\n copy_memory_to_memory(add(value, 0x20), pos, length)\n end := add(pos, length)\n }\n\n // struct Events.Struct -> struct Events.Struct\n function abi_encode_t_struct$_Struct_$47_memory_ptr_to_t_struct$_Struct_$47_memory_ptr_fromStack(value, pos) {\n let tail := add(pos, 0x40)\n\n {\n // u\n\n let memberValue0 := mload(add(value, 0x00))\n abi_encode_t_uint256_to_t_uint256(memberValue0, add(pos, 0x00))\n }\n\n {\n // v\n\n let memberValue0 := mload(add(value, 0x20))\n abi_encode_t_uint256_to_t_uint256(memberValue0, add(pos, 0x20))\n }\n\n }\n\n function abi_encode_t_uint256_to_t_uint256(value, pos) {\n mstore(pos, cleanup_t_uint256(value))\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_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos , value0) -> end {\n\n pos := abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack(value0, pos)\n\n end := pos\n }\n\n function abi_encode_tuple_packed_t_string_memory_ptr__to_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos , value0) -> end {\n\n pos := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack(value0, pos)\n\n end := pos\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_array$_t_bytes32_$2_memory_ptr__to_t_array$_t_bytes32_$2_memory_ptr__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_array$_t_bytes32_$2_memory_ptr_to_t_array$_t_bytes32_$2_memory_ptr_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_encode_tuple_t_array$_t_uint256_$2_memory_ptr__to_t_array$_t_uint256_$2_memory_ptr__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_array$_t_uint256_$2_memory_ptr_to_t_array$_t_uint256_$2_memory_ptr_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_bytes32_to_t_bytes32_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_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_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack(value0, tail)\n\n }\n\n function abi_encode_tuple_t_int256__to_t_int256__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_int256_to_t_int256_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_string_memory_ptr_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr__fromStack_reversed(headStart , value1, value0) -> tail {\n tail := add(headStart, 64)\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 mstore(add(headStart, 32), sub(tail, headStart))\n tail := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack(value1, tail)\n\n }\n\n function abi_encode_tuple_t_struct$_Struct_$47_memory_ptr__to_t_struct$_Struct_$47_memory_ptr__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_struct$_Struct_$47_memory_ptr_to_t_struct$_Struct_$47_memory_ptr_fromStack(value0, add(headStart, 0))\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_bytes_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_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_dataslot_t_array$_t_bytes32_$2_memory_ptr(ptr) -> data {\n data := ptr\n\n }\n\n function array_dataslot_t_array$_t_uint256_$2_memory_ptr(ptr) -> data {\n data := ptr\n\n }\n\n function array_length_t_array$_t_bytes32_$2_memory_ptr(value) -> length {\n\n length := 0x02\n\n }\n\n function array_length_t_array$_t_uint256_$2_memory_ptr(value) -> length {\n\n length := 0x02\n\n }\n\n function array_length_t_bytes_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function array_length_t_string_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function array_nextElement_t_array$_t_bytes32_$2_memory_ptr(ptr) -> next {\n next := add(ptr, 0x20)\n }\n\n function array_nextElement_t_array$_t_uint256_$2_memory_ptr(ptr) -> next {\n next := add(ptr, 0x20)\n }\n\n function array_storeLengthForEncoding_t_array$_t_bytes32_$2_memory_ptr_fromStack(pos, length) -> updated_pos {\n updated_pos := pos\n }\n\n function array_storeLengthForEncoding_t_array$_t_uint256_$2_memory_ptr_fromStack(pos, length) -> updated_pos {\n updated_pos := pos\n }\n\n function array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack(pos, length) -> updated_pos {\n updated_pos := pos\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 array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack(pos, length) -> updated_pos {\n updated_pos := pos\n }\n\n function cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function cleanup_t_bytes32(value) -> cleaned {\n cleaned := value\n }\n\n function cleanup_t_int256(value) -> cleaned {\n cleaned := 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 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_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 validator_revert_t_address(value) {\n if iszero(eq(value, cleanup_t_address(value))) { revert(0, 0) }\n }\n\n function validator_revert_t_bytes32(value) {\n if iszero(eq(value, cleanup_t_bytes32(value))) { revert(0, 0) }\n }\n\n function validator_revert_t_int256(value) {\n if iszero(eq(value, cleanup_t_int256(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":4,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b506004361061012c5760003560e01c80638a618191116100ad578063c76f063511610071578063c76f0635146102c3578063cc07e605146102df578063d3931e57146102fb578063db6cdf6814610317578063ec5c3ede146103215761012c565b80638a6181911461024957806390b37ea214610265578063919402441461026f5780639f31a2231461028b578063c0cd80e6146102a75761012c565b806333311ef3116100f457806333311ef3146101bd57806338393646146101d9578063443690a0146101f5578063532b9cce14610211578063813a8cf51461022d5761012c565b8063048858e5146101315780630c0c941a1461014d57806317aba537146101695780632536f127146101855780632785f8d6146101a1575b600080fd5b61014b600480360381019061014691906109f0565b61033d565b005b61016760048036038101906101629190610b7d565b61036d565b005b610183600480360381019061017e9190610b7d565b6103df565b005b61019f600480360381019061019a9190610abf565b61042e565b005b6101bb60048036038101906101b69190610b29565b610468565b005b6101d760048036038101906101d291906109f0565b6104da565b005b6101f360048036038101906101ee9190610b7d565b610514565b005b61020f600480360381019061020a9190610abf565b610551565b005b61022b60048036038101906102269190610bb9565b610596565b005b61024760048036038101906102429190610b00565b61060e565b005b610263600480360381019061025e9190610a96565b61061a565b005b61026d610654565b005b61028960048036038101906102849190610b00565b610682565b005b6102a560048036038101906102a09190610b7d565b6106bc565b005b6102c160048036038101906102bc9190610a19565b61070b565b005b6102dd60048036038101906102d89190610a55565b61075a565b005b6102f960048036038101906102f49190610a55565b610794565b005b61031560048036038101906103109190610b00565b6107d9565b005b61031f610867565b005b61033b600480360381019061033691906109c7565b610869565b005b807fb421ad092cfce88844bfbfaa9654e824ba0ee5b6b0a220f822406b62c05364c060405160405180910390a250565b7f97535d4b4270d3f1a499c85ae918ba6798cbdcc83a26529331a25dcd2194cfce8260405161039c9190610fd2565b60405180910390a17f97535d4b4270d3f1a499c85ae918ba6798cbdcc83a26529331a25dcd2194cfce816040516103d39190610fd2565b60405180910390a15050565b7f73e687a2685d698f7acf934b4929a29ae783a4bcb640d71c5d6994d74e2380ca6040518060400160405280848152602001838152506040516104229190610eeb565b60405180910390a15050565b7f9b7ddcbde8dac280e036f87acafec72f9eee31a640c08087e8439139c7e5b52a8160405161045d9190610f5e565b60405180910390a150565b7f9b7ddcbde8dac280e036f87acafec72f9eee31a640c08087e8439139c7e5b52a816040516104979190610f5e565b60405180910390a17f97535d4b4270d3f1a499c85ae918ba6798cbdcc83a26529331a25dcd2194cfce826040516104ce9190610fd2565b60405180910390a15050565b7f425517d2678bbca3c0d9d8d9fdbec34c81194e7935ed48a6a19f97db93bcef6a816040516105099190610f06565b60405180910390a150565b7f8b268bb46a33a55bece084a8b6858719c9f2985c860fa06c155a341df0b73c0e8282604051610545929190610fed565b60405180910390a15050565b8060405161055f9190610e9e565b60405180910390207fd9ca28363e2d8739e0e9c4fea1d2df98d1bd7d9d915d00e5fccbf78c0fddcdb060405160405180910390a250565b7f8b268bb46a33a55bece084a8b6858719c9f2985c860fa06c155a341df0b73c0e84846040516105c7929190610fed565b60405180910390a17f1f1a2c748505fcd8f16a719fa88d517b1b41111c4f5e07bb28311cdc4d1515388282604051610600929190610f80565b60405180910390a150505050565b61061781610682565b50565b7f39feab747bb4f579008aea963d7ebac85ad410bb83ee663a42af01464654e93f816040516106499190610f43565b60405180910390a150565b7f917b7bf7ab24d61500cb699921a3a1cc22b8833da6484fea20f262b2610604af60405160405180910390a1565b7f97535d4b4270d3f1a499c85ae918ba6798cbdcc83a26529331a25dcd2194cfce816040516106b19190610fd2565b60405180910390a150565b7fd59ab87bf64b9d737998f3dc70c649d16b135f085029c1666ca0634beb75a7736040518060400160405280848152602001838152506040516106ff9190610fb7565b60405180910390a15050565b7f15100859f3ffe92910dc3f11ed3db4e9cf32ff657c05066e44be4e69b2b488bc60405180604001604052808481526020018381525060405161074e9190610ed0565b60405180910390a15050565b7f433470edcdd53b50238be4d8e048e2baa269af5be2a4e29515c138883c745aa8816040516107899190610f21565b60405180910390a150565b806040516107a29190610e87565b60405180910390207f160e4655df40987951accf7c731d5c504f77d20c139bd73032821b91a426dd9860405160405180910390a250565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166391940244826040518263ffffffff1660e01b81526004016108329190610fd2565b600060405180830381600087803b15801561084c57600080fd5b505af1158015610860573d6000803e3d6000fd5b5050505050565b565b7f336bcd960d2e5a52cef6094ba33727f309dc2c675eebefc6d9b6b6d79abac877816040516108989190610eb5565b60405180910390a150565b60006108b66108b18461103b565b611016565b9050828152602081018484840111156108ce57600080fd5b6108d9848285611195565b509392505050565b60006108f46108ef8461106c565b611016565b90508281526020810184848401111561090c57600080fd5b610917848285611195565b509392505050565b60008135905061092e81611248565b92915050565b6000813590506109438161125f565b92915050565b600082601f83011261095a57600080fd5b813561096a8482602086016108a3565b91505092915050565b60008135905061098281611276565b92915050565b600082601f83011261099957600080fd5b81356109a98482602086016108e1565b91505092915050565b6000813590506109c18161128d565b92915050565b6000602082840312156109d957600080fd5b60006109e78482850161091f565b91505092915050565b600060208284031215610a0257600080fd5b6000610a1084828501610934565b91505092915050565b60008060408385031215610a2c57600080fd5b6000610a3a85828601610934565b9250506020610a4b85828601610934565b9150509250929050565b600060208284031215610a6757600080fd5b600082013567ffffffffffffffff811115610a8157600080fd5b610a8d84828501610949565b91505092915050565b600060208284031215610aa857600080fd5b6000610ab684828501610973565b91505092915050565b600060208284031215610ad157600080fd5b600082013567ffffffffffffffff811115610aeb57600080fd5b610af784828501610988565b91505092915050565b600060208284031215610b1257600080fd5b6000610b20848285016109b2565b91505092915050565b60008060408385031215610b3c57600080fd5b6000610b4a858286016109b2565b925050602083013567ffffffffffffffff811115610b6757600080fd5b610b7385828601610988565b9150509250929050565b60008060408385031215610b9057600080fd5b6000610b9e858286016109b2565b9250506020610baf858286016109b2565b9150509250929050565b60008060008060808587031215610bcf57600080fd5b6000610bdd878288016109b2565b9450506020610bee878288016109b2565b935050604085013567ffffffffffffffff811115610c0b57600080fd5b610c1787828801610988565b925050606085013567ffffffffffffffff811115610c3457600080fd5b610c4087828801610988565b91505092959194509250565b6000610c588383610d39565b60208301905092915050565b6000610c708383610e69565b60208301905092915050565b610c8581611145565b82525050565b610c94816110b1565b610c9e81846110f7565b9250610ca98261109d565b8060005b83811015610cda578151610cc18782610c4c565b9650610ccc836110dd565b925050600181019050610cad565b505050505050565b610ceb816110bc565b610cf58184611102565b9250610d00826110a7565b8060005b83811015610d31578151610d188782610c64565b9650610d23836110ea565b925050600181019050610d04565b505050505050565b610d4281611157565b82525050565b610d5181611157565b82525050565b6000610d62826110c7565b610d6c818561110d565b9350610d7c8185602086016111a4565b610d8581611237565b840191505092915050565b6000610d9b826110c7565b610da5818561111e565b9350610db58185602086016111a4565b80840191505092915050565b610dca81611161565b82525050565b6000610ddb826110d2565b610de58185611129565b9350610df58185602086016111a4565b610dfe81611237565b840191505092915050565b6000610e14826110d2565b610e1e818561113a565b9350610e2e8185602086016111a4565b80840191505092915050565b604082016000820151610e506000850182610e69565b506020820151610e636020850182610e69565b50505050565b610e728161118b565b82525050565b610e818161118b565b82525050565b6000610e938284610d90565b915081905092915050565b6000610eaa8284610e09565b915081905092915050565b6000602082019050610eca6000830184610c7c565b92915050565b6000604082019050610ee56000830184610c8b565b92915050565b6000604082019050610f006000830184610ce2565b92915050565b6000602082019050610f1b6000830184610d48565b92915050565b60006020820190508181036000830152610f3b8184610d57565b905092915050565b6000602082019050610f586000830184610dc1565b92915050565b60006020820190508181036000830152610f788184610dd0565b905092915050565b60006040820190508181036000830152610f9a8185610dd0565b90508181036020830152610fae8184610dd0565b90509392505050565b6000604082019050610fcc6000830184610e3a565b92915050565b6000602082019050610fe76000830184610e78565b92915050565b60006040820190506110026000830185610e78565b61100f6020830184610e78565b9392505050565b6000611020611031565b905061102c82826111d7565b919050565b6000604051905090565b600067ffffffffffffffff82111561105657611055611208565b5b61105f82611237565b9050602081019050919050565b600067ffffffffffffffff82111561108757611086611208565b5b61109082611237565b9050602081019050919050565b6000819050919050565b6000819050919050565b600060029050919050565b600060029050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b600081905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b60006111508261116b565b9050919050565b6000819050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b838110156111c25780820151818401526020810190506111a7565b838111156111d1576000848401525b50505050565b6111e082611237565b810181811067ffffffffffffffff821117156111ff576111fe611208565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b61125181611145565b811461125c57600080fd5b50565b61126881611157565b811461127357600080fd5b50565b61127f81611161565b811461128a57600080fd5b50565b6112968161118b565b81146112a157600080fd5b5056fea264697066735822122073a91a740c0de3883c5213c5981d98d2396a8b60b3cf2fb364d7e4cc826a841e64736f6c63430008040033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x12C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8A618191 GT PUSH2 0xAD JUMPI DUP1 PUSH4 0xC76F0635 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xC76F0635 EQ PUSH2 0x2C3 JUMPI DUP1 PUSH4 0xCC07E605 EQ PUSH2 0x2DF JUMPI DUP1 PUSH4 0xD3931E57 EQ PUSH2 0x2FB JUMPI DUP1 PUSH4 0xDB6CDF68 EQ PUSH2 0x317 JUMPI DUP1 PUSH4 0xEC5C3EDE EQ PUSH2 0x321 JUMPI PUSH2 0x12C JUMP JUMPDEST DUP1 PUSH4 0x8A618191 EQ PUSH2 0x249 JUMPI DUP1 PUSH4 0x90B37EA2 EQ PUSH2 0x265 JUMPI DUP1 PUSH4 0x91940244 EQ PUSH2 0x26F JUMPI DUP1 PUSH4 0x9F31A223 EQ PUSH2 0x28B JUMPI DUP1 PUSH4 0xC0CD80E6 EQ PUSH2 0x2A7 JUMPI PUSH2 0x12C JUMP JUMPDEST DUP1 PUSH4 0x33311EF3 GT PUSH2 0xF4 JUMPI DUP1 PUSH4 0x33311EF3 EQ PUSH2 0x1BD JUMPI DUP1 PUSH4 0x38393646 EQ PUSH2 0x1D9 JUMPI DUP1 PUSH4 0x443690A0 EQ PUSH2 0x1F5 JUMPI DUP1 PUSH4 0x532B9CCE EQ PUSH2 0x211 JUMPI DUP1 PUSH4 0x813A8CF5 EQ PUSH2 0x22D JUMPI PUSH2 0x12C JUMP JUMPDEST DUP1 PUSH4 0x48858E5 EQ PUSH2 0x131 JUMPI DUP1 PUSH4 0xC0C941A EQ PUSH2 0x14D JUMPI DUP1 PUSH4 0x17ABA537 EQ PUSH2 0x169 JUMPI DUP1 PUSH4 0x2536F127 EQ PUSH2 0x185 JUMPI DUP1 PUSH4 0x2785F8D6 EQ PUSH2 0x1A1 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x14B PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x146 SWAP2 SWAP1 PUSH2 0x9F0 JUMP JUMPDEST PUSH2 0x33D JUMP JUMPDEST STOP JUMPDEST PUSH2 0x167 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x162 SWAP2 SWAP1 PUSH2 0xB7D JUMP JUMPDEST PUSH2 0x36D JUMP JUMPDEST STOP JUMPDEST PUSH2 0x183 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x17E SWAP2 SWAP1 PUSH2 0xB7D JUMP JUMPDEST PUSH2 0x3DF JUMP JUMPDEST STOP JUMPDEST PUSH2 0x19F PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x19A SWAP2 SWAP1 PUSH2 0xABF JUMP JUMPDEST PUSH2 0x42E JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1BB PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1B6 SWAP2 SWAP1 PUSH2 0xB29 JUMP JUMPDEST PUSH2 0x468 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1D7 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1D2 SWAP2 SWAP1 PUSH2 0x9F0 JUMP JUMPDEST PUSH2 0x4DA JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1F3 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1EE SWAP2 SWAP1 PUSH2 0xB7D JUMP JUMPDEST PUSH2 0x514 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x20F PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x20A SWAP2 SWAP1 PUSH2 0xABF JUMP JUMPDEST PUSH2 0x551 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x22B PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x226 SWAP2 SWAP1 PUSH2 0xBB9 JUMP JUMPDEST PUSH2 0x596 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x247 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x242 SWAP2 SWAP1 PUSH2 0xB00 JUMP JUMPDEST PUSH2 0x60E JUMP JUMPDEST STOP JUMPDEST PUSH2 0x263 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x25E SWAP2 SWAP1 PUSH2 0xA96 JUMP JUMPDEST PUSH2 0x61A JUMP JUMPDEST STOP JUMPDEST PUSH2 0x26D PUSH2 0x654 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x289 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x284 SWAP2 SWAP1 PUSH2 0xB00 JUMP JUMPDEST PUSH2 0x682 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2A5 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2A0 SWAP2 SWAP1 PUSH2 0xB7D JUMP JUMPDEST PUSH2 0x6BC JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2C1 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2BC SWAP2 SWAP1 PUSH2 0xA19 JUMP JUMPDEST PUSH2 0x70B JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2DD PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2D8 SWAP2 SWAP1 PUSH2 0xA55 JUMP JUMPDEST PUSH2 0x75A JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2F9 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2F4 SWAP2 SWAP1 PUSH2 0xA55 JUMP JUMPDEST PUSH2 0x794 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x315 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x310 SWAP2 SWAP1 PUSH2 0xB00 JUMP JUMPDEST PUSH2 0x7D9 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x31F PUSH2 0x867 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x33B PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x336 SWAP2 SWAP1 PUSH2 0x9C7 JUMP JUMPDEST PUSH2 0x869 JUMP JUMPDEST STOP JUMPDEST DUP1 PUSH32 0xB421AD092CFCE88844BFBFAA9654E824BA0EE5B6B0A220F822406B62C05364C0 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP JUMP JUMPDEST PUSH32 0x97535D4B4270D3F1A499C85AE918BA6798CBDCC83A26529331A25DCD2194CFCE DUP3 PUSH1 0x40 MLOAD PUSH2 0x39C SWAP2 SWAP1 PUSH2 0xFD2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH32 0x97535D4B4270D3F1A499C85AE918BA6798CBDCC83A26529331A25DCD2194CFCE DUP2 PUSH1 0x40 MLOAD PUSH2 0x3D3 SWAP2 SWAP1 PUSH2 0xFD2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH32 0x73E687A2685D698F7ACF934B4929A29AE783A4BCB640D71C5D6994D74E2380CA PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE POP PUSH1 0x40 MLOAD PUSH2 0x422 SWAP2 SWAP1 PUSH2 0xEEB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH32 0x9B7DDCBDE8DAC280E036F87ACAFEC72F9EEE31A640C08087E8439139C7E5B52A DUP2 PUSH1 0x40 MLOAD PUSH2 0x45D SWAP2 SWAP1 PUSH2 0xF5E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH32 0x9B7DDCBDE8DAC280E036F87ACAFEC72F9EEE31A640C08087E8439139C7E5B52A DUP2 PUSH1 0x40 MLOAD PUSH2 0x497 SWAP2 SWAP1 PUSH2 0xF5E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH32 0x97535D4B4270D3F1A499C85AE918BA6798CBDCC83A26529331A25DCD2194CFCE DUP3 PUSH1 0x40 MLOAD PUSH2 0x4CE SWAP2 SWAP1 PUSH2 0xFD2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH32 0x425517D2678BBCA3C0D9D8D9FDBEC34C81194E7935ED48A6A19F97DB93BCEF6A DUP2 PUSH1 0x40 MLOAD PUSH2 0x509 SWAP2 SWAP1 PUSH2 0xF06 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH32 0x8B268BB46A33A55BECE084A8B6858719C9F2985C860FA06C155A341DF0B73C0E DUP3 DUP3 PUSH1 0x40 MLOAD PUSH2 0x545 SWAP3 SWAP2 SWAP1 PUSH2 0xFED JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH2 0x55F SWAP2 SWAP1 PUSH2 0xE9E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 PUSH32 0xD9CA28363E2D8739E0E9C4FEA1D2DF98D1BD7D9D915D00E5FCCBF78C0FDDCDB0 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP JUMP JUMPDEST PUSH32 0x8B268BB46A33A55BECE084A8B6858719C9F2985C860FA06C155A341DF0B73C0E DUP5 DUP5 PUSH1 0x40 MLOAD PUSH2 0x5C7 SWAP3 SWAP2 SWAP1 PUSH2 0xFED JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH32 0x1F1A2C748505FCD8F16A719FA88D517B1B41111C4F5E07BB28311CDC4D151538 DUP3 DUP3 PUSH1 0x40 MLOAD PUSH2 0x600 SWAP3 SWAP2 SWAP1 PUSH2 0xF80 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP JUMP JUMPDEST PUSH2 0x617 DUP2 PUSH2 0x682 JUMP JUMPDEST POP JUMP JUMPDEST PUSH32 0x39FEAB747BB4F579008AEA963D7EBAC85AD410BB83EE663A42AF01464654E93F DUP2 PUSH1 0x40 MLOAD PUSH2 0x649 SWAP2 SWAP1 PUSH2 0xF43 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH32 0x917B7BF7AB24D61500CB699921A3A1CC22B8833DA6484FEA20F262B2610604AF PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMP JUMPDEST PUSH32 0x97535D4B4270D3F1A499C85AE918BA6798CBDCC83A26529331A25DCD2194CFCE DUP2 PUSH1 0x40 MLOAD PUSH2 0x6B1 SWAP2 SWAP1 PUSH2 0xFD2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH32 0xD59AB87BF64B9D737998F3DC70C649D16B135F085029C1666CA0634BEB75A773 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE POP PUSH1 0x40 MLOAD PUSH2 0x6FF SWAP2 SWAP1 PUSH2 0xFB7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH32 0x15100859F3FFE92910DC3F11ED3DB4E9CF32FF657C05066E44BE4E69B2B488BC PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE POP PUSH1 0x40 MLOAD PUSH2 0x74E SWAP2 SWAP1 PUSH2 0xED0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH32 0x433470EDCDD53B50238BE4D8E048E2BAA269AF5BE2A4E29515C138883C745AA8 DUP2 PUSH1 0x40 MLOAD PUSH2 0x789 SWAP2 SWAP1 PUSH2 0xF21 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH2 0x7A2 SWAP2 SWAP1 PUSH2 0xE87 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 PUSH32 0x160E4655DF40987951ACCF7C731D5C504F77D20C139BD73032821B91A426DD98 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x91940244 DUP3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x832 SWAP2 SWAP1 PUSH2 0xFD2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x84C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x860 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST JUMP JUMPDEST PUSH32 0x336BCD960D2E5A52CEF6094BA33727F309DC2C675EEBEFC6D9B6B6D79ABAC877 DUP2 PUSH1 0x40 MLOAD PUSH2 0x898 SWAP2 SWAP1 PUSH2 0xEB5 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8B6 PUSH2 0x8B1 DUP5 PUSH2 0x103B JUMP JUMPDEST PUSH2 0x1016 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 DUP5 DUP5 ADD GT ISZERO PUSH2 0x8CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8D9 DUP5 DUP3 DUP6 PUSH2 0x1195 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8F4 PUSH2 0x8EF DUP5 PUSH2 0x106C JUMP JUMPDEST PUSH2 0x1016 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 DUP5 DUP5 ADD GT ISZERO PUSH2 0x90C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x917 DUP5 DUP3 DUP6 PUSH2 0x1195 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x92E DUP2 PUSH2 0x1248 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x943 DUP2 PUSH2 0x125F JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x95A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x96A DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x8A3 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x982 DUP2 PUSH2 0x1276 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x999 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x9A9 DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x8E1 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x9C1 DUP2 PUSH2 0x128D JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x9D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x9E7 DUP5 DUP3 DUP6 ADD PUSH2 0x91F JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xA02 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xA10 DUP5 DUP3 DUP6 ADD PUSH2 0x934 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xA2C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xA3A DUP6 DUP3 DUP7 ADD PUSH2 0x934 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0xA4B DUP6 DUP3 DUP7 ADD PUSH2 0x934 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xA67 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xA81 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA8D DUP5 DUP3 DUP6 ADD PUSH2 0x949 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xAA8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xAB6 DUP5 DUP3 DUP6 ADD PUSH2 0x973 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xAD1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xAEB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xAF7 DUP5 DUP3 DUP6 ADD PUSH2 0x988 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xB12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xB20 DUP5 DUP3 DUP6 ADD PUSH2 0x9B2 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xB3C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xB4A DUP6 DUP3 DUP7 ADD PUSH2 0x9B2 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xB67 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB73 DUP6 DUP3 DUP7 ADD PUSH2 0x988 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xB90 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xB9E DUP6 DUP3 DUP7 ADD PUSH2 0x9B2 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0xBAF DUP6 DUP3 DUP7 ADD PUSH2 0x9B2 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0xBCF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xBDD DUP8 DUP3 DUP9 ADD PUSH2 0x9B2 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 PUSH2 0xBEE DUP8 DUP3 DUP9 ADD PUSH2 0x9B2 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xC0B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xC17 DUP8 DUP3 DUP9 ADD PUSH2 0x988 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xC34 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xC40 DUP8 DUP3 DUP9 ADD PUSH2 0x988 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC58 DUP4 DUP4 PUSH2 0xD39 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC70 DUP4 DUP4 PUSH2 0xE69 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xC85 DUP2 PUSH2 0x1145 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0xC94 DUP2 PUSH2 0x10B1 JUMP JUMPDEST PUSH2 0xC9E DUP2 DUP5 PUSH2 0x10F7 JUMP JUMPDEST SWAP3 POP PUSH2 0xCA9 DUP3 PUSH2 0x109D JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xCDA JUMPI DUP2 MLOAD PUSH2 0xCC1 DUP8 DUP3 PUSH2 0xC4C JUMP JUMPDEST SWAP7 POP PUSH2 0xCCC DUP4 PUSH2 0x10DD JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0xCAD JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0xCEB DUP2 PUSH2 0x10BC JUMP JUMPDEST PUSH2 0xCF5 DUP2 DUP5 PUSH2 0x1102 JUMP JUMPDEST SWAP3 POP PUSH2 0xD00 DUP3 PUSH2 0x10A7 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xD31 JUMPI DUP2 MLOAD PUSH2 0xD18 DUP8 DUP3 PUSH2 0xC64 JUMP JUMPDEST SWAP7 POP PUSH2 0xD23 DUP4 PUSH2 0x10EA JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0xD04 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0xD42 DUP2 PUSH2 0x1157 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0xD51 DUP2 PUSH2 0x1157 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD62 DUP3 PUSH2 0x10C7 JUMP JUMPDEST PUSH2 0xD6C DUP2 DUP6 PUSH2 0x110D JUMP JUMPDEST SWAP4 POP PUSH2 0xD7C DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x11A4 JUMP JUMPDEST PUSH2 0xD85 DUP2 PUSH2 0x1237 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD9B DUP3 PUSH2 0x10C7 JUMP JUMPDEST PUSH2 0xDA5 DUP2 DUP6 PUSH2 0x111E JUMP JUMPDEST SWAP4 POP PUSH2 0xDB5 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x11A4 JUMP JUMPDEST DUP1 DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xDCA DUP2 PUSH2 0x1161 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xDDB DUP3 PUSH2 0x10D2 JUMP JUMPDEST PUSH2 0xDE5 DUP2 DUP6 PUSH2 0x1129 JUMP JUMPDEST SWAP4 POP PUSH2 0xDF5 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x11A4 JUMP JUMPDEST PUSH2 0xDFE DUP2 PUSH2 0x1237 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE14 DUP3 PUSH2 0x10D2 JUMP JUMPDEST PUSH2 0xE1E DUP2 DUP6 PUSH2 0x113A JUMP JUMPDEST SWAP4 POP PUSH2 0xE2E DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x11A4 JUMP JUMPDEST DUP1 DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP3 ADD PUSH1 0x0 DUP3 ADD MLOAD PUSH2 0xE50 PUSH1 0x0 DUP6 ADD DUP3 PUSH2 0xE69 JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0xE63 PUSH1 0x20 DUP6 ADD DUP3 PUSH2 0xE69 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0xE72 DUP2 PUSH2 0x118B JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0xE81 DUP2 PUSH2 0x118B JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE93 DUP3 DUP5 PUSH2 0xD90 JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xEAA DUP3 DUP5 PUSH2 0xE09 JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xECA PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xC7C JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0xEE5 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xC8B JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0xF00 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xCE2 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xF1B PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xD48 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 0xF3B DUP2 DUP5 PUSH2 0xD57 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xF58 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xDC1 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 0xF78 DUP2 DUP5 PUSH2 0xDD0 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0xF9A DUP2 DUP6 PUSH2 0xDD0 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0xFAE DUP2 DUP5 PUSH2 0xDD0 JUMP JUMPDEST SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0xFCC PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xE3A JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xFE7 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xE78 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x1002 PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0xE78 JUMP JUMPDEST PUSH2 0x100F PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0xE78 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1020 PUSH2 0x1031 JUMP JUMPDEST SWAP1 POP PUSH2 0x102C DUP3 DUP3 PUSH2 0x11D7 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 0x1056 JUMPI PUSH2 0x1055 PUSH2 0x1208 JUMP JUMPDEST JUMPDEST PUSH2 0x105F DUP3 PUSH2 0x1237 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x1087 JUMPI PUSH2 0x1086 PUSH2 0x1208 JUMP JUMPDEST JUMPDEST PUSH2 0x1090 DUP3 PUSH2 0x1237 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1150 DUP3 PUSH2 0x116B JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 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 0x11C2 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x11A7 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x11D1 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x11E0 DUP3 PUSH2 0x1237 JUMP JUMPDEST DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x11FF JUMPI PUSH2 0x11FE PUSH2 0x1208 JUMP JUMPDEST JUMPDEST DUP1 PUSH1 0x40 MSTORE POP POP POP JUMP 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 PUSH2 0x1251 DUP2 PUSH2 0x1145 JUMP JUMPDEST DUP2 EQ PUSH2 0x125C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x1268 DUP2 PUSH2 0x1157 JUMP JUMPDEST DUP2 EQ PUSH2 0x1273 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x127F DUP2 PUSH2 0x1161 JUMP JUMPDEST DUP2 EQ PUSH2 0x128A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x1296 DUP2 PUSH2 0x118B JUMP JUMPDEST DUP2 EQ PUSH2 0x12A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH20 0xA91A740C0DE3883C5213C5981D98D2396A8B60B3 0xCF 0x2F 0xB3 PUSH5 0xD7E4CC826A DUP5 0x1E PUSH5 0x736F6C6343 STOP ADDMOD DIV STOP CALLER ","sourceMap":"57:2471:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1696:86;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1087:101;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2163:83;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1278:76;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1786:116;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1620:72;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1192:82;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1358:90;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1906:163;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2349:77;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;947:60;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;813:63;;;:::i;:::-;;880;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2073:86;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2250:95;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1452:73;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1529:87;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2430:96;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;779:30;;;:::i;:::-;;1011:72;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1696:86;1775:1;1753:24;;;;;;;;;;1696:86;:::o;1087:101::-;1144:14;1156:1;1144:14;;;;;;:::i;:::-;;;;;;;;1169;1181:1;1169:14;;;;;;:::i;:::-;;;;;;;;1087:101;;:::o;2163:83::-;2220:21;;;;;;;;;2235:1;2220:21;;;;2238:1;2220:21;;;;;;;;;:::i;:::-;;;;;;;;2163:83;;:::o;1278:76::-;1333:16;1347:1;1333:16;;;;;;:::i;:::-;;;;;;;;1278:76;:::o;1786:116::-;1856:16;1870:1;1856:16;;;;;;:::i;:::-;;;;;;;;1883:14;1895:1;1883:14;;;;;;:::i;:::-;;;;;;;;1786:116;;:::o;1620:72::-;1670:17;1685:1;1670:17;;;;;;:::i;:::-;;;;;;;;1620:72;:::o;1192:82::-;1248:21;1264:1;1267;1248:21;;;;;;;:::i;:::-;;;;;;;;1192:82;;:::o;1358:90::-;1441:1;1420:23;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;1358:90;:::o;1906:163::-;2009:21;2025:1;2028;2009:21;;;;;;;:::i;:::-;;;;;;;;2041:23;2059:1;2062;2041:23;;;;;;;:::i;:::-;;;;;;;;1906:163;;;;:::o;2349:77::-;2410:11;2419:1;2410:8;:11::i;:::-;2349:77;:::o;947:60::-;989:13;1000:1;989:13;;;;;;:::i;:::-;;;;;;;;947:60;:::o;813:63::-;858:13;;;;;;;;;;813:63::o;880:::-;924:14;936:1;924:14;;;;;;:::i;:::-;;;;;;;;880:63;:::o;2073:86::-;2127:27;2141:12;;;;;;;;2148:1;2141:12;;;;2151:1;2141:12;;;2127:27;;;;;;:::i;:::-;;;;;;;;2073:86;;:::o;2250:95::-;2316:24;;;;;;;;;2334:1;2316:24;;;;2337:1;2316:24;;;;;;;;;:::i;:::-;;;;;;;;2250:95;;:::o;1452:73::-;1505:15;1518:1;1505:15;;;;;;:::i;:::-;;;;;;;;1452:73;:::o;1529:87::-;1609:1;1589:22;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;1529:87;:::o;2430:96::-;2494:15;;;;;;;;;;:24;;;2519:1;2494:27;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2430:96;:::o;779:30::-;:::o;1011:72::-;1061:17;1076:1;1061:17;;;;;;:::i;:::-;;;;;;;;1011:72;:::o;7:343:4:-;84:5;109:65;125:48;166:6;125:48;:::i;:::-;109:65;:::i;:::-;100:74;;197:6;190:5;183:21;235:4;228:5;224:16;273:3;264:6;259:3;255:16;252:25;249:2;;;290:1;287;280:12;249:2;303:41;337:6;332:3;327;303:41;:::i;:::-;90:260;;;;;;:::o;356:345::-;434:5;459:66;475:49;517:6;475:49;:::i;:::-;459:66;:::i;:::-;450:75;;548:6;541:5;534:21;586:4;579:5;575:16;624:3;615:6;610:3;606:16;603:25;600:2;;;641:1;638;631:12;600:2;654:41;688:6;683:3;678;654:41;:::i;:::-;440:261;;;;;;:::o;707:139::-;753:5;791:6;778:20;769:29;;807:33;834:5;807:33;:::i;:::-;759:87;;;;:::o;852:139::-;898:5;936:6;923:20;914:29;;952:33;979:5;952:33;:::i;:::-;904:87;;;;:::o;1010:271::-;1065:5;1114:3;1107:4;1099:6;1095:17;1091:27;1081:2;;1132:1;1129;1122:12;1081:2;1172:6;1159:20;1197:78;1271:3;1263:6;1256:4;1248:6;1244:17;1197:78;:::i;:::-;1188:87;;1071:210;;;;;:::o;1287:137::-;1332:5;1370:6;1357:20;1348:29;;1386:32;1412:5;1386:32;:::i;:::-;1338:86;;;;:::o;1444:273::-;1500:5;1549:3;1542:4;1534:6;1530:17;1526:27;1516:2;;1567:1;1564;1557:12;1516:2;1607:6;1594:20;1632:79;1707:3;1699:6;1692:4;1684:6;1680:17;1632:79;:::i;:::-;1623:88;;1506:211;;;;;:::o;1723:139::-;1769:5;1807:6;1794:20;1785:29;;1823:33;1850:5;1823:33;:::i;:::-;1775:87;;;;:::o;1868:262::-;1927:6;1976:2;1964:9;1955:7;1951:23;1947:32;1944:2;;;1992:1;1989;1982:12;1944:2;2035:1;2060:53;2105:7;2096:6;2085:9;2081:22;2060:53;:::i;:::-;2050:63;;2006:117;1934:196;;;;:::o;2136:262::-;2195:6;2244:2;2232:9;2223:7;2219:23;2215:32;2212:2;;;2260:1;2257;2250:12;2212:2;2303:1;2328:53;2373:7;2364:6;2353:9;2349:22;2328:53;:::i;:::-;2318:63;;2274:117;2202:196;;;;:::o;2404:407::-;2472:6;2480;2529:2;2517:9;2508:7;2504:23;2500:32;2497:2;;;2545:1;2542;2535:12;2497:2;2588:1;2613:53;2658:7;2649:6;2638:9;2634:22;2613:53;:::i;:::-;2603:63;;2559:117;2715:2;2741:53;2786:7;2777:6;2766:9;2762:22;2741:53;:::i;:::-;2731:63;;2686:118;2487:324;;;;;:::o;2817:373::-;2885:6;2934:2;2922:9;2913:7;2909:23;2905:32;2902:2;;;2950:1;2947;2940:12;2902:2;3021:1;3010:9;3006:17;2993:31;3051:18;3043:6;3040:30;3037:2;;;3083:1;3080;3073:12;3037:2;3111:62;3165:7;3156:6;3145:9;3141:22;3111:62;:::i;:::-;3101:72;;2964:219;2892:298;;;;:::o;3196:260::-;3254:6;3303:2;3291:9;3282:7;3278:23;3274:32;3271:2;;;3319:1;3316;3309:12;3271:2;3362:1;3387:52;3431:7;3422:6;3411:9;3407:22;3387:52;:::i;:::-;3377:62;;3333:116;3261:195;;;;:::o;3462:375::-;3531:6;3580:2;3568:9;3559:7;3555:23;3551:32;3548:2;;;3596:1;3593;3586:12;3548:2;3667:1;3656:9;3652:17;3639:31;3697:18;3689:6;3686:30;3683:2;;;3729:1;3726;3719:12;3683:2;3757:63;3812:7;3803:6;3792:9;3788:22;3757:63;:::i;:::-;3747:73;;3610:220;3538:299;;;;:::o;3843:262::-;3902:6;3951:2;3939:9;3930:7;3926:23;3922:32;3919:2;;;3967:1;3964;3957:12;3919:2;4010:1;4035:53;4080:7;4071:6;4060:9;4056:22;4035:53;:::i;:::-;4025:63;;3981:117;3909:196;;;;:::o;4111:520::-;4189:6;4197;4246:2;4234:9;4225:7;4221:23;4217:32;4214:2;;;4262:1;4259;4252:12;4214:2;4305:1;4330:53;4375:7;4366:6;4355:9;4351:22;4330:53;:::i;:::-;4320:63;;4276:117;4460:2;4449:9;4445:18;4432:32;4491:18;4483:6;4480:30;4477:2;;;4523:1;4520;4513:12;4477:2;4551:63;4606:7;4597:6;4586:9;4582:22;4551:63;:::i;:::-;4541:73;;4403:221;4204:427;;;;;:::o;4637:407::-;4705:6;4713;4762:2;4750:9;4741:7;4737:23;4733:32;4730:2;;;4778:1;4775;4768:12;4730:2;4821:1;4846:53;4891:7;4882:6;4871:9;4867:22;4846:53;:::i;:::-;4836:63;;4792:117;4948:2;4974:53;5019:7;5010:6;4999:9;4995:22;4974:53;:::i;:::-;4964:63;;4919:118;4720:324;;;;;:::o;5050:924::-;5156:6;5164;5172;5180;5229:3;5217:9;5208:7;5204:23;5200:33;5197:2;;;5246:1;5243;5236:12;5197:2;5289:1;5314:53;5359:7;5350:6;5339:9;5335:22;5314:53;:::i;:::-;5304:63;;5260:117;5416:2;5442:53;5487:7;5478:6;5467:9;5463:22;5442:53;:::i;:::-;5432:63;;5387:118;5572:2;5561:9;5557:18;5544:32;5603:18;5595:6;5592:30;5589:2;;;5635:1;5632;5625:12;5589:2;5663:63;5718:7;5709:6;5698:9;5694:22;5663:63;:::i;:::-;5653:73;;5515:221;5803:2;5792:9;5788:18;5775:32;5834:18;5826:6;5823:30;5820:2;;;5866:1;5863;5856:12;5820:2;5894:63;5949:7;5940:6;5929:9;5925:22;5894:63;:::i;:::-;5884:73;;5746:221;5187:787;;;;;;;:::o;5980:179::-;6049:10;6070:46;6112:3;6104:6;6070:46;:::i;:::-;6148:4;6143:3;6139:14;6125:28;;6060:99;;;;:::o;6165:179::-;6234:10;6255:46;6297:3;6289:6;6255:46;:::i;:::-;6333:4;6328:3;6324:14;6310:28;;6245:99;;;;:::o;6350:118::-;6437:24;6455:5;6437:24;:::i;:::-;6432:3;6425:37;6415:53;;:::o;6506:694::-;6642:52;6688:5;6642:52;:::i;:::-;6710:84;6787:6;6782:3;6710:84;:::i;:::-;6703:91;;6818:54;6866:5;6818:54;:::i;:::-;6895:7;6926:1;6911:282;6936:6;6933:1;6930:13;6911:282;;;7012:6;7006:13;7039:63;7098:3;7083:13;7039:63;:::i;:::-;7032:70;;7125:58;7176:6;7125:58;:::i;:::-;7115:68;;6971:222;6958:1;6955;6951:9;6946:14;;6911:282;;;6915:14;6618:582;;;;;:::o;7238:694::-;7374:52;7420:5;7374:52;:::i;:::-;7442:84;7519:6;7514:3;7442:84;:::i;:::-;7435:91;;7550:54;7598:5;7550:54;:::i;:::-;7627:7;7658:1;7643:282;7668:6;7665:1;7662:13;7643:282;;;7744:6;7738:13;7771:63;7830:3;7815:13;7771:63;:::i;:::-;7764:70;;7857:58;7908:6;7857:58;:::i;:::-;7847:68;;7703:222;7690:1;7687;7683:9;7678:14;;7643:282;;;7647:14;7350:582;;;;;:::o;7938:108::-;8015:24;8033:5;8015:24;:::i;:::-;8010:3;8003:37;7993:53;;:::o;8052:118::-;8139:24;8157:5;8139:24;:::i;:::-;8134:3;8127:37;8117:53;;:::o;8176:360::-;8262:3;8290:38;8322:5;8290:38;:::i;:::-;8344:70;8407:6;8402:3;8344:70;:::i;:::-;8337:77;;8423:52;8468:6;8463:3;8456:4;8449:5;8445:16;8423:52;:::i;:::-;8500:29;8522:6;8500:29;:::i;:::-;8495:3;8491:39;8484:46;;8266:270;;;;;:::o;8542:373::-;8646:3;8674:38;8706:5;8674:38;:::i;:::-;8728:88;8809:6;8804:3;8728:88;:::i;:::-;8721:95;;8825:52;8870:6;8865:3;8858:4;8851:5;8847:16;8825:52;:::i;:::-;8902:6;8897:3;8893:16;8886:23;;8650:265;;;;;:::o;8921:115::-;9006:23;9023:5;9006:23;:::i;:::-;9001:3;8994:36;8984:52;;:::o;9042:364::-;9130:3;9158:39;9191:5;9158:39;:::i;:::-;9213:71;9277:6;9272:3;9213:71;:::i;:::-;9206:78;;9293:52;9338:6;9333:3;9326:4;9319:5;9315:16;9293:52;:::i;:::-;9370:29;9392:6;9370:29;:::i;:::-;9365:3;9361:39;9354:46;;9134:272;;;;;:::o;9412:377::-;9518:3;9546:39;9579:5;9546:39;:::i;:::-;9601:89;9683:6;9678:3;9601:89;:::i;:::-;9594:96;;9699:52;9744:6;9739:3;9732:4;9725:5;9721:16;9699:52;:::i;:::-;9776:6;9771:3;9767:16;9760:23;;9522:267;;;;;:::o;9847:495::-;9988:4;9983:3;9979:14;10072:4;10065:5;10061:16;10055:23;10091:63;10148:4;10143:3;10139:14;10125:12;10091:63;:::i;:::-;10003:161;10243:4;10236:5;10232:16;10226:23;10262:63;10319:4;10314:3;10310:14;10296:12;10262:63;:::i;:::-;10174:161;9957:385;;;:::o;10348:108::-;10425:24;10443:5;10425:24;:::i;:::-;10420:3;10413:37;10403:53;;:::o;10462:118::-;10549:24;10567:5;10549:24;:::i;:::-;10544:3;10537:37;10527:53;;:::o;10586:271::-;10716:3;10738:93;10827:3;10818:6;10738:93;:::i;:::-;10731:100;;10848:3;10841:10;;10720:137;;;;:::o;10863:275::-;10995:3;11017:95;11108:3;11099:6;11017:95;:::i;:::-;11010:102;;11129:3;11122:10;;10999:139;;;;:::o;11144:222::-;11237:4;11275:2;11264:9;11260:18;11252:26;;11288:71;11356:1;11345:9;11341:17;11332:6;11288:71;:::i;:::-;11242:124;;;;:::o;11372:314::-;11511:4;11549:2;11538:9;11534:18;11526:26;;11562:117;11676:1;11665:9;11661:17;11652:6;11562:117;:::i;:::-;11516:170;;;;:::o;11692:314::-;11831:4;11869:2;11858:9;11854:18;11846:26;;11882:117;11996:1;11985:9;11981:17;11972:6;11882:117;:::i;:::-;11836:170;;;;:::o;12012:222::-;12105:4;12143:2;12132:9;12128:18;12120:26;;12156:71;12224:1;12213:9;12209:17;12200:6;12156:71;:::i;:::-;12110:124;;;;:::o;12240:309::-;12351:4;12389:2;12378:9;12374:18;12366:26;;12438:9;12432:4;12428:20;12424:1;12413:9;12409:17;12402:47;12466:76;12537:4;12528:6;12466:76;:::i;:::-;12458:84;;12356:193;;;;:::o;12555:218::-;12646:4;12684:2;12673:9;12669:18;12661:26;;12697:69;12763:1;12752:9;12748:17;12739:6;12697:69;:::i;:::-;12651:122;;;;:::o;12779:313::-;12892:4;12930:2;12919:9;12915:18;12907:26;;12979:9;12973:4;12969:20;12965:1;12954:9;12950:17;12943:47;13007:78;13080:4;13071:6;13007:78;:::i;:::-;12999:86;;12897:195;;;;:::o;13098:514::-;13259:4;13297:2;13286:9;13282:18;13274:26;;13346:9;13340:4;13336:20;13332:1;13321:9;13317:17;13310:47;13374:78;13447:4;13438:6;13374:78;:::i;:::-;13366:86;;13499:9;13493:4;13489:20;13484:2;13473:9;13469:18;13462:48;13527:78;13600:4;13591:6;13527:78;:::i;:::-;13519:86;;13264:348;;;;;:::o;13618:310::-;13755:4;13793:2;13782:9;13778:18;13770:26;;13806:115;13918:1;13907:9;13903:17;13894:6;13806:115;:::i;:::-;13760:168;;;;:::o;13934:222::-;14027:4;14065:2;14054:9;14050:18;14042:26;;14078:71;14146:1;14135:9;14131:17;14122:6;14078:71;:::i;:::-;14032:124;;;;:::o;14162:332::-;14283:4;14321:2;14310:9;14306:18;14298:26;;14334:71;14402:1;14391:9;14387:17;14378:6;14334:71;:::i;:::-;14415:72;14483:2;14472:9;14468:18;14459:6;14415:72;:::i;:::-;14288:206;;;;;:::o;14500:129::-;14534:6;14561:20;;:::i;:::-;14551:30;;14590:33;14618:4;14610:6;14590:33;:::i;:::-;14541:88;;;:::o;14635:75::-;14668:6;14701:2;14695:9;14685:19;;14675:35;:::o;14716:307::-;14777:4;14867:18;14859:6;14856:30;14853:2;;;14889:18;;:::i;:::-;14853:2;14927:29;14949:6;14927:29;:::i;:::-;14919:37;;15011:4;15005;15001:15;14993:23;;14782:241;;;:::o;15029:308::-;15091:4;15181:18;15173:6;15170:30;15167:2;;;15203:18;;:::i;:::-;15167:2;15241:29;15263:6;15241:29;:::i;:::-;15233:37;;15325:4;15319;15315:15;15307:23;;15096:241;;;:::o;15343:98::-;15408:4;15431:3;15423:11;;15413:28;;;:::o;15447:98::-;15512:4;15535:3;15527:11;;15517:28;;;:::o;15551:104::-;15616:6;15644:4;15634:14;;15623:32;;;:::o;15661:104::-;15726:6;15754:4;15744:14;;15733:32;;;:::o;15771:98::-;15822:6;15856:5;15850:12;15840:22;;15829:40;;;:::o;15875:99::-;15927:6;15961:5;15955:12;15945:22;;15934:40;;;:::o;15980:111::-;16048:4;16080;16075:3;16071:14;16063:22;;16053:38;;;:::o;16097:111::-;16165:4;16197;16192:3;16188:14;16180:22;;16170:38;;;:::o;16214:143::-;16311:11;16348:3;16333:18;;16323:34;;;;:::o;16363:143::-;16460:11;16497:3;16482:18;;16472:34;;;;:::o;16512:168::-;16595:11;16629:6;16624:3;16617:19;16669:4;16664:3;16660:14;16645:29;;16607:73;;;;:::o;16686:147::-;16787:11;16824:3;16809:18;;16799:34;;;;:::o;16839:169::-;16923:11;16957:6;16952:3;16945:19;16997:4;16992:3;16988:14;16973:29;;16935:73;;;;:::o;17014:148::-;17116:11;17153:3;17138:18;;17128:34;;;;:::o;17168:96::-;17205:7;17234:24;17252:5;17234:24;:::i;:::-;17223:35;;17213:51;;;:::o;17270:77::-;17307:7;17336:5;17325:16;;17315:32;;;:::o;17353:76::-;17389:7;17418:5;17407:16;;17397:32;;;:::o;17435:126::-;17472:7;17512:42;17505:5;17501:54;17490:65;;17480:81;;;:::o;17567:77::-;17604:7;17633:5;17622:16;;17612:32;;;:::o;17650:154::-;17734:6;17729:3;17724;17711:30;17796:1;17787:6;17782:3;17778:16;17771:27;17701:103;;;:::o;17810:307::-;17878:1;17888:113;17902:6;17899:1;17896:13;17888:113;;;17987:1;17982:3;17978:11;17972:18;17968:1;17963:3;17959:11;17952:39;17924:2;17921:1;17917:10;17912:15;;17888:113;;;18019:6;18016:1;18013:13;18010:2;;;18099:1;18090:6;18085:3;18081:16;18074:27;18010:2;17859:258;;;;:::o;18123:281::-;18206:27;18228:4;18206:27;:::i;:::-;18198:6;18194:40;18336:6;18324:10;18321:22;18300:18;18288:10;18285:34;18282:62;18279:2;;;18347:18;;:::i;:::-;18279:2;18387:10;18383:2;18376:22;18166:238;;;:::o;18410:180::-;18458:77;18455:1;18448:88;18555:4;18552:1;18545:15;18579:4;18576:1;18569:15;18596:102;18637:6;18688:2;18684:7;18679:2;18672:5;18668:14;18664:28;18654:38;;18644:54;;;:::o;18704:122::-;18777:24;18795:5;18777:24;:::i;:::-;18770:5;18767:35;18757:2;;18816:1;18813;18806:12;18757:2;18747:79;:::o;18832:122::-;18905:24;18923:5;18905:24;:::i;:::-;18898:5;18895:35;18885:2;;18944:1;18941;18934:12;18885:2;18875:79;:::o;18960:120::-;19032:23;19049:5;19032:23;:::i;:::-;19025:5;19022:34;19012:2;;19070:1;19067;19060:12;19012:2;19002:78;:::o;19086:122::-;19159:24;19177:5;19159:24;:::i;:::-;19152:5;19149:35;19139:2;;19198:1;19195;19188:12;19139:2;19129:79;:::o"},"methodIdentifiers":{"doNotEmit()":"db6cdf68","emitAddress(address)":"ec5c3ede","emitBytes(bytes)":"c76f0635","emitBytes32(bytes32)":"33311ef3","emitBytes32Array(bytes32,bytes32)":"c0cd80e6","emitIndexedBytes(bytes)":"cc07e605","emitIndexedBytes32(bytes32)":"048858e5","emitIndexedString(string)":"443690a0","emitInt(int256)":"8a618191","emitNestedUintFromAnotherContract(uint256)":"d3931e57","emitNestedUintFromSameContract(uint256)":"813a8cf5","emitString(string)":"2536f127","emitStruct(uint256,uint256)":"9f31a223","emitTwoUints(uint256,uint256)":"38393646","emitTwoUintsAndTwoStrings(uint256,uint256,string,string)":"532b9cce","emitUint(uint256)":"91940244","emitUintAndString(uint256,string)":"2785f8d6","emitUintArray(uint256,uint256)":"17aba537","emitUintTwice(uint256,uint256)":"0c0c941a","emitWithoutArgs()":"90b37ea2"}},"metadata":"{\"compiler\":{\"version\":\"0.8.4+commit.c7e474f2\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract AnotherContract\",\"name\":\"c\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"a\",\"type\":\"address\"}],\"name\":\"WithAddressArg\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"b\",\"type\":\"bytes32\"}],\"name\":\"WithBytes32Arg\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32[2]\",\"name\":\"a\",\"type\":\"bytes32[2]\"}],\"name\":\"WithBytes32Array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"b\",\"type\":\"bytes\"}],\"name\":\"WithBytesArg\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"b\",\"type\":\"bytes32\"}],\"name\":\"WithIndexedBytes32Arg\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"b\",\"type\":\"bytes\"}],\"name\":\"WithIndexedBytesArg\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"string\",\"name\":\"s\",\"type\":\"string\"}],\"name\":\"WithIndexedStringArg\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"i\",\"type\":\"int256\"}],\"name\":\"WithIntArg\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"s\",\"type\":\"string\"}],\"name\":\"WithStringArg\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"u\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"v\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"struct Events.Struct\",\"name\":\"s\",\"type\":\"tuple\"}],\"name\":\"WithStructArg\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"s\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"t\",\"type\":\"string\"}],\"name\":\"WithTwoStringArgs\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"u\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"v\",\"type\":\"uint256\"}],\"name\":\"WithTwoUintArgs\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"u\",\"type\":\"uint256\"}],\"name\":\"WithUintArg\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[2]\",\"name\":\"a\",\"type\":\"uint256[2]\"}],\"name\":\"WithUintArray\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"WithoutArgs\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"doNotEmit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"a\",\"type\":\"address\"}],\"name\":\"emitAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"b\",\"type\":\"bytes\"}],\"name\":\"emitBytes\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"b\",\"type\":\"bytes32\"}],\"name\":\"emitBytes32\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"b\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"c\",\"type\":\"bytes32\"}],\"name\":\"emitBytes32Array\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"b\",\"type\":\"bytes\"}],\"name\":\"emitIndexedBytes\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"b\",\"type\":\"bytes32\"}],\"name\":\"emitIndexedBytes32\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"s\",\"type\":\"string\"}],\"name\":\"emitIndexedString\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"i\",\"type\":\"int256\"}],\"name\":\"emitInt\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"u\",\"type\":\"uint256\"}],\"name\":\"emitNestedUintFromAnotherContract\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"u\",\"type\":\"uint256\"}],\"name\":\"emitNestedUintFromSameContract\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"s\",\"type\":\"string\"}],\"name\":\"emitString\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"u\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"v\",\"type\":\"uint256\"}],\"name\":\"emitStruct\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"u\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"v\",\"type\":\"uint256\"}],\"name\":\"emitTwoUints\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"u\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"v\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"s\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"t\",\"type\":\"string\"}],\"name\":\"emitTwoUintsAndTwoStrings\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"u\",\"type\":\"uint256\"}],\"name\":\"emitUint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"u\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"s\",\"type\":\"string\"}],\"name\":\"emitUintAndString\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"u\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"v\",\"type\":\"uint256\"}],\"name\":\"emitUintArray\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"u\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"v\",\"type\":\"uint256\"}],\"name\":\"emitUintTwice\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"emitWithoutArgs\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/Events.sol\":\"Events\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/Events.sol\":{\"keccak256\":\"0x1f12bbd1b991a4eb017f864e7ca09d99cee0730630313442e99fc32a29b28b91\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c8ba3dbc99ecfbb05a95a9a89e8ea74e86f7cbd5441a53fca9f3de94651313d5\",\"dweb:/ipfs/QmYr9HUxkuQxuEwxtLn3f9gB7i2epM95Znt6fRj9xL9T6Y\"]}},\"version\":1}"},"OverrideEventContract":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"u","type":"uint256"}],"name":"simpleEvent","type":"event"},{"anonymous":false,"inputs":[],"name":"simpleEvent","type":"event"},{"inputs":[{"internalType":"uint256","name":"u","type":"uint256"}],"name":"emitSimpleEventWithUintArg","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"emitSimpleEventWithoutArg","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"608060405234801561001057600080fd5b50610188806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80632ce136d91461003b5780638e1c72bb14610057575b600080fd5b610055600480360381019061005091906100de565b610061565b005b61005f61009b565b005b7fb2dc4835200bc382210c109031e47d05b37c9244807898f5910a43f961e6719a816040516100909190610116565b60405180910390a150565b7f8922a6ca0f59f137d8e739a3dca968247fca890d147a5006a57da5bc782f6ae960405160405180910390a1565b6000813590506100d88161013b565b92915050565b6000602082840312156100f057600080fd5b60006100fe848285016100c9565b91505092915050565b61011081610131565b82525050565b600060208201905061012b6000830184610107565b92915050565b6000819050919050565b61014481610131565b811461014f57600080fd5b5056fea264697066735822122016232a4f6ea73657adfebd142c8d15f5593e419f600cb1983aba440defd27a5064736f6c63430008040033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x188 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x36 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x2CE136D9 EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0x8E1C72BB EQ PUSH2 0x57 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x55 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x50 SWAP2 SWAP1 PUSH2 0xDE JUMP JUMPDEST PUSH2 0x61 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x5F PUSH2 0x9B JUMP JUMPDEST STOP JUMPDEST PUSH32 0xB2DC4835200BC382210C109031E47D05B37C9244807898F5910A43F961E6719A DUP2 PUSH1 0x40 MLOAD PUSH2 0x90 SWAP2 SWAP1 PUSH2 0x116 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH32 0x8922A6CA0F59F137D8E739A3DCA968247FCA890D147A5006A57DA5BC782F6AE9 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0xD8 DUP2 PUSH2 0x13B JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xF0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xFE DUP5 DUP3 DUP6 ADD PUSH2 0xC9 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x110 DUP2 PUSH2 0x131 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x12B PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x107 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x144 DUP2 PUSH2 0x131 JUMP JUMPDEST DUP2 EQ PUSH2 0x14F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 AND 0x23 0x2A 0x4F PUSH15 0xA73657ADFEBD142C8D15F5593E419F PUSH1 0xC 0xB1 SWAP9 GASPRICE 0xBA DIFFICULTY 0xD 0xEF 0xD2 PUSH27 0x5064736F6C63430008040033000000000000000000000000000000 ","sourceMap":"2656:248:1:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:980:4","statements":[{"body":{"nodeType":"YulBlock","src":"59:87:4","statements":[{"nodeType":"YulAssignment","src":"69:29:4","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"91:6:4"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"78:12:4"},"nodeType":"YulFunctionCall","src":"78:20:4"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"69:5:4"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"134:5:4"}],"functionName":{"name":"validator_revert_t_uint256","nodeType":"YulIdentifier","src":"107:26:4"},"nodeType":"YulFunctionCall","src":"107:33:4"},"nodeType":"YulExpressionStatement","src":"107:33:4"}]},"name":"abi_decode_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"37:6:4","type":""},{"name":"end","nodeType":"YulTypedName","src":"45:3:4","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"53:5:4","type":""}],"src":"7:139:4"},{"body":{"nodeType":"YulBlock","src":"218:196:4","statements":[{"body":{"nodeType":"YulBlock","src":"264:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"273:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"276:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"266:6:4"},"nodeType":"YulFunctionCall","src":"266:12:4"},"nodeType":"YulExpressionStatement","src":"266:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"239:7:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"248:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"235:3:4"},"nodeType":"YulFunctionCall","src":"235:23:4"},{"kind":"number","nodeType":"YulLiteral","src":"260:2:4","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"231:3:4"},"nodeType":"YulFunctionCall","src":"231:32:4"},"nodeType":"YulIf","src":"228:2:4"},{"nodeType":"YulBlock","src":"290:117:4","statements":[{"nodeType":"YulVariableDeclaration","src":"305:15:4","value":{"kind":"number","nodeType":"YulLiteral","src":"319:1:4","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"309:6:4","type":""}]},{"nodeType":"YulAssignment","src":"334:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"369:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"380:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"365:3:4"},"nodeType":"YulFunctionCall","src":"365:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"389:7:4"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"344:20:4"},"nodeType":"YulFunctionCall","src":"344:53:4"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"334:6:4"}]}]}]},"name":"abi_decode_tuple_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"188:9:4","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"199:7:4","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"211:6:4","type":""}],"src":"152:262:4"},{"body":{"nodeType":"YulBlock","src":"485:53:4","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"502:3:4"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"525:5:4"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"507:17:4"},"nodeType":"YulFunctionCall","src":"507:24:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"495:6:4"},"nodeType":"YulFunctionCall","src":"495:37:4"},"nodeType":"YulExpressionStatement","src":"495:37:4"}]},"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"473:5:4","type":""},{"name":"pos","nodeType":"YulTypedName","src":"480:3:4","type":""}],"src":"420:118:4"},{"body":{"nodeType":"YulBlock","src":"642:124:4","statements":[{"nodeType":"YulAssignment","src":"652:26:4","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"664:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"675:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"660:3:4"},"nodeType":"YulFunctionCall","src":"660:18:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"652:4:4"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"732:6:4"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"745:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"756:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"741:3:4"},"nodeType":"YulFunctionCall","src":"741:17:4"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"688:43:4"},"nodeType":"YulFunctionCall","src":"688:71:4"},"nodeType":"YulExpressionStatement","src":"688:71:4"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"614:9:4","type":""},{"name":"value0","nodeType":"YulTypedName","src":"626:6:4","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"637:4:4","type":""}],"src":"544:222:4"},{"body":{"nodeType":"YulBlock","src":"817:32:4","statements":[{"nodeType":"YulAssignment","src":"827:16:4","value":{"name":"value","nodeType":"YulIdentifier","src":"838:5:4"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"827:7:4"}]}]},"name":"cleanup_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"799:5:4","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"809:7:4","type":""}],"src":"772:77:4"},{"body":{"nodeType":"YulBlock","src":"898:79:4","statements":[{"body":{"nodeType":"YulBlock","src":"955:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"964:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"967:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"957:6:4"},"nodeType":"YulFunctionCall","src":"957:12:4"},"nodeType":"YulExpressionStatement","src":"957:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"921:5:4"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"946:5:4"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"928:17:4"},"nodeType":"YulFunctionCall","src":"928:24:4"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"918:2:4"},"nodeType":"YulFunctionCall","src":"918:35:4"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"911:6:4"},"nodeType":"YulFunctionCall","src":"911:43:4"},"nodeType":"YulIf","src":"908:2:4"}]},"name":"validator_revert_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"891:5:4","type":""}],"src":"855:122:4"}]},"contents":"{\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_uint256(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_uint256(add(headStart, offset), dataEnd)\n }\n\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_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 cleanup_t_uint256(value) -> cleaned {\n cleaned := value\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":4,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100365760003560e01c80632ce136d91461003b5780638e1c72bb14610057575b600080fd5b610055600480360381019061005091906100de565b610061565b005b61005f61009b565b005b7fb2dc4835200bc382210c109031e47d05b37c9244807898f5910a43f961e6719a816040516100909190610116565b60405180910390a150565b7f8922a6ca0f59f137d8e739a3dca968247fca890d147a5006a57da5bc782f6ae960405160405180910390a1565b6000813590506100d88161013b565b92915050565b6000602082840312156100f057600080fd5b60006100fe848285016100c9565b91505092915050565b61011081610131565b82525050565b600060208201905061012b6000830184610107565b92915050565b6000819050919050565b61014481610131565b811461014f57600080fd5b5056fea264697066735822122016232a4f6ea73657adfebd142c8d15f5593e419f600cb1983aba440defd27a5064736f6c63430008040033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x36 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x2CE136D9 EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0x8E1C72BB EQ PUSH2 0x57 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x55 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x50 SWAP2 SWAP1 PUSH2 0xDE JUMP JUMPDEST PUSH2 0x61 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x5F PUSH2 0x9B JUMP JUMPDEST STOP JUMPDEST PUSH32 0xB2DC4835200BC382210C109031E47D05B37C9244807898F5910A43F961E6719A DUP2 PUSH1 0x40 MLOAD PUSH2 0x90 SWAP2 SWAP1 PUSH2 0x116 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH32 0x8922A6CA0F59F137D8E739A3DCA968247FCA890D147A5006A57DA5BC782F6AE9 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0xD8 DUP2 PUSH2 0x13B JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xF0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xFE DUP5 DUP3 DUP6 ADD PUSH2 0xC9 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x110 DUP2 PUSH2 0x131 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x12B PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x107 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x144 DUP2 PUSH2 0x131 JUMP JUMPDEST DUP2 EQ PUSH2 0x14F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 AND 0x23 0x2A 0x4F PUSH15 0xA73657ADFEBD142C8D15F5593E419F PUSH1 0xC 0xB1 SWAP9 GASPRICE 0xBA DIFFICULTY 0xD 0xEF 0xD2 PUSH27 0x5064736F6C63430008040033000000000000000000000000000000 ","sourceMap":"2656:248:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2744:81;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2829:73;;;:::i;:::-;;2744:81;2806:14;2818:1;2806:14;;;;;;:::i;:::-;;;;;;;;2744:81;:::o;2829:73::-;2884:13;;;;;;;;;;2829:73::o;7:139:4:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:262::-;211:6;260:2;248:9;239:7;235:23;231:32;228:2;;;276:1;273;266:12;228:2;319:1;344:53;389:7;380:6;369:9;365:22;344:53;:::i;:::-;334:63;;290:117;218:196;;;;:::o;420:118::-;507:24;525:5;507:24;:::i;:::-;502:3;495:37;485:53;;:::o;544:222::-;637:4;675:2;664:9;660:18;652:26;;688:71;756:1;745:9;741:17;732:6;688:71;:::i;:::-;642:124;;;;:::o;772:77::-;809:7;838:5;827:16;;817:32;;;:::o;855:122::-;928:24;946:5;928:24;:::i;:::-;921:5;918:35;908:2;;967:1;964;957:12;908:2;898:79;:::o"},"methodIdentifiers":{"emitSimpleEventWithUintArg(uint256)":"2ce136d9","emitSimpleEventWithoutArg()":"8e1c72bb"}},"metadata":"{\"compiler\":{\"version\":\"0.8.4+commit.c7e474f2\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"u\",\"type\":\"uint256\"}],\"name\":\"simpleEvent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"simpleEvent\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"u\",\"type\":\"uint256\"}],\"name\":\"emitSimpleEventWithUintArg\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"emitSimpleEventWithoutArg\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/Events.sol\":\"OverrideEventContract\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/Events.sol\":{\"keccak256\":\"0x1f12bbd1b991a4eb017f864e7ca09d99cee0730630313442e99fc32a29b28b91\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c8ba3dbc99ecfbb05a95a9a89e8ea74e86f7cbd5441a53fca9f3de94651313d5\",\"dweb:/ipfs/QmYr9HUxkuQxuEwxtLn3f9gB7i2epM95Znt6fRj9xL9T6Y\"]}},\"version\":1}"}},"contracts/Matchers.sol":{"AnotherMatchersContract":{"abi":[{"inputs":[],"name":"YetAnotherCustomError","type":"error"},{"inputs":[],"name":"revertWithYetAnotherCustomError","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revertWithYetAnotherCustomErrorView","outputs":[],"stateMutability":"pure","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"608060405234801561001057600080fd5b50610182806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c806340d83b241461003b5780634b2bd7e914610045575b600080fd5b61004361004f565b005b61004d610081565b005b6040517fff05e87500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080815480929190610093906100d4565b91905055506040517fff05e87500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000819050919050565b60006100df826100ca565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156101125761011161011d565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea2646970667358221220188b4117d3c1f35f2fcbff7fbf51ee28f08c8abd18e3796ccd1d2fbc8c862e3f64736f6c63430008040033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x182 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x36 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x40D83B24 EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0x4B2BD7E9 EQ PUSH2 0x45 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x43 PUSH2 0x4F JUMP JUMPDEST STOP JUMPDEST PUSH2 0x4D PUSH2 0x81 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xFF05E87500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP2 SLOAD DUP1 SWAP3 SWAP2 SWAP1 PUSH2 0x93 SWAP1 PUSH2 0xD4 JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE POP PUSH1 0x40 MLOAD PUSH32 0xFF05E87500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xDF DUP3 PUSH2 0xCA JUMP JUMPDEST SWAP2 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 EQ ISZERO PUSH2 0x112 JUMPI PUSH2 0x111 PUSH2 0x11D JUMP JUMPDEST JUMPDEST PUSH1 0x1 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 XOR DUP12 COINBASE OR 0xD3 0xC1 RETURN 0x5F 0x2F 0xCB SELFDESTRUCT PUSH32 0xBF51EE28F08C8ABD18E3796CCD1D2FBC8C862E3F64736F6C6343000804003300 ","sourceMap":"2776:288:2:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:512:4","statements":[{"body":{"nodeType":"YulBlock","src":"52:32:4","statements":[{"nodeType":"YulAssignment","src":"62:16:4","value":{"name":"value","nodeType":"YulIdentifier","src":"73:5:4"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"62:7:4"}]}]},"name":"cleanup_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"34:5:4","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"44:7:4","type":""}],"src":"7:77:4"},{"body":{"nodeType":"YulBlock","src":"133:190:4","statements":[{"nodeType":"YulAssignment","src":"143:33:4","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"170:5:4"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"152:17:4"},"nodeType":"YulFunctionCall","src":"152:24:4"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"143:5:4"}]},{"body":{"nodeType":"YulBlock","src":"266:22:4","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"268:16:4"},"nodeType":"YulFunctionCall","src":"268:18:4"},"nodeType":"YulExpressionStatement","src":"268:18:4"}]},"condition":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"191:5:4"},{"kind":"number","nodeType":"YulLiteral","src":"198:66:4","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"188:2:4"},"nodeType":"YulFunctionCall","src":"188:77:4"},"nodeType":"YulIf","src":"185:2:4"},{"nodeType":"YulAssignment","src":"297:20:4","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"308:5:4"},{"kind":"number","nodeType":"YulLiteral","src":"315:1:4","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"304:3:4"},"nodeType":"YulFunctionCall","src":"304:13:4"},"variableNames":[{"name":"ret","nodeType":"YulIdentifier","src":"297:3:4"}]}]},"name":"increment_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"119:5:4","type":""}],"returnVariables":[{"name":"ret","nodeType":"YulTypedName","src":"129:3:4","type":""}],"src":"90:233:4"},{"body":{"nodeType":"YulBlock","src":"357:152:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"374:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"377:77:4","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"367:6:4"},"nodeType":"YulFunctionCall","src":"367:88:4"},"nodeType":"YulExpressionStatement","src":"367:88:4"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"471:1:4","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"474:4:4","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"464:6:4"},"nodeType":"YulFunctionCall","src":"464:15:4"},"nodeType":"YulExpressionStatement","src":"464:15:4"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"495:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"498:4:4","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"488:6:4"},"nodeType":"YulFunctionCall","src":"488:15:4"},"nodeType":"YulExpressionStatement","src":"488:15:4"}]},"name":"panic_error_0x11","nodeType":"YulFunctionDefinition","src":"329:180:4"}]},"contents":"{\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function increment_t_uint256(value) -> ret {\n value := cleanup_t_uint256(value)\n if eq(value, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) { panic_error_0x11() }\n ret := add(value, 1)\n }\n\n function panic_error_0x11() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n\n}\n","id":4,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100365760003560e01c806340d83b241461003b5780634b2bd7e914610045575b600080fd5b61004361004f565b005b61004d610081565b005b6040517fff05e87500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080815480929190610093906100d4565b91905055506040517fff05e87500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000819050919050565b60006100df826100ca565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156101125761011161011d565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea2646970667358221220188b4117d3c1f35f2fcbff7fbf51ee28f08c8abd18e3796ccd1d2fbc8c862e3f64736f6c63430008040033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x36 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x40D83B24 EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0x4B2BD7E9 EQ PUSH2 0x45 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x43 PUSH2 0x4F JUMP JUMPDEST STOP JUMPDEST PUSH2 0x4D PUSH2 0x81 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xFF05E87500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP2 SLOAD DUP1 SWAP3 SWAP2 SWAP1 PUSH2 0x93 SWAP1 PUSH2 0xD4 JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE POP PUSH1 0x40 MLOAD PUSH32 0xFF05E87500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xDF DUP3 PUSH2 0xCA JUMP JUMPDEST SWAP2 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 EQ ISZERO PUSH2 0x112 JUMPI PUSH2 0x111 PUSH2 0x11D JUMP JUMPDEST JUMPDEST PUSH1 0x1 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 XOR DUP12 COINBASE OR 0xD3 0xC1 RETURN 0x5F 0x2F 0xCB SELFDESTRUCT PUSH32 0xBF51EE28F08C8ABD18E3796CCD1D2FBC8C862E3F64736F6C6343000804003300 ","sourceMap":"2776:288:2:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2962:100;;;:::i;:::-;;2858;;;:::i;:::-;;2962;3034:23;;;;;;;;;;;;;;2858:100;2914:1;;:3;;;;;;;;;:::i;:::-;;;;;;2930:23;;;;;;;;;;;;;;7:77:4;44:7;73:5;62:16;;52:32;;;:::o;90:233::-;129:3;152:24;170:5;152:24;:::i;:::-;143:33;;198:66;191:5;188:77;185:2;;;268:18;;:::i;:::-;185:2;315:1;308:5;304:13;297:20;;133:190;;;:::o;329:180::-;377:77;374:1;367:88;474:4;471:1;464:15;498:4;495:1;488:15"},"methodIdentifiers":{"revertWithYetAnotherCustomError()":"4b2bd7e9","revertWithYetAnotherCustomErrorView()":"40d83b24"}},"metadata":"{\"compiler\":{\"version\":\"0.8.4+commit.c7e474f2\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"YetAnotherCustomError\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"revertWithYetAnotherCustomError\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"revertWithYetAnotherCustomErrorView\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/Matchers.sol\":\"AnotherMatchersContract\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/Matchers.sol\":{\"keccak256\":\"0x5a69001d60d8f2498c88a26a86619900f4a7d1e7443adcb5f6bf73b112e659df\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://ca96217e25bd9b0beccc5038bcde4bb32fc71f7828c01e2254f7c6eb06b2ec1c\",\"dweb:/ipfs/QmaHs3KgdszUPBCWbYsxriReGFePSG1AE23BxSCa98cnT9\"]}},\"version\":1}"},"Matchers":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"AnotherCustomError","type":"error"},{"inputs":[{"internalType":"int256","name":"","type":"int256"}],"name":"CustomErrorWithInt","type":"error"},{"inputs":[{"components":[{"internalType":"uint256","name":"a","type":"uint256"},{"internalType":"uint256","name":"b","type":"uint256"}],"internalType":"struct Matchers.Pair","name":"","type":"tuple"}],"name":"CustomErrorWithPair","type":"error"},{"inputs":[{"internalType":"uint256","name":"nameToForceEthersToUseAnArrayLikeWithNamedProperties","type":"uint256"}],"name":"CustomErrorWithUint","type":"error"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"string","name":"","type":"string"}],"name":"CustomErrorWithUintAndString","type":"error"},{"inputs":[],"name":"SomeCustomError","type":"error"},{"anonymous":false,"inputs":[],"name":"SomeEvent","type":"event"},{"inputs":[],"name":"panicAssert","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"panicAssertView","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"revertWithAnotherContractCustomError","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revertWithAnotherContractCustomErrorView","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[],"name":"revertWithAnotherCustomError","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revertWithAnotherCustomErrorView","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"int256","name":"i","type":"int256"}],"name":"revertWithCustomErrorWithInt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"int256","name":"i","type":"int256"}],"name":"revertWithCustomErrorWithIntView","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"a","type":"uint256"},{"internalType":"uint256","name":"b","type":"uint256"}],"name":"revertWithCustomErrorWithPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"a","type":"uint256"},{"internalType":"uint256","name":"b","type":"uint256"}],"name":"revertWithCustomErrorWithPairView","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"n","type":"uint256"}],"name":"revertWithCustomErrorWithUint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"n","type":"uint256"},{"internalType":"string","name":"s","type":"string"}],"name":"revertWithCustomErrorWithUintAndString","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"n","type":"uint256"},{"internalType":"string","name":"s","type":"string"}],"name":"revertWithCustomErrorWithUintAndStringView","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"n","type":"uint256"}],"name":"revertWithCustomErrorWithUintView","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"revertWithSomeCustomError","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revertWithSomeCustomErrorView","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"reason","type":"string"}],"name":"revertsWith","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"reason","type":"string"}],"name":"revertsWithView","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"revertsWithoutReason","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revertsWithoutReasonView","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"succeeds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"succeedsView","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"608060405234801561001057600080fd5b5060405161001d9061007f565b604051809103906000f080158015610039573d6000803e3d6000fd5b50600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061008c565b6101a280610e8a83390190565b610def8061009b6000396000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c806373d2ea85116100b8578063aac014e01161007c578063aac014e01461028b578063b6bbe06114610295578063bad92aa91461029f578063e0a03812146102a9578063fe276a34146102c5578063ffb4746b146102e157610142565b806373d2ea851461022357806374afd4521461023f578063772f243a146102495780637c3cb0af146102535780638f9330301461026f57610142565b80634b5bbf6a1161010a5780634b5bbf6a146101c157806358a1d1ed146101cb5780635b94e31e146101d5578063622051f1146101df5780636f1fdc31146101e95780636fc588d21461020557610142565b80631b4f3f3d146101475780631f542cf3146101515780633ba4178b1461016d578063467e3d371461018957806347c56769146101a5575b600080fd5b61014f6102eb565b005b61016b60048036038101906101669190610a66565b61030f565b005b61018760048036038101906101829190610a12565b610360565b005b6101a3600480360381019061019e91906109a8565b61039f565b005b6101bf60048036038101906101ba919061097f565b6103e7565b005b6101c9610424565b005b6101d361046d565b005b6101dd61047a565b005b6101e76104b1565b005b61020360048036038101906101fe91906109a8565b610533565b005b61020d610592565b60405161021a9190610b8f565b60405180910390f35b61023d600480360381019061023891906109e9565b61059b565b005b6102476105ef565b005b610251610608565b005b61026d600480360381019061026891906109e9565b6106a3565b005b6102896004803603810190610284919061097f565b6106e0565b005b610293610734565b005b61029d610766565b005b6102a76107b4565b005b6102c360048036038101906102be9190610a66565b6107fd565b005b6102df60048036038101906102da9190610a12565b610865565b005b6102e96108bb565b005b6000808154809291906102fd90610cd3565b9190505550600061030d57600080fd5b565b6040518060400160405280838152602001828152506040517fdecab0e70000000000000000000000000000000000000000000000000000000081526004016103579190610b74565b60405180910390fd5b81816040517fa92ee8e3000000000000000000000000000000000000000000000000000000008152600401610396929190610baa565b60405180910390fd5b600081906103e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103da9190610b52565b60405180910390fd5b5050565b806040517fcdd7a0cc00000000000000000000000000000000000000000000000000000000815260040161041b9190610b37565b60405180910390fd5b60008081548092919061043690610cd3565b91905055506040517fd2c097a600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061047857600080fd5b565b60006104af577f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340d83b246040518163ffffffff1660e01b815260040160006040518083038186803b15801561051957600080fd5b505afa15801561052d573d6000803e3d6000fd5b50505050565b60008081548092919061054590610cd3565b91905055506000819061058e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105859190610b52565b60405180910390fd5b5050565b60008054905090565b6000808154809291906105ad90610cd3565b9190505550806040517f01f4d5d20000000000000000000000000000000000000000000000000000000081526004016105e69190610b8f565b60405180910390fd5b60008081548092919061060190610cd3565b9190505550565b60008081548092919061061a90610cd3565b9190505550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634b2bd7e96040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561068957600080fd5b505af115801561069d573d6000803e3d6000fd5b50505050565b806040517f01f4d5d20000000000000000000000000000000000000000000000000000000081526004016106d79190610b8f565b60405180910390fd5b6000808154809291906106f290610cd3565b9190505550806040517fcdd7a0cc00000000000000000000000000000000000000000000000000000000815260040161072b9190610b37565b60405180910390fd5b6040517fd2c097a600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008081548092919061077890610cd3565b919050555060006107b2577f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b565b6000808154809291906107c690610cd3565b91905055506040517f0bd3d39c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008081548092919061080f90610cd3565b91905055506040518060400160405280838152602001828152506040517fdecab0e700000000000000000000000000000000000000000000000000000000815260040161085c9190610b74565b60405180910390fd5b60008081548092919061087790610cd3565b919050555081816040517fa92ee8e30000000000000000000000000000000000000000000000000000000081526004016108b2929190610baa565b60405180910390fd5b6040517f0bd3d39c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006109006108fb84610bff565b610bda565b90508281526020810184848401111561091857600080fd5b610923848285610c60565b509392505050565b60008135905061093a81610d8b565b92915050565b600082601f83011261095157600080fd5b81356109618482602086016108ed565b91505092915050565b60008135905061097981610da2565b92915050565b60006020828403121561099157600080fd5b600061099f8482850161092b565b91505092915050565b6000602082840312156109ba57600080fd5b600082013567ffffffffffffffff8111156109d457600080fd5b6109e084828501610940565b91505092915050565b6000602082840312156109fb57600080fd5b6000610a098482850161096a565b91505092915050565b60008060408385031215610a2557600080fd5b6000610a338582860161096a565b925050602083013567ffffffffffffffff811115610a5057600080fd5b610a5c85828601610940565b9150509250929050565b60008060408385031215610a7957600080fd5b6000610a878582860161096a565b9250506020610a988582860161096a565b9150509250929050565b610aab81610c4c565b82525050565b6000610abc82610c30565b610ac68185610c3b565b9350610ad6818560208601610c6f565b610adf81610d7a565b840191505092915050565b604082016000820151610b006000850182610b19565b506020820151610b136020850182610b19565b50505050565b610b2281610c56565b82525050565b610b3181610c56565b82525050565b6000602082019050610b4c6000830184610aa2565b92915050565b60006020820190508181036000830152610b6c8184610ab1565b905092915050565b6000604082019050610b896000830184610aea565b92915050565b6000602082019050610ba46000830184610b28565b92915050565b6000604082019050610bbf6000830185610b28565b8181036020830152610bd18184610ab1565b90509392505050565b6000610be4610bf5565b9050610bf08282610ca2565b919050565b6000604051905090565b600067ffffffffffffffff821115610c1a57610c19610d4b565b5b610c2382610d7a565b9050602081019050919050565b600081519050919050565b600082825260208201905092915050565b6000819050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015610c8d578082015181840152602081019050610c72565b83811115610c9c576000848401525b50505050565b610cab82610d7a565b810181811067ffffffffffffffff82111715610cca57610cc9610d4b565b5b80604052505050565b6000610cde82610c56565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415610d1157610d10610d1c565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b610d9481610c4c565b8114610d9f57600080fd5b50565b610dab81610c56565b8114610db657600080fd5b5056fea264697066735822122025e4c9eca28af81eeb16cfbb3832355e24c64c7eae221a5034159a671d61281464736f6c63430008040033608060405234801561001057600080fd5b50610182806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c806340d83b241461003b5780634b2bd7e914610045575b600080fd5b61004361004f565b005b61004d610081565b005b6040517fff05e87500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080815480929190610093906100d4565b91905055506040517fff05e87500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000819050919050565b60006100df826100ca565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156101125761011161011d565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea2646970667358221220188b4117d3c1f35f2fcbff7fbf51ee28f08c8abd18e3796ccd1d2fbc8c862e3f64736f6c63430008040033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x1D SWAP1 PUSH2 0x7F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH2 0x39 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH2 0x8C JUMP JUMPDEST PUSH2 0x1A2 DUP1 PUSH2 0xE8A DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH2 0xDEF DUP1 PUSH2 0x9B PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x142 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x73D2EA85 GT PUSH2 0xB8 JUMPI DUP1 PUSH4 0xAAC014E0 GT PUSH2 0x7C JUMPI DUP1 PUSH4 0xAAC014E0 EQ PUSH2 0x28B JUMPI DUP1 PUSH4 0xB6BBE061 EQ PUSH2 0x295 JUMPI DUP1 PUSH4 0xBAD92AA9 EQ PUSH2 0x29F JUMPI DUP1 PUSH4 0xE0A03812 EQ PUSH2 0x2A9 JUMPI DUP1 PUSH4 0xFE276A34 EQ PUSH2 0x2C5 JUMPI DUP1 PUSH4 0xFFB4746B EQ PUSH2 0x2E1 JUMPI PUSH2 0x142 JUMP JUMPDEST DUP1 PUSH4 0x73D2EA85 EQ PUSH2 0x223 JUMPI DUP1 PUSH4 0x74AFD452 EQ PUSH2 0x23F JUMPI DUP1 PUSH4 0x772F243A EQ PUSH2 0x249 JUMPI DUP1 PUSH4 0x7C3CB0AF EQ PUSH2 0x253 JUMPI DUP1 PUSH4 0x8F933030 EQ PUSH2 0x26F JUMPI PUSH2 0x142 JUMP JUMPDEST DUP1 PUSH4 0x4B5BBF6A GT PUSH2 0x10A JUMPI DUP1 PUSH4 0x4B5BBF6A EQ PUSH2 0x1C1 JUMPI DUP1 PUSH4 0x58A1D1ED EQ PUSH2 0x1CB JUMPI DUP1 PUSH4 0x5B94E31E EQ PUSH2 0x1D5 JUMPI DUP1 PUSH4 0x622051F1 EQ PUSH2 0x1DF JUMPI DUP1 PUSH4 0x6F1FDC31 EQ PUSH2 0x1E9 JUMPI DUP1 PUSH4 0x6FC588D2 EQ PUSH2 0x205 JUMPI PUSH2 0x142 JUMP JUMPDEST DUP1 PUSH4 0x1B4F3F3D EQ PUSH2 0x147 JUMPI DUP1 PUSH4 0x1F542CF3 EQ PUSH2 0x151 JUMPI DUP1 PUSH4 0x3BA4178B EQ PUSH2 0x16D JUMPI DUP1 PUSH4 0x467E3D37 EQ PUSH2 0x189 JUMPI DUP1 PUSH4 0x47C56769 EQ PUSH2 0x1A5 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x14F PUSH2 0x2EB JUMP JUMPDEST STOP JUMPDEST PUSH2 0x16B PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x166 SWAP2 SWAP1 PUSH2 0xA66 JUMP JUMPDEST PUSH2 0x30F JUMP JUMPDEST STOP JUMPDEST PUSH2 0x187 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x182 SWAP2 SWAP1 PUSH2 0xA12 JUMP JUMPDEST PUSH2 0x360 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1A3 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x19E SWAP2 SWAP1 PUSH2 0x9A8 JUMP JUMPDEST PUSH2 0x39F JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1BF PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1BA SWAP2 SWAP1 PUSH2 0x97F JUMP JUMPDEST PUSH2 0x3E7 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1C9 PUSH2 0x424 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1D3 PUSH2 0x46D JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1DD PUSH2 0x47A JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1E7 PUSH2 0x4B1 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x203 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1FE SWAP2 SWAP1 PUSH2 0x9A8 JUMP JUMPDEST PUSH2 0x533 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x20D PUSH2 0x592 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x21A SWAP2 SWAP1 PUSH2 0xB8F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x23D PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x238 SWAP2 SWAP1 PUSH2 0x9E9 JUMP JUMPDEST PUSH2 0x59B JUMP JUMPDEST STOP JUMPDEST PUSH2 0x247 PUSH2 0x5EF JUMP JUMPDEST STOP JUMPDEST PUSH2 0x251 PUSH2 0x608 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x26D PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x268 SWAP2 SWAP1 PUSH2 0x9E9 JUMP JUMPDEST PUSH2 0x6A3 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x289 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x284 SWAP2 SWAP1 PUSH2 0x97F JUMP JUMPDEST PUSH2 0x6E0 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x293 PUSH2 0x734 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x29D PUSH2 0x766 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2A7 PUSH2 0x7B4 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2C3 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2BE SWAP2 SWAP1 PUSH2 0xA66 JUMP JUMPDEST PUSH2 0x7FD JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2DF PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2DA SWAP2 SWAP1 PUSH2 0xA12 JUMP JUMPDEST PUSH2 0x865 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2E9 PUSH2 0x8BB JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 DUP2 SLOAD DUP1 SWAP3 SWAP2 SWAP1 PUSH2 0x2FD SWAP1 PUSH2 0xCD3 JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE POP PUSH1 0x0 PUSH2 0x30D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE POP PUSH1 0x40 MLOAD PUSH32 0xDECAB0E700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x357 SWAP2 SWAP1 PUSH2 0xB74 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 DUP2 PUSH1 0x40 MLOAD PUSH32 0xA92EE8E300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x396 SWAP3 SWAP2 SWAP1 PUSH2 0xBAA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 SWAP1 PUSH2 0x3E3 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DA SWAP2 SWAP1 PUSH2 0xB52 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP JUMP JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH32 0xCDD7A0CC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x41B SWAP2 SWAP1 PUSH2 0xB37 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP2 SLOAD DUP1 SWAP3 SWAP2 SWAP1 PUSH2 0x436 SWAP1 PUSH2 0xCD3 JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE POP PUSH1 0x40 MLOAD PUSH32 0xD2C097A600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x478 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4AF JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x1 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x40D83B24 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x519 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x52D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP2 SLOAD DUP1 SWAP3 SWAP2 SWAP1 PUSH2 0x545 SWAP1 PUSH2 0xCD3 JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE POP PUSH1 0x0 DUP2 SWAP1 PUSH2 0x58E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x585 SWAP2 SWAP1 PUSH2 0xB52 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP2 SLOAD DUP1 SWAP3 SWAP2 SWAP1 PUSH2 0x5AD SWAP1 PUSH2 0xCD3 JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE POP DUP1 PUSH1 0x40 MLOAD PUSH32 0x1F4D5D200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5E6 SWAP2 SWAP1 PUSH2 0xB8F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP2 SLOAD DUP1 SWAP3 SWAP2 SWAP1 PUSH2 0x601 SWAP1 PUSH2 0xCD3 JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP2 SLOAD DUP1 SWAP3 SWAP2 SWAP1 PUSH2 0x61A SWAP1 PUSH2 0xCD3 JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE POP PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x4B2BD7E9 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x689 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x69D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMP JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH32 0x1F4D5D200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x6D7 SWAP2 SWAP1 PUSH2 0xB8F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP2 SLOAD DUP1 SWAP3 SWAP2 SWAP1 PUSH2 0x6F2 SWAP1 PUSH2 0xCD3 JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE POP DUP1 PUSH1 0x40 MLOAD PUSH32 0xCDD7A0CC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x72B SWAP2 SWAP1 PUSH2 0xB37 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xD2C097A600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP2 SLOAD DUP1 SWAP3 SWAP2 SWAP1 PUSH2 0x778 SWAP1 PUSH2 0xCD3 JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE POP PUSH1 0x0 PUSH2 0x7B2 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x1 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST JUMP JUMPDEST PUSH1 0x0 DUP1 DUP2 SLOAD DUP1 SWAP3 SWAP2 SWAP1 PUSH2 0x7C6 SWAP1 PUSH2 0xCD3 JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE POP PUSH1 0x40 MLOAD PUSH32 0xBD3D39C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP2 SLOAD DUP1 SWAP3 SWAP2 SWAP1 PUSH2 0x80F SWAP1 PUSH2 0xCD3 JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE POP PUSH1 0x40 MLOAD PUSH32 0xDECAB0E700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x85C SWAP2 SWAP1 PUSH2 0xB74 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP2 SLOAD DUP1 SWAP3 SWAP2 SWAP1 PUSH2 0x877 SWAP1 PUSH2 0xCD3 JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE POP DUP2 DUP2 PUSH1 0x40 MLOAD PUSH32 0xA92EE8E300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x8B2 SWAP3 SWAP2 SWAP1 PUSH2 0xBAA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xBD3D39C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x900 PUSH2 0x8FB DUP5 PUSH2 0xBFF JUMP JUMPDEST PUSH2 0xBDA JUMP JUMPDEST SWAP1 POP DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 DUP5 DUP5 ADD GT ISZERO PUSH2 0x918 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x923 DUP5 DUP3 DUP6 PUSH2 0xC60 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x93A DUP2 PUSH2 0xD8B JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x951 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x961 DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x8ED JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x979 DUP2 PUSH2 0xDA2 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x991 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x99F DUP5 DUP3 DUP6 ADD PUSH2 0x92B JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x9BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x9D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9E0 DUP5 DUP3 DUP6 ADD PUSH2 0x940 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x9FB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xA09 DUP5 DUP3 DUP6 ADD PUSH2 0x96A JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xA25 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xA33 DUP6 DUP3 DUP7 ADD PUSH2 0x96A JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xA50 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA5C DUP6 DUP3 DUP7 ADD PUSH2 0x940 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xA79 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xA87 DUP6 DUP3 DUP7 ADD PUSH2 0x96A JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0xA98 DUP6 DUP3 DUP7 ADD PUSH2 0x96A JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH2 0xAAB DUP2 PUSH2 0xC4C JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xABC DUP3 PUSH2 0xC30 JUMP JUMPDEST PUSH2 0xAC6 DUP2 DUP6 PUSH2 0xC3B JUMP JUMPDEST SWAP4 POP PUSH2 0xAD6 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0xC6F JUMP JUMPDEST PUSH2 0xADF DUP2 PUSH2 0xD7A JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP3 ADD PUSH1 0x0 DUP3 ADD MLOAD PUSH2 0xB00 PUSH1 0x0 DUP6 ADD DUP3 PUSH2 0xB19 JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0xB13 PUSH1 0x20 DUP6 ADD DUP3 PUSH2 0xB19 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0xB22 DUP2 PUSH2 0xC56 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0xB31 DUP2 PUSH2 0xC56 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xB4C PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xAA2 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 0xB6C DUP2 DUP5 PUSH2 0xAB1 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0xB89 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xAEA JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xBA4 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xB28 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0xBBF PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0xB28 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0xBD1 DUP2 DUP5 PUSH2 0xAB1 JUMP JUMPDEST SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xBE4 PUSH2 0xBF5 JUMP JUMPDEST SWAP1 POP PUSH2 0xBF0 DUP3 DUP3 PUSH2 0xCA2 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 0xC1A JUMPI PUSH2 0xC19 PUSH2 0xD4B JUMP JUMPDEST JUMPDEST PUSH2 0xC23 DUP3 PUSH2 0xD7A 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 DUP2 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 0xC8D JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0xC72 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0xC9C JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0xCAB DUP3 PUSH2 0xD7A JUMP JUMPDEST DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0xCCA JUMPI PUSH2 0xCC9 PUSH2 0xD4B JUMP JUMPDEST JUMPDEST DUP1 PUSH1 0x40 MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCDE DUP3 PUSH2 0xC56 JUMP JUMPDEST SWAP2 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 EQ ISZERO PUSH2 0xD11 JUMPI PUSH2 0xD10 PUSH2 0xD1C JUMP JUMPDEST JUMPDEST PUSH1 0x1 DUP3 ADD SWAP1 POP SWAP2 SWAP1 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 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 PUSH2 0xD94 DUP2 PUSH2 0xC4C JUMP JUMPDEST DUP2 EQ PUSH2 0xD9F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0xDAB DUP2 PUSH2 0xC56 JUMP JUMPDEST DUP2 EQ PUSH2 0xDB6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x25 0xE4 0xC9 0xEC LOG2 DUP11 0xF8 0x1E 0xEB AND 0xCF 0xBB CODESIZE ORIGIN CALLDATALOAD 0x5E 0x24 0xC6 0x4C PUSH31 0xAE221A5034159A671D61281464736F6C634300080400336080604052348015 PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x182 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x36 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x40D83B24 EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0x4B2BD7E9 EQ PUSH2 0x45 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x43 PUSH2 0x4F JUMP JUMPDEST STOP JUMPDEST PUSH2 0x4D PUSH2 0x81 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xFF05E87500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP2 SLOAD DUP1 SWAP3 SWAP2 SWAP1 PUSH2 0x93 SWAP1 PUSH2 0xD4 JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE POP PUSH1 0x40 MLOAD PUSH32 0xFF05E87500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xDF DUP3 PUSH2 0xCA JUMP JUMPDEST SWAP2 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 EQ ISZERO PUSH2 0x112 JUMPI PUSH2 0x111 PUSH2 0x11D JUMP JUMPDEST JUMPDEST PUSH1 0x1 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 XOR DUP12 COINBASE OR 0xD3 0xC1 RETURN 0x5F 0x2F 0xCB SELFDESTRUCT PUSH32 0xBF51EE28F08C8ABD18E3796CCD1D2FBC8C862E3F64736F6C6343000804003300 ","sourceMap":"65:2709:2:-:0;;;465:73;;;;;;;;;;504:29;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;486:15;;:47;;;;;;;;;;;;;;;;;;65:2709;;;;;;;;;;:::o;:::-;;;;;;;"},"deployedBytecode":{"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:8290:4","statements":[{"body":{"nodeType":"YulBlock","src":"91:261:4","statements":[{"nodeType":"YulAssignment","src":"101:75:4","value":{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"168:6:4"}],"functionName":{"name":"array_allocation_size_t_string_memory_ptr","nodeType":"YulIdentifier","src":"126:41:4"},"nodeType":"YulFunctionCall","src":"126:49:4"}],"functionName":{"name":"allocate_memory","nodeType":"YulIdentifier","src":"110:15:4"},"nodeType":"YulFunctionCall","src":"110:66:4"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"101:5:4"}]},{"expression":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"192:5:4"},{"name":"length","nodeType":"YulIdentifier","src":"199:6:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"185:6:4"},"nodeType":"YulFunctionCall","src":"185:21:4"},"nodeType":"YulExpressionStatement","src":"185:21:4"},{"nodeType":"YulVariableDeclaration","src":"215:27:4","value":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"230:5:4"},{"kind":"number","nodeType":"YulLiteral","src":"237:4:4","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"226:3:4"},"nodeType":"YulFunctionCall","src":"226:16:4"},"variables":[{"name":"dst","nodeType":"YulTypedName","src":"219:3:4","type":""}]},{"body":{"nodeType":"YulBlock","src":"280:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"289:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"292:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"282:6:4"},"nodeType":"YulFunctionCall","src":"282:12:4"},"nodeType":"YulExpressionStatement","src":"282:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"261:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"266:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"257:3:4"},"nodeType":"YulFunctionCall","src":"257:16:4"},{"name":"end","nodeType":"YulIdentifier","src":"275:3:4"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"254:2:4"},"nodeType":"YulFunctionCall","src":"254:25:4"},"nodeType":"YulIf","src":"251:2:4"},{"expression":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"329:3:4"},{"name":"dst","nodeType":"YulIdentifier","src":"334:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"339:6:4"}],"functionName":{"name":"copy_calldata_to_memory","nodeType":"YulIdentifier","src":"305:23:4"},"nodeType":"YulFunctionCall","src":"305:41:4"},"nodeType":"YulExpressionStatement","src":"305:41:4"}]},"name":"abi_decode_available_length_t_string_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"64:3:4","type":""},{"name":"length","nodeType":"YulTypedName","src":"69:6:4","type":""},{"name":"end","nodeType":"YulTypedName","src":"77:3:4","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"85:5:4","type":""}],"src":"7:345:4"},{"body":{"nodeType":"YulBlock","src":"409:86:4","statements":[{"nodeType":"YulAssignment","src":"419:29:4","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"441:6:4"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"428:12:4"},"nodeType":"YulFunctionCall","src":"428:20:4"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"419:5:4"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"483:5:4"}],"functionName":{"name":"validator_revert_t_int256","nodeType":"YulIdentifier","src":"457:25:4"},"nodeType":"YulFunctionCall","src":"457:32:4"},"nodeType":"YulExpressionStatement","src":"457:32:4"}]},"name":"abi_decode_t_int256","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"387:6:4","type":""},{"name":"end","nodeType":"YulTypedName","src":"395:3:4","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"403:5:4","type":""}],"src":"358:137:4"},{"body":{"nodeType":"YulBlock","src":"577:211:4","statements":[{"body":{"nodeType":"YulBlock","src":"626:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"635:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"638:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"628:6:4"},"nodeType":"YulFunctionCall","src":"628:12:4"},"nodeType":"YulExpressionStatement","src":"628:12:4"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"605:6:4"},{"kind":"number","nodeType":"YulLiteral","src":"613:4:4","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"601:3:4"},"nodeType":"YulFunctionCall","src":"601:17:4"},{"name":"end","nodeType":"YulIdentifier","src":"620:3:4"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"597:3:4"},"nodeType":"YulFunctionCall","src":"597:27:4"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"590:6:4"},"nodeType":"YulFunctionCall","src":"590:35:4"},"nodeType":"YulIf","src":"587:2:4"},{"nodeType":"YulVariableDeclaration","src":"651:34:4","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"678:6:4"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"665:12:4"},"nodeType":"YulFunctionCall","src":"665:20:4"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"655:6:4","type":""}]},{"nodeType":"YulAssignment","src":"694:88:4","value":{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"755:6:4"},{"kind":"number","nodeType":"YulLiteral","src":"763:4:4","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"751:3:4"},"nodeType":"YulFunctionCall","src":"751:17:4"},{"name":"length","nodeType":"YulIdentifier","src":"770:6:4"},{"name":"end","nodeType":"YulIdentifier","src":"778:3:4"}],"functionName":{"name":"abi_decode_available_length_t_string_memory_ptr","nodeType":"YulIdentifier","src":"703:47:4"},"nodeType":"YulFunctionCall","src":"703:79:4"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"694:5:4"}]}]},"name":"abi_decode_t_string_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"555:6:4","type":""},{"name":"end","nodeType":"YulTypedName","src":"563:3:4","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"571:5:4","type":""}],"src":"515:273:4"},{"body":{"nodeType":"YulBlock","src":"846:87:4","statements":[{"nodeType":"YulAssignment","src":"856:29:4","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"878:6:4"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"865:12:4"},"nodeType":"YulFunctionCall","src":"865:20:4"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"856:5:4"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"921:5:4"}],"functionName":{"name":"validator_revert_t_uint256","nodeType":"YulIdentifier","src":"894:26:4"},"nodeType":"YulFunctionCall","src":"894:33:4"},"nodeType":"YulExpressionStatement","src":"894:33:4"}]},"name":"abi_decode_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"824:6:4","type":""},{"name":"end","nodeType":"YulTypedName","src":"832:3:4","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"840:5:4","type":""}],"src":"794:139:4"},{"body":{"nodeType":"YulBlock","src":"1004:195:4","statements":[{"body":{"nodeType":"YulBlock","src":"1050:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1059:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1062:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1052:6:4"},"nodeType":"YulFunctionCall","src":"1052:12:4"},"nodeType":"YulExpressionStatement","src":"1052:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1025:7:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"1034:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1021:3:4"},"nodeType":"YulFunctionCall","src":"1021:23:4"},{"kind":"number","nodeType":"YulLiteral","src":"1046:2:4","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1017:3:4"},"nodeType":"YulFunctionCall","src":"1017:32:4"},"nodeType":"YulIf","src":"1014:2:4"},{"nodeType":"YulBlock","src":"1076:116:4","statements":[{"nodeType":"YulVariableDeclaration","src":"1091:15:4","value":{"kind":"number","nodeType":"YulLiteral","src":"1105:1:4","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1095:6:4","type":""}]},{"nodeType":"YulAssignment","src":"1120:62:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1154:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"1165:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1150:3:4"},"nodeType":"YulFunctionCall","src":"1150:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1174:7:4"}],"functionName":{"name":"abi_decode_t_int256","nodeType":"YulIdentifier","src":"1130:19:4"},"nodeType":"YulFunctionCall","src":"1130:52:4"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1120:6:4"}]}]}]},"name":"abi_decode_tuple_t_int256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"974:9:4","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"985:7:4","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"997:6:4","type":""}],"src":"939:260:4"},{"body":{"nodeType":"YulBlock","src":"1281:299:4","statements":[{"body":{"nodeType":"YulBlock","src":"1327:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1336:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1339:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1329:6:4"},"nodeType":"YulFunctionCall","src":"1329:12:4"},"nodeType":"YulExpressionStatement","src":"1329:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1302:7:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"1311:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1298:3:4"},"nodeType":"YulFunctionCall","src":"1298:23:4"},{"kind":"number","nodeType":"YulLiteral","src":"1323:2:4","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1294:3:4"},"nodeType":"YulFunctionCall","src":"1294:32:4"},"nodeType":"YulIf","src":"1291:2:4"},{"nodeType":"YulBlock","src":"1353:220:4","statements":[{"nodeType":"YulVariableDeclaration","src":"1368:45:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1399:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"1410:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1395:3:4"},"nodeType":"YulFunctionCall","src":"1395:17:4"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1382:12:4"},"nodeType":"YulFunctionCall","src":"1382:31:4"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1372:6:4","type":""}]},{"body":{"nodeType":"YulBlock","src":"1460:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1469:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1472:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1462:6:4"},"nodeType":"YulFunctionCall","src":"1462:12:4"},"nodeType":"YulExpressionStatement","src":"1462:12:4"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1432:6:4"},{"kind":"number","nodeType":"YulLiteral","src":"1440:18:4","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1429:2:4"},"nodeType":"YulFunctionCall","src":"1429:30:4"},"nodeType":"YulIf","src":"1426:2:4"},{"nodeType":"YulAssignment","src":"1490:73:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1535:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"1546:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1531:3:4"},"nodeType":"YulFunctionCall","src":"1531:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1555:7:4"}],"functionName":{"name":"abi_decode_t_string_memory_ptr","nodeType":"YulIdentifier","src":"1500:30:4"},"nodeType":"YulFunctionCall","src":"1500:63:4"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1490:6:4"}]}]}]},"name":"abi_decode_tuple_t_string_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1251:9:4","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1262:7:4","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1274:6:4","type":""}],"src":"1205:375:4"},{"body":{"nodeType":"YulBlock","src":"1652:196:4","statements":[{"body":{"nodeType":"YulBlock","src":"1698:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1707:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1710:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1700:6:4"},"nodeType":"YulFunctionCall","src":"1700:12:4"},"nodeType":"YulExpressionStatement","src":"1700:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1673:7:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"1682:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1669:3:4"},"nodeType":"YulFunctionCall","src":"1669:23:4"},{"kind":"number","nodeType":"YulLiteral","src":"1694:2:4","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1665:3:4"},"nodeType":"YulFunctionCall","src":"1665:32:4"},"nodeType":"YulIf","src":"1662:2:4"},{"nodeType":"YulBlock","src":"1724:117:4","statements":[{"nodeType":"YulVariableDeclaration","src":"1739:15:4","value":{"kind":"number","nodeType":"YulLiteral","src":"1753:1:4","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1743:6:4","type":""}]},{"nodeType":"YulAssignment","src":"1768:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1803:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"1814:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1799:3:4"},"nodeType":"YulFunctionCall","src":"1799:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1823:7:4"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"1778:20:4"},"nodeType":"YulFunctionCall","src":"1778:53:4"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1768:6:4"}]}]}]},"name":"abi_decode_tuple_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1622:9:4","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1633:7:4","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1645:6:4","type":""}],"src":"1586:262:4"},{"body":{"nodeType":"YulBlock","src":"1947:427:4","statements":[{"body":{"nodeType":"YulBlock","src":"1993:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2002:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2005:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1995:6:4"},"nodeType":"YulFunctionCall","src":"1995:12:4"},"nodeType":"YulExpressionStatement","src":"1995:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1968:7:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"1977:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1964:3:4"},"nodeType":"YulFunctionCall","src":"1964:23:4"},{"kind":"number","nodeType":"YulLiteral","src":"1989:2:4","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1960:3:4"},"nodeType":"YulFunctionCall","src":"1960:32:4"},"nodeType":"YulIf","src":"1957:2:4"},{"nodeType":"YulBlock","src":"2019:117:4","statements":[{"nodeType":"YulVariableDeclaration","src":"2034:15:4","value":{"kind":"number","nodeType":"YulLiteral","src":"2048:1:4","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"2038:6:4","type":""}]},{"nodeType":"YulAssignment","src":"2063:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2098:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"2109:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2094:3:4"},"nodeType":"YulFunctionCall","src":"2094:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2118:7:4"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"2073:20:4"},"nodeType":"YulFunctionCall","src":"2073:53:4"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2063:6:4"}]}]},{"nodeType":"YulBlock","src":"2146:221:4","statements":[{"nodeType":"YulVariableDeclaration","src":"2161:46:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2192:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"2203:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2188:3:4"},"nodeType":"YulFunctionCall","src":"2188:18:4"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2175:12:4"},"nodeType":"YulFunctionCall","src":"2175:32:4"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"2165:6:4","type":""}]},{"body":{"nodeType":"YulBlock","src":"2254:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2263:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2266:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2256:6:4"},"nodeType":"YulFunctionCall","src":"2256:12:4"},"nodeType":"YulExpressionStatement","src":"2256:12:4"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"2226:6:4"},{"kind":"number","nodeType":"YulLiteral","src":"2234:18:4","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2223:2:4"},"nodeType":"YulFunctionCall","src":"2223:30:4"},"nodeType":"YulIf","src":"2220:2:4"},{"nodeType":"YulAssignment","src":"2284:73:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2329:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"2340:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2325:3:4"},"nodeType":"YulFunctionCall","src":"2325:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2349:7:4"}],"functionName":{"name":"abi_decode_t_string_memory_ptr","nodeType":"YulIdentifier","src":"2294:30:4"},"nodeType":"YulFunctionCall","src":"2294:63:4"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"2284:6:4"}]}]}]},"name":"abi_decode_tuple_t_uint256t_string_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1909:9:4","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1920:7:4","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1932:6:4","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1940:6:4","type":""}],"src":"1854:520:4"},{"body":{"nodeType":"YulBlock","src":"2463:324:4","statements":[{"body":{"nodeType":"YulBlock","src":"2509:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2518:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2521:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2511:6:4"},"nodeType":"YulFunctionCall","src":"2511:12:4"},"nodeType":"YulExpressionStatement","src":"2511:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2484:7:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"2493:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2480:3:4"},"nodeType":"YulFunctionCall","src":"2480:23:4"},{"kind":"number","nodeType":"YulLiteral","src":"2505:2:4","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2476:3:4"},"nodeType":"YulFunctionCall","src":"2476:32:4"},"nodeType":"YulIf","src":"2473:2:4"},{"nodeType":"YulBlock","src":"2535:117:4","statements":[{"nodeType":"YulVariableDeclaration","src":"2550:15:4","value":{"kind":"number","nodeType":"YulLiteral","src":"2564:1:4","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"2554:6:4","type":""}]},{"nodeType":"YulAssignment","src":"2579:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2614:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"2625:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2610:3:4"},"nodeType":"YulFunctionCall","src":"2610:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2634:7:4"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"2589:20:4"},"nodeType":"YulFunctionCall","src":"2589:53:4"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2579:6:4"}]}]},{"nodeType":"YulBlock","src":"2662:118:4","statements":[{"nodeType":"YulVariableDeclaration","src":"2677:16:4","value":{"kind":"number","nodeType":"YulLiteral","src":"2691:2:4","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"2681:6:4","type":""}]},{"nodeType":"YulAssignment","src":"2707:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2742:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"2753:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2738:3:4"},"nodeType":"YulFunctionCall","src":"2738:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2762:7:4"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"2717:20:4"},"nodeType":"YulFunctionCall","src":"2717:53:4"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"2707:6:4"}]}]}]},"name":"abi_decode_tuple_t_uint256t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2425:9:4","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2436:7:4","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2448:6:4","type":""},{"name":"value1","nodeType":"YulTypedName","src":"2456:6:4","type":""}],"src":"2380:407:4"},{"body":{"nodeType":"YulBlock","src":"2856:52:4","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2873:3:4"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2895:5:4"}],"functionName":{"name":"cleanup_t_int256","nodeType":"YulIdentifier","src":"2878:16:4"},"nodeType":"YulFunctionCall","src":"2878:23:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2866:6:4"},"nodeType":"YulFunctionCall","src":"2866:36:4"},"nodeType":"YulExpressionStatement","src":"2866:36:4"}]},"name":"abi_encode_t_int256_to_t_int256_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"2844:5:4","type":""},{"name":"pos","nodeType":"YulTypedName","src":"2851:3:4","type":""}],"src":"2793:115:4"},{"body":{"nodeType":"YulBlock","src":"3006:272:4","statements":[{"nodeType":"YulVariableDeclaration","src":"3016:53:4","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3063:5:4"}],"functionName":{"name":"array_length_t_string_memory_ptr","nodeType":"YulIdentifier","src":"3030:32:4"},"nodeType":"YulFunctionCall","src":"3030:39:4"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"3020:6:4","type":""}]},{"nodeType":"YulAssignment","src":"3078:78:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3144:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"3149:6:4"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"3085:58:4"},"nodeType":"YulFunctionCall","src":"3085:71:4"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"3078:3:4"}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3191:5:4"},{"kind":"number","nodeType":"YulLiteral","src":"3198:4:4","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3187:3:4"},"nodeType":"YulFunctionCall","src":"3187:16:4"},{"name":"pos","nodeType":"YulIdentifier","src":"3205:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"3210:6:4"}],"functionName":{"name":"copy_memory_to_memory","nodeType":"YulIdentifier","src":"3165:21:4"},"nodeType":"YulFunctionCall","src":"3165:52:4"},"nodeType":"YulExpressionStatement","src":"3165:52:4"},{"nodeType":"YulAssignment","src":"3226:46:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3237:3:4"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"3264:6:4"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"3242:21:4"},"nodeType":"YulFunctionCall","src":"3242:29:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3233:3:4"},"nodeType":"YulFunctionCall","src":"3233:39:4"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"3226:3:4"}]}]},"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"2987:5:4","type":""},{"name":"pos","nodeType":"YulTypedName","src":"2994:3:4","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"3002:3:4","type":""}],"src":"2914:364:4"},{"body":{"nodeType":"YulBlock","src":"3444:385:4","statements":[{"nodeType":"YulVariableDeclaration","src":"3454:26:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3470:3:4"},{"kind":"number","nodeType":"YulLiteral","src":"3475:4:4","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3466:3:4"},"nodeType":"YulFunctionCall","src":"3466:14:4"},"variables":[{"name":"tail","nodeType":"YulTypedName","src":"3458:4:4","type":""}]},{"nodeType":"YulBlock","src":"3490:161:4","statements":[{"nodeType":"YulVariableDeclaration","src":"3522:43:4","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3552:5:4"},{"kind":"number","nodeType":"YulLiteral","src":"3559:4:4","type":"","value":"0x00"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3548:3:4"},"nodeType":"YulFunctionCall","src":"3548:16:4"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3542:5:4"},"nodeType":"YulFunctionCall","src":"3542:23:4"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"3526:12:4","type":""}]},{"expression":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"3612:12:4"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3630:3:4"},{"kind":"number","nodeType":"YulLiteral","src":"3635:4:4","type":"","value":"0x00"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3626:3:4"},"nodeType":"YulFunctionCall","src":"3626:14:4"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256","nodeType":"YulIdentifier","src":"3578:33:4"},"nodeType":"YulFunctionCall","src":"3578:63:4"},"nodeType":"YulExpressionStatement","src":"3578:63:4"}]},{"nodeType":"YulBlock","src":"3661:161:4","statements":[{"nodeType":"YulVariableDeclaration","src":"3693:43:4","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3723:5:4"},{"kind":"number","nodeType":"YulLiteral","src":"3730:4:4","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3719:3:4"},"nodeType":"YulFunctionCall","src":"3719:16:4"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3713:5:4"},"nodeType":"YulFunctionCall","src":"3713:23:4"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"3697:12:4","type":""}]},{"expression":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"3783:12:4"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3801:3:4"},{"kind":"number","nodeType":"YulLiteral","src":"3806:4:4","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3797:3:4"},"nodeType":"YulFunctionCall","src":"3797:14:4"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256","nodeType":"YulIdentifier","src":"3749:33:4"},"nodeType":"YulFunctionCall","src":"3749:63:4"},"nodeType":"YulExpressionStatement","src":"3749:63:4"}]}]},"name":"abi_encode_t_struct$_Pair_$412_memory_ptr_to_t_struct$_Pair_$412_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"3431:5:4","type":""},{"name":"pos","nodeType":"YulTypedName","src":"3438:3:4","type":""}],"src":"3336:493:4"},{"body":{"nodeType":"YulBlock","src":"3890:53:4","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3907:3:4"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3930:5:4"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"3912:17:4"},"nodeType":"YulFunctionCall","src":"3912:24:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3900:6:4"},"nodeType":"YulFunctionCall","src":"3900:37:4"},"nodeType":"YulExpressionStatement","src":"3900:37:4"}]},"name":"abi_encode_t_uint256_to_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"3878:5:4","type":""},{"name":"pos","nodeType":"YulTypedName","src":"3885:3:4","type":""}],"src":"3835:108:4"},{"body":{"nodeType":"YulBlock","src":"4014:53:4","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4031:3:4"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4054:5:4"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"4036:17:4"},"nodeType":"YulFunctionCall","src":"4036:24:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4024:6:4"},"nodeType":"YulFunctionCall","src":"4024:37:4"},"nodeType":"YulExpressionStatement","src":"4024:37:4"}]},"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"4002:5:4","type":""},{"name":"pos","nodeType":"YulTypedName","src":"4009:3:4","type":""}],"src":"3949:118:4"},{"body":{"nodeType":"YulBlock","src":"4169:122:4","statements":[{"nodeType":"YulAssignment","src":"4179:26:4","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4191:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"4202:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4187:3:4"},"nodeType":"YulFunctionCall","src":"4187:18:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4179:4:4"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4257:6:4"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4270:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"4281:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4266:3:4"},"nodeType":"YulFunctionCall","src":"4266:17:4"}],"functionName":{"name":"abi_encode_t_int256_to_t_int256_fromStack","nodeType":"YulIdentifier","src":"4215:41:4"},"nodeType":"YulFunctionCall","src":"4215:69:4"},"nodeType":"YulExpressionStatement","src":"4215:69:4"}]},"name":"abi_encode_tuple_t_int256__to_t_int256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4141:9:4","type":""},{"name":"value0","nodeType":"YulTypedName","src":"4153:6:4","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4164:4:4","type":""}],"src":"4073:218:4"},{"body":{"nodeType":"YulBlock","src":"4415:195:4","statements":[{"nodeType":"YulAssignment","src":"4425:26:4","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4437:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"4448:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4433:3:4"},"nodeType":"YulFunctionCall","src":"4433:18:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4425:4:4"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4472:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"4483:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4468:3:4"},"nodeType":"YulFunctionCall","src":"4468:17:4"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"4491:4:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"4497:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4487:3:4"},"nodeType":"YulFunctionCall","src":"4487:20:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4461:6:4"},"nodeType":"YulFunctionCall","src":"4461:47:4"},"nodeType":"YulExpressionStatement","src":"4461:47:4"},{"nodeType":"YulAssignment","src":"4517:86:4","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4589:6:4"},{"name":"tail","nodeType":"YulIdentifier","src":"4598:4:4"}],"functionName":{"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"4525:63:4"},"nodeType":"YulFunctionCall","src":"4525:78:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4517:4:4"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4387:9:4","type":""},{"name":"value0","nodeType":"YulTypedName","src":"4399:6:4","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4410:4:4","type":""}],"src":"4297:313:4"},{"body":{"nodeType":"YulBlock","src":"4756:166:4","statements":[{"nodeType":"YulAssignment","src":"4766:26:4","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4778:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"4789:2:4","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4774:3:4"},"nodeType":"YulFunctionCall","src":"4774:18:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4766:4:4"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4888:6:4"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4901:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"4912:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4897:3:4"},"nodeType":"YulFunctionCall","src":"4897:17:4"}],"functionName":{"name":"abi_encode_t_struct$_Pair_$412_memory_ptr_to_t_struct$_Pair_$412_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"4802:85:4"},"nodeType":"YulFunctionCall","src":"4802:113:4"},"nodeType":"YulExpressionStatement","src":"4802:113:4"}]},"name":"abi_encode_tuple_t_struct$_Pair_$412_memory_ptr__to_t_struct$_Pair_$412_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4728:9:4","type":""},{"name":"value0","nodeType":"YulTypedName","src":"4740:6:4","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4751:4:4","type":""}],"src":"4616:306:4"},{"body":{"nodeType":"YulBlock","src":"5026:124:4","statements":[{"nodeType":"YulAssignment","src":"5036:26:4","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5048:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"5059:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5044:3:4"},"nodeType":"YulFunctionCall","src":"5044:18:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5036:4:4"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5116:6:4"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5129:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"5140:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5125:3:4"},"nodeType":"YulFunctionCall","src":"5125:17:4"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"5072:43:4"},"nodeType":"YulFunctionCall","src":"5072:71:4"},"nodeType":"YulExpressionStatement","src":"5072:71:4"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4998:9:4","type":""},{"name":"value0","nodeType":"YulTypedName","src":"5010:6:4","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5021:4:4","type":""}],"src":"4928:222:4"},{"body":{"nodeType":"YulBlock","src":"5302:277:4","statements":[{"nodeType":"YulAssignment","src":"5312:26:4","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5324:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"5335:2:4","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5320:3:4"},"nodeType":"YulFunctionCall","src":"5320:18:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5312:4:4"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5392:6:4"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5405:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"5416:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5401:3:4"},"nodeType":"YulFunctionCall","src":"5401:17:4"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"5348:43:4"},"nodeType":"YulFunctionCall","src":"5348:71:4"},"nodeType":"YulExpressionStatement","src":"5348:71:4"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5440:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"5451:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5436:3:4"},"nodeType":"YulFunctionCall","src":"5436:18:4"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"5460:4:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"5466:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5456:3:4"},"nodeType":"YulFunctionCall","src":"5456:20:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5429:6:4"},"nodeType":"YulFunctionCall","src":"5429:48:4"},"nodeType":"YulExpressionStatement","src":"5429:48:4"},{"nodeType":"YulAssignment","src":"5486:86:4","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"5558:6:4"},{"name":"tail","nodeType":"YulIdentifier","src":"5567:4:4"}],"functionName":{"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"5494:63:4"},"nodeType":"YulFunctionCall","src":"5494:78:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5486:4:4"}]}]},"name":"abi_encode_tuple_t_uint256_t_string_memory_ptr__to_t_uint256_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5266:9:4","type":""},{"name":"value1","nodeType":"YulTypedName","src":"5278:6:4","type":""},{"name":"value0","nodeType":"YulTypedName","src":"5286:6:4","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5297:4:4","type":""}],"src":"5156:423:4"},{"body":{"nodeType":"YulBlock","src":"5626:88:4","statements":[{"nodeType":"YulAssignment","src":"5636:30:4","value":{"arguments":[],"functionName":{"name":"allocate_unbounded","nodeType":"YulIdentifier","src":"5646:18:4"},"nodeType":"YulFunctionCall","src":"5646:20:4"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"5636:6:4"}]},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"5695:6:4"},{"name":"size","nodeType":"YulIdentifier","src":"5703:4:4"}],"functionName":{"name":"finalize_allocation","nodeType":"YulIdentifier","src":"5675:19:4"},"nodeType":"YulFunctionCall","src":"5675:33:4"},"nodeType":"YulExpressionStatement","src":"5675:33:4"}]},"name":"allocate_memory","nodeType":"YulFunctionDefinition","parameters":[{"name":"size","nodeType":"YulTypedName","src":"5610:4:4","type":""}],"returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"5619:6:4","type":""}],"src":"5585:129:4"},{"body":{"nodeType":"YulBlock","src":"5760:35:4","statements":[{"nodeType":"YulAssignment","src":"5770:19:4","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5786:2:4","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5780:5:4"},"nodeType":"YulFunctionCall","src":"5780:9:4"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"5770:6:4"}]}]},"name":"allocate_unbounded","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"5753:6:4","type":""}],"src":"5720:75:4"},{"body":{"nodeType":"YulBlock","src":"5868:241:4","statements":[{"body":{"nodeType":"YulBlock","src":"5973:22:4","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"5975:16:4"},"nodeType":"YulFunctionCall","src":"5975:18:4"},"nodeType":"YulExpressionStatement","src":"5975:18:4"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"5945:6:4"},{"kind":"number","nodeType":"YulLiteral","src":"5953:18:4","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5942:2:4"},"nodeType":"YulFunctionCall","src":"5942:30:4"},"nodeType":"YulIf","src":"5939:2:4"},{"nodeType":"YulAssignment","src":"6005:37:4","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"6035:6:4"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"6013:21:4"},"nodeType":"YulFunctionCall","src":"6013:29:4"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"6005:4:4"}]},{"nodeType":"YulAssignment","src":"6079:23:4","value":{"arguments":[{"name":"size","nodeType":"YulIdentifier","src":"6091:4:4"},{"kind":"number","nodeType":"YulLiteral","src":"6097:4:4","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6087:3:4"},"nodeType":"YulFunctionCall","src":"6087:15:4"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"6079:4:4"}]}]},"name":"array_allocation_size_t_string_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"length","nodeType":"YulTypedName","src":"5852:6:4","type":""}],"returnVariables":[{"name":"size","nodeType":"YulTypedName","src":"5863:4:4","type":""}],"src":"5801:308:4"},{"body":{"nodeType":"YulBlock","src":"6174:40:4","statements":[{"nodeType":"YulAssignment","src":"6185:22:4","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6201:5:4"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6195:5:4"},"nodeType":"YulFunctionCall","src":"6195:12:4"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"6185:6:4"}]}]},"name":"array_length_t_string_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"6157:5:4","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"6167:6:4","type":""}],"src":"6115:99:4"},{"body":{"nodeType":"YulBlock","src":"6316:73:4","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6333:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"6338:6:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6326:6:4"},"nodeType":"YulFunctionCall","src":"6326:19:4"},"nodeType":"YulExpressionStatement","src":"6326:19:4"},{"nodeType":"YulAssignment","src":"6354:29:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6373:3:4"},{"kind":"number","nodeType":"YulLiteral","src":"6378:4:4","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6369:3:4"},"nodeType":"YulFunctionCall","src":"6369:14:4"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"6354:11:4"}]}]},"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"6288:3:4","type":""},{"name":"length","nodeType":"YulTypedName","src":"6293:6:4","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"6304:11:4","type":""}],"src":"6220:169:4"},{"body":{"nodeType":"YulBlock","src":"6439:32:4","statements":[{"nodeType":"YulAssignment","src":"6449:16:4","value":{"name":"value","nodeType":"YulIdentifier","src":"6460:5:4"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"6449:7:4"}]}]},"name":"cleanup_t_int256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"6421:5:4","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"6431:7:4","type":""}],"src":"6395:76:4"},{"body":{"nodeType":"YulBlock","src":"6522:32:4","statements":[{"nodeType":"YulAssignment","src":"6532:16:4","value":{"name":"value","nodeType":"YulIdentifier","src":"6543:5:4"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"6532:7:4"}]}]},"name":"cleanup_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"6504:5:4","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"6514:7:4","type":""}],"src":"6477:77:4"},{"body":{"nodeType":"YulBlock","src":"6611:103:4","statements":[{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"6634:3:4"},{"name":"src","nodeType":"YulIdentifier","src":"6639:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"6644:6:4"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"6621:12:4"},"nodeType":"YulFunctionCall","src":"6621:30:4"},"nodeType":"YulExpressionStatement","src":"6621:30:4"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"6692:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"6697:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6688:3:4"},"nodeType":"YulFunctionCall","src":"6688:16:4"},{"kind":"number","nodeType":"YulLiteral","src":"6706:1:4","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6681:6:4"},"nodeType":"YulFunctionCall","src":"6681:27:4"},"nodeType":"YulExpressionStatement","src":"6681:27:4"}]},"name":"copy_calldata_to_memory","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"6593:3:4","type":""},{"name":"dst","nodeType":"YulTypedName","src":"6598:3:4","type":""},{"name":"length","nodeType":"YulTypedName","src":"6603:6:4","type":""}],"src":"6560:154:4"},{"body":{"nodeType":"YulBlock","src":"6769:258:4","statements":[{"nodeType":"YulVariableDeclaration","src":"6779:10:4","value":{"kind":"number","nodeType":"YulLiteral","src":"6788:1:4","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"6783:1:4","type":""}]},{"body":{"nodeType":"YulBlock","src":"6848:63:4","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"6873:3:4"},{"name":"i","nodeType":"YulIdentifier","src":"6878:1:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6869:3:4"},"nodeType":"YulFunctionCall","src":"6869:11:4"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"6892:3:4"},{"name":"i","nodeType":"YulIdentifier","src":"6897:1:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6888:3:4"},"nodeType":"YulFunctionCall","src":"6888:11:4"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6882:5:4"},"nodeType":"YulFunctionCall","src":"6882:18:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6862:6:4"},"nodeType":"YulFunctionCall","src":"6862:39:4"},"nodeType":"YulExpressionStatement","src":"6862:39:4"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"6809:1:4"},{"name":"length","nodeType":"YulIdentifier","src":"6812:6:4"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"6806:2:4"},"nodeType":"YulFunctionCall","src":"6806:13:4"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"6820:19:4","statements":[{"nodeType":"YulAssignment","src":"6822:15:4","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"6831:1:4"},{"kind":"number","nodeType":"YulLiteral","src":"6834:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6827:3:4"},"nodeType":"YulFunctionCall","src":"6827:10:4"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"6822:1:4"}]}]},"pre":{"nodeType":"YulBlock","src":"6802:3:4","statements":[]},"src":"6798:113:4"},{"body":{"nodeType":"YulBlock","src":"6945:76:4","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"6995:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"7000:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6991:3:4"},"nodeType":"YulFunctionCall","src":"6991:16:4"},{"kind":"number","nodeType":"YulLiteral","src":"7009:1:4","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6984:6:4"},"nodeType":"YulFunctionCall","src":"6984:27:4"},"nodeType":"YulExpressionStatement","src":"6984:27:4"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"6926:1:4"},{"name":"length","nodeType":"YulIdentifier","src":"6929:6:4"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"6923:2:4"},"nodeType":"YulFunctionCall","src":"6923:13:4"},"nodeType":"YulIf","src":"6920:2:4"}]},"name":"copy_memory_to_memory","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"6751:3:4","type":""},{"name":"dst","nodeType":"YulTypedName","src":"6756:3:4","type":""},{"name":"length","nodeType":"YulTypedName","src":"6761:6:4","type":""}],"src":"6720:307:4"},{"body":{"nodeType":"YulBlock","src":"7076:238:4","statements":[{"nodeType":"YulVariableDeclaration","src":"7086:58:4","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7108:6:4"},{"arguments":[{"name":"size","nodeType":"YulIdentifier","src":"7138:4:4"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"7116:21:4"},"nodeType":"YulFunctionCall","src":"7116:27:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7104:3:4"},"nodeType":"YulFunctionCall","src":"7104:40:4"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"7090:10:4","type":""}]},{"body":{"nodeType":"YulBlock","src":"7255:22:4","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"7257:16:4"},"nodeType":"YulFunctionCall","src":"7257:18:4"},"nodeType":"YulExpressionStatement","src":"7257:18:4"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"7198:10:4"},{"kind":"number","nodeType":"YulLiteral","src":"7210:18:4","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"7195:2:4"},"nodeType":"YulFunctionCall","src":"7195:34:4"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"7234:10:4"},{"name":"memPtr","nodeType":"YulIdentifier","src":"7246:6:4"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"7231:2:4"},"nodeType":"YulFunctionCall","src":"7231:22:4"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"7192:2:4"},"nodeType":"YulFunctionCall","src":"7192:62:4"},"nodeType":"YulIf","src":"7189:2:4"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7293:2:4","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"7297:10:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7286:6:4"},"nodeType":"YulFunctionCall","src":"7286:22:4"},"nodeType":"YulExpressionStatement","src":"7286:22:4"}]},"name":"finalize_allocation","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"7062:6:4","type":""},{"name":"size","nodeType":"YulTypedName","src":"7070:4:4","type":""}],"src":"7033:281:4"},{"body":{"nodeType":"YulBlock","src":"7363:190:4","statements":[{"nodeType":"YulAssignment","src":"7373:33:4","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"7400:5:4"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"7382:17:4"},"nodeType":"YulFunctionCall","src":"7382:24:4"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"7373:5:4"}]},{"body":{"nodeType":"YulBlock","src":"7496:22:4","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"7498:16:4"},"nodeType":"YulFunctionCall","src":"7498:18:4"},"nodeType":"YulExpressionStatement","src":"7498:18:4"}]},"condition":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"7421:5:4"},{"kind":"number","nodeType":"YulLiteral","src":"7428:66:4","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"7418:2:4"},"nodeType":"YulFunctionCall","src":"7418:77:4"},"nodeType":"YulIf","src":"7415:2:4"},{"nodeType":"YulAssignment","src":"7527:20:4","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"7538:5:4"},{"kind":"number","nodeType":"YulLiteral","src":"7545:1:4","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7534:3:4"},"nodeType":"YulFunctionCall","src":"7534:13:4"},"variableNames":[{"name":"ret","nodeType":"YulIdentifier","src":"7527:3:4"}]}]},"name":"increment_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"7349:5:4","type":""}],"returnVariables":[{"name":"ret","nodeType":"YulTypedName","src":"7359:3:4","type":""}],"src":"7320:233:4"},{"body":{"nodeType":"YulBlock","src":"7587:152:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7604:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7607:77:4","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7597:6:4"},"nodeType":"YulFunctionCall","src":"7597:88:4"},"nodeType":"YulExpressionStatement","src":"7597:88:4"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7701:1:4","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"7704:4:4","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7694:6:4"},"nodeType":"YulFunctionCall","src":"7694:15:4"},"nodeType":"YulExpressionStatement","src":"7694:15:4"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7725:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7728:4:4","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7718:6:4"},"nodeType":"YulFunctionCall","src":"7718:15:4"},"nodeType":"YulExpressionStatement","src":"7718:15:4"}]},"name":"panic_error_0x11","nodeType":"YulFunctionDefinition","src":"7559:180:4"},{"body":{"nodeType":"YulBlock","src":"7773:152:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7790:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7793:77:4","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7783:6:4"},"nodeType":"YulFunctionCall","src":"7783:88:4"},"nodeType":"YulExpressionStatement","src":"7783:88:4"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7887:1:4","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"7890:4:4","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7880:6:4"},"nodeType":"YulFunctionCall","src":"7880:15:4"},"nodeType":"YulExpressionStatement","src":"7880:15:4"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7911:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7914:4:4","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7904:6:4"},"nodeType":"YulFunctionCall","src":"7904:15:4"},"nodeType":"YulExpressionStatement","src":"7904:15:4"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"7745:180:4"},{"body":{"nodeType":"YulBlock","src":"7979:54:4","statements":[{"nodeType":"YulAssignment","src":"7989:38:4","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8007:5:4"},{"kind":"number","nodeType":"YulLiteral","src":"8014:2:4","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8003:3:4"},"nodeType":"YulFunctionCall","src":"8003:14:4"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8023:2:4","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"8019:3:4"},"nodeType":"YulFunctionCall","src":"8019:7:4"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7999:3:4"},"nodeType":"YulFunctionCall","src":"7999:28:4"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"7989:6:4"}]}]},"name":"round_up_to_mul_of_32","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"7962:5:4","type":""}],"returnVariables":[{"name":"result","nodeType":"YulTypedName","src":"7972:6:4","type":""}],"src":"7931:102:4"},{"body":{"nodeType":"YulBlock","src":"8081:78:4","statements":[{"body":{"nodeType":"YulBlock","src":"8137:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8146:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8149:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8139:6:4"},"nodeType":"YulFunctionCall","src":"8139:12:4"},"nodeType":"YulExpressionStatement","src":"8139:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8104:5:4"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8128:5:4"}],"functionName":{"name":"cleanup_t_int256","nodeType":"YulIdentifier","src":"8111:16:4"},"nodeType":"YulFunctionCall","src":"8111:23:4"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"8101:2:4"},"nodeType":"YulFunctionCall","src":"8101:34:4"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"8094:6:4"},"nodeType":"YulFunctionCall","src":"8094:42:4"},"nodeType":"YulIf","src":"8091:2:4"}]},"name":"validator_revert_t_int256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"8074:5:4","type":""}],"src":"8039:120:4"},{"body":{"nodeType":"YulBlock","src":"8208:79:4","statements":[{"body":{"nodeType":"YulBlock","src":"8265:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8274:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8277:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8267:6:4"},"nodeType":"YulFunctionCall","src":"8267:12:4"},"nodeType":"YulExpressionStatement","src":"8267:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8231:5:4"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8256:5:4"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"8238:17:4"},"nodeType":"YulFunctionCall","src":"8238:24:4"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"8228:2:4"},"nodeType":"YulFunctionCall","src":"8228:35:4"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"8221:6:4"},"nodeType":"YulFunctionCall","src":"8221:43:4"},"nodeType":"YulIf","src":"8218:2:4"}]},"name":"validator_revert_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"8201:5:4","type":""}],"src":"8165:122:4"}]},"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_int256(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_int256(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_int256(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_int256(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_decode_tuple_t_uint256(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_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_uint256t_string_memory_ptr(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_uint256(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := calldataload(add(headStart, 32))\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n\n value1 := abi_decode_t_string_memory_ptr(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_uint256t_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_uint256(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_encode_t_int256_to_t_int256_fromStack(value, pos) {\n mstore(pos, cleanup_t_int256(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 // struct Matchers.Pair -> struct Matchers.Pair\n function abi_encode_t_struct$_Pair_$412_memory_ptr_to_t_struct$_Pair_$412_memory_ptr_fromStack(value, pos) {\n let tail := add(pos, 0x40)\n\n {\n // a\n\n let memberValue0 := mload(add(value, 0x00))\n abi_encode_t_uint256_to_t_uint256(memberValue0, add(pos, 0x00))\n }\n\n {\n // b\n\n let memberValue0 := mload(add(value, 0x20))\n abi_encode_t_uint256_to_t_uint256(memberValue0, add(pos, 0x20))\n }\n\n }\n\n function abi_encode_t_uint256_to_t_uint256(value, pos) {\n mstore(pos, cleanup_t_uint256(value))\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_int256__to_t_int256__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_int256_to_t_int256_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_struct$_Pair_$412_memory_ptr__to_t_struct$_Pair_$412_memory_ptr__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_struct$_Pair_$412_memory_ptr_to_t_struct$_Pair_$412_memory_ptr_fromStack(value0, add(headStart, 0))\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_string_memory_ptr__to_t_uint256_t_string_memory_ptr__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 mstore(add(headStart, 32), sub(tail, headStart))\n tail := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack(value1, tail)\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 cleanup_t_int256(value) -> cleaned {\n cleaned := value\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 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 increment_t_uint256(value) -> ret {\n value := cleanup_t_uint256(value)\n if eq(value, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) { panic_error_0x11() }\n ret := add(value, 1)\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_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 validator_revert_t_int256(value) {\n if iszero(eq(value, cleanup_t_int256(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":4,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106101425760003560e01c806373d2ea85116100b8578063aac014e01161007c578063aac014e01461028b578063b6bbe06114610295578063bad92aa91461029f578063e0a03812146102a9578063fe276a34146102c5578063ffb4746b146102e157610142565b806373d2ea851461022357806374afd4521461023f578063772f243a146102495780637c3cb0af146102535780638f9330301461026f57610142565b80634b5bbf6a1161010a5780634b5bbf6a146101c157806358a1d1ed146101cb5780635b94e31e146101d5578063622051f1146101df5780636f1fdc31146101e95780636fc588d21461020557610142565b80631b4f3f3d146101475780631f542cf3146101515780633ba4178b1461016d578063467e3d371461018957806347c56769146101a5575b600080fd5b61014f6102eb565b005b61016b60048036038101906101669190610a66565b61030f565b005b61018760048036038101906101829190610a12565b610360565b005b6101a3600480360381019061019e91906109a8565b61039f565b005b6101bf60048036038101906101ba919061097f565b6103e7565b005b6101c9610424565b005b6101d361046d565b005b6101dd61047a565b005b6101e76104b1565b005b61020360048036038101906101fe91906109a8565b610533565b005b61020d610592565b60405161021a9190610b8f565b60405180910390f35b61023d600480360381019061023891906109e9565b61059b565b005b6102476105ef565b005b610251610608565b005b61026d600480360381019061026891906109e9565b6106a3565b005b6102896004803603810190610284919061097f565b6106e0565b005b610293610734565b005b61029d610766565b005b6102a76107b4565b005b6102c360048036038101906102be9190610a66565b6107fd565b005b6102df60048036038101906102da9190610a12565b610865565b005b6102e96108bb565b005b6000808154809291906102fd90610cd3565b9190505550600061030d57600080fd5b565b6040518060400160405280838152602001828152506040517fdecab0e70000000000000000000000000000000000000000000000000000000081526004016103579190610b74565b60405180910390fd5b81816040517fa92ee8e3000000000000000000000000000000000000000000000000000000008152600401610396929190610baa565b60405180910390fd5b600081906103e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103da9190610b52565b60405180910390fd5b5050565b806040517fcdd7a0cc00000000000000000000000000000000000000000000000000000000815260040161041b9190610b37565b60405180910390fd5b60008081548092919061043690610cd3565b91905055506040517fd2c097a600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061047857600080fd5b565b60006104af577f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340d83b246040518163ffffffff1660e01b815260040160006040518083038186803b15801561051957600080fd5b505afa15801561052d573d6000803e3d6000fd5b50505050565b60008081548092919061054590610cd3565b91905055506000819061058e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105859190610b52565b60405180910390fd5b5050565b60008054905090565b6000808154809291906105ad90610cd3565b9190505550806040517f01f4d5d20000000000000000000000000000000000000000000000000000000081526004016105e69190610b8f565b60405180910390fd5b60008081548092919061060190610cd3565b9190505550565b60008081548092919061061a90610cd3565b9190505550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634b2bd7e96040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561068957600080fd5b505af115801561069d573d6000803e3d6000fd5b50505050565b806040517f01f4d5d20000000000000000000000000000000000000000000000000000000081526004016106d79190610b8f565b60405180910390fd5b6000808154809291906106f290610cd3565b9190505550806040517fcdd7a0cc00000000000000000000000000000000000000000000000000000000815260040161072b9190610b37565b60405180910390fd5b6040517fd2c097a600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008081548092919061077890610cd3565b919050555060006107b2577f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b565b6000808154809291906107c690610cd3565b91905055506040517f0bd3d39c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008081548092919061080f90610cd3565b91905055506040518060400160405280838152602001828152506040517fdecab0e700000000000000000000000000000000000000000000000000000000815260040161085c9190610b74565b60405180910390fd5b60008081548092919061087790610cd3565b919050555081816040517fa92ee8e30000000000000000000000000000000000000000000000000000000081526004016108b2929190610baa565b60405180910390fd5b6040517f0bd3d39c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006109006108fb84610bff565b610bda565b90508281526020810184848401111561091857600080fd5b610923848285610c60565b509392505050565b60008135905061093a81610d8b565b92915050565b600082601f83011261095157600080fd5b81356109618482602086016108ed565b91505092915050565b60008135905061097981610da2565b92915050565b60006020828403121561099157600080fd5b600061099f8482850161092b565b91505092915050565b6000602082840312156109ba57600080fd5b600082013567ffffffffffffffff8111156109d457600080fd5b6109e084828501610940565b91505092915050565b6000602082840312156109fb57600080fd5b6000610a098482850161096a565b91505092915050565b60008060408385031215610a2557600080fd5b6000610a338582860161096a565b925050602083013567ffffffffffffffff811115610a5057600080fd5b610a5c85828601610940565b9150509250929050565b60008060408385031215610a7957600080fd5b6000610a878582860161096a565b9250506020610a988582860161096a565b9150509250929050565b610aab81610c4c565b82525050565b6000610abc82610c30565b610ac68185610c3b565b9350610ad6818560208601610c6f565b610adf81610d7a565b840191505092915050565b604082016000820151610b006000850182610b19565b506020820151610b136020850182610b19565b50505050565b610b2281610c56565b82525050565b610b3181610c56565b82525050565b6000602082019050610b4c6000830184610aa2565b92915050565b60006020820190508181036000830152610b6c8184610ab1565b905092915050565b6000604082019050610b896000830184610aea565b92915050565b6000602082019050610ba46000830184610b28565b92915050565b6000604082019050610bbf6000830185610b28565b8181036020830152610bd18184610ab1565b90509392505050565b6000610be4610bf5565b9050610bf08282610ca2565b919050565b6000604051905090565b600067ffffffffffffffff821115610c1a57610c19610d4b565b5b610c2382610d7a565b9050602081019050919050565b600081519050919050565b600082825260208201905092915050565b6000819050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015610c8d578082015181840152602081019050610c72565b83811115610c9c576000848401525b50505050565b610cab82610d7a565b810181811067ffffffffffffffff82111715610cca57610cc9610d4b565b5b80604052505050565b6000610cde82610c56565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415610d1157610d10610d1c565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b610d9481610c4c565b8114610d9f57600080fd5b50565b610dab81610c56565b8114610db657600080fd5b5056fea264697066735822122025e4c9eca28af81eeb16cfbb3832355e24c64c7eae221a5034159a671d61281464736f6c63430008040033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x142 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x73D2EA85 GT PUSH2 0xB8 JUMPI DUP1 PUSH4 0xAAC014E0 GT PUSH2 0x7C JUMPI DUP1 PUSH4 0xAAC014E0 EQ PUSH2 0x28B JUMPI DUP1 PUSH4 0xB6BBE061 EQ PUSH2 0x295 JUMPI DUP1 PUSH4 0xBAD92AA9 EQ PUSH2 0x29F JUMPI DUP1 PUSH4 0xE0A03812 EQ PUSH2 0x2A9 JUMPI DUP1 PUSH4 0xFE276A34 EQ PUSH2 0x2C5 JUMPI DUP1 PUSH4 0xFFB4746B EQ PUSH2 0x2E1 JUMPI PUSH2 0x142 JUMP JUMPDEST DUP1 PUSH4 0x73D2EA85 EQ PUSH2 0x223 JUMPI DUP1 PUSH4 0x74AFD452 EQ PUSH2 0x23F JUMPI DUP1 PUSH4 0x772F243A EQ PUSH2 0x249 JUMPI DUP1 PUSH4 0x7C3CB0AF EQ PUSH2 0x253 JUMPI DUP1 PUSH4 0x8F933030 EQ PUSH2 0x26F JUMPI PUSH2 0x142 JUMP JUMPDEST DUP1 PUSH4 0x4B5BBF6A GT PUSH2 0x10A JUMPI DUP1 PUSH4 0x4B5BBF6A EQ PUSH2 0x1C1 JUMPI DUP1 PUSH4 0x58A1D1ED EQ PUSH2 0x1CB JUMPI DUP1 PUSH4 0x5B94E31E EQ PUSH2 0x1D5 JUMPI DUP1 PUSH4 0x622051F1 EQ PUSH2 0x1DF JUMPI DUP1 PUSH4 0x6F1FDC31 EQ PUSH2 0x1E9 JUMPI DUP1 PUSH4 0x6FC588D2 EQ PUSH2 0x205 JUMPI PUSH2 0x142 JUMP JUMPDEST DUP1 PUSH4 0x1B4F3F3D EQ PUSH2 0x147 JUMPI DUP1 PUSH4 0x1F542CF3 EQ PUSH2 0x151 JUMPI DUP1 PUSH4 0x3BA4178B EQ PUSH2 0x16D JUMPI DUP1 PUSH4 0x467E3D37 EQ PUSH2 0x189 JUMPI DUP1 PUSH4 0x47C56769 EQ PUSH2 0x1A5 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x14F PUSH2 0x2EB JUMP JUMPDEST STOP JUMPDEST PUSH2 0x16B PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x166 SWAP2 SWAP1 PUSH2 0xA66 JUMP JUMPDEST PUSH2 0x30F JUMP JUMPDEST STOP JUMPDEST PUSH2 0x187 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x182 SWAP2 SWAP1 PUSH2 0xA12 JUMP JUMPDEST PUSH2 0x360 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1A3 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x19E SWAP2 SWAP1 PUSH2 0x9A8 JUMP JUMPDEST PUSH2 0x39F JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1BF PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1BA SWAP2 SWAP1 PUSH2 0x97F JUMP JUMPDEST PUSH2 0x3E7 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1C9 PUSH2 0x424 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1D3 PUSH2 0x46D JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1DD PUSH2 0x47A JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1E7 PUSH2 0x4B1 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x203 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1FE SWAP2 SWAP1 PUSH2 0x9A8 JUMP JUMPDEST PUSH2 0x533 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x20D PUSH2 0x592 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x21A SWAP2 SWAP1 PUSH2 0xB8F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x23D PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x238 SWAP2 SWAP1 PUSH2 0x9E9 JUMP JUMPDEST PUSH2 0x59B JUMP JUMPDEST STOP JUMPDEST PUSH2 0x247 PUSH2 0x5EF JUMP JUMPDEST STOP JUMPDEST PUSH2 0x251 PUSH2 0x608 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x26D PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x268 SWAP2 SWAP1 PUSH2 0x9E9 JUMP JUMPDEST PUSH2 0x6A3 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x289 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x284 SWAP2 SWAP1 PUSH2 0x97F JUMP JUMPDEST PUSH2 0x6E0 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x293 PUSH2 0x734 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x29D PUSH2 0x766 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2A7 PUSH2 0x7B4 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2C3 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2BE SWAP2 SWAP1 PUSH2 0xA66 JUMP JUMPDEST PUSH2 0x7FD JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2DF PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2DA SWAP2 SWAP1 PUSH2 0xA12 JUMP JUMPDEST PUSH2 0x865 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2E9 PUSH2 0x8BB JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 DUP2 SLOAD DUP1 SWAP3 SWAP2 SWAP1 PUSH2 0x2FD SWAP1 PUSH2 0xCD3 JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE POP PUSH1 0x0 PUSH2 0x30D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE POP PUSH1 0x40 MLOAD PUSH32 0xDECAB0E700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x357 SWAP2 SWAP1 PUSH2 0xB74 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 DUP2 PUSH1 0x40 MLOAD PUSH32 0xA92EE8E300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x396 SWAP3 SWAP2 SWAP1 PUSH2 0xBAA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 SWAP1 PUSH2 0x3E3 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DA SWAP2 SWAP1 PUSH2 0xB52 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP JUMP JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH32 0xCDD7A0CC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x41B SWAP2 SWAP1 PUSH2 0xB37 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP2 SLOAD DUP1 SWAP3 SWAP2 SWAP1 PUSH2 0x436 SWAP1 PUSH2 0xCD3 JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE POP PUSH1 0x40 MLOAD PUSH32 0xD2C097A600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x478 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4AF JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x1 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x40D83B24 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x519 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x52D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP2 SLOAD DUP1 SWAP3 SWAP2 SWAP1 PUSH2 0x545 SWAP1 PUSH2 0xCD3 JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE POP PUSH1 0x0 DUP2 SWAP1 PUSH2 0x58E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x585 SWAP2 SWAP1 PUSH2 0xB52 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP2 SLOAD DUP1 SWAP3 SWAP2 SWAP1 PUSH2 0x5AD SWAP1 PUSH2 0xCD3 JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE POP DUP1 PUSH1 0x40 MLOAD PUSH32 0x1F4D5D200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5E6 SWAP2 SWAP1 PUSH2 0xB8F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP2 SLOAD DUP1 SWAP3 SWAP2 SWAP1 PUSH2 0x601 SWAP1 PUSH2 0xCD3 JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP2 SLOAD DUP1 SWAP3 SWAP2 SWAP1 PUSH2 0x61A SWAP1 PUSH2 0xCD3 JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE POP PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x4B2BD7E9 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x689 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x69D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMP JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH32 0x1F4D5D200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x6D7 SWAP2 SWAP1 PUSH2 0xB8F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP2 SLOAD DUP1 SWAP3 SWAP2 SWAP1 PUSH2 0x6F2 SWAP1 PUSH2 0xCD3 JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE POP DUP1 PUSH1 0x40 MLOAD PUSH32 0xCDD7A0CC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x72B SWAP2 SWAP1 PUSH2 0xB37 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xD2C097A600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP2 SLOAD DUP1 SWAP3 SWAP2 SWAP1 PUSH2 0x778 SWAP1 PUSH2 0xCD3 JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE POP PUSH1 0x0 PUSH2 0x7B2 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x1 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST JUMP JUMPDEST PUSH1 0x0 DUP1 DUP2 SLOAD DUP1 SWAP3 SWAP2 SWAP1 PUSH2 0x7C6 SWAP1 PUSH2 0xCD3 JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE POP PUSH1 0x40 MLOAD PUSH32 0xBD3D39C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP2 SLOAD DUP1 SWAP3 SWAP2 SWAP1 PUSH2 0x80F SWAP1 PUSH2 0xCD3 JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE POP PUSH1 0x40 MLOAD PUSH32 0xDECAB0E700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x85C SWAP2 SWAP1 PUSH2 0xB74 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP2 SLOAD DUP1 SWAP3 SWAP2 SWAP1 PUSH2 0x877 SWAP1 PUSH2 0xCD3 JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE POP DUP2 DUP2 PUSH1 0x40 MLOAD PUSH32 0xA92EE8E300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x8B2 SWAP3 SWAP2 SWAP1 PUSH2 0xBAA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xBD3D39C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x900 PUSH2 0x8FB DUP5 PUSH2 0xBFF JUMP JUMPDEST PUSH2 0xBDA JUMP JUMPDEST SWAP1 POP DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 DUP5 DUP5 ADD GT ISZERO PUSH2 0x918 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x923 DUP5 DUP3 DUP6 PUSH2 0xC60 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x93A DUP2 PUSH2 0xD8B JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x951 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x961 DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x8ED JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x979 DUP2 PUSH2 0xDA2 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x991 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x99F DUP5 DUP3 DUP6 ADD PUSH2 0x92B JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x9BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x9D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9E0 DUP5 DUP3 DUP6 ADD PUSH2 0x940 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x9FB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xA09 DUP5 DUP3 DUP6 ADD PUSH2 0x96A JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xA25 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xA33 DUP6 DUP3 DUP7 ADD PUSH2 0x96A JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xA50 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA5C DUP6 DUP3 DUP7 ADD PUSH2 0x940 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xA79 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xA87 DUP6 DUP3 DUP7 ADD PUSH2 0x96A JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0xA98 DUP6 DUP3 DUP7 ADD PUSH2 0x96A JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH2 0xAAB DUP2 PUSH2 0xC4C JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xABC DUP3 PUSH2 0xC30 JUMP JUMPDEST PUSH2 0xAC6 DUP2 DUP6 PUSH2 0xC3B JUMP JUMPDEST SWAP4 POP PUSH2 0xAD6 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0xC6F JUMP JUMPDEST PUSH2 0xADF DUP2 PUSH2 0xD7A JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP3 ADD PUSH1 0x0 DUP3 ADD MLOAD PUSH2 0xB00 PUSH1 0x0 DUP6 ADD DUP3 PUSH2 0xB19 JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0xB13 PUSH1 0x20 DUP6 ADD DUP3 PUSH2 0xB19 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0xB22 DUP2 PUSH2 0xC56 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0xB31 DUP2 PUSH2 0xC56 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xB4C PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xAA2 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 0xB6C DUP2 DUP5 PUSH2 0xAB1 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0xB89 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xAEA JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xBA4 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xB28 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0xBBF PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0xB28 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0xBD1 DUP2 DUP5 PUSH2 0xAB1 JUMP JUMPDEST SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xBE4 PUSH2 0xBF5 JUMP JUMPDEST SWAP1 POP PUSH2 0xBF0 DUP3 DUP3 PUSH2 0xCA2 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 0xC1A JUMPI PUSH2 0xC19 PUSH2 0xD4B JUMP JUMPDEST JUMPDEST PUSH2 0xC23 DUP3 PUSH2 0xD7A 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 DUP2 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 0xC8D JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0xC72 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0xC9C JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0xCAB DUP3 PUSH2 0xD7A JUMP JUMPDEST DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0xCCA JUMPI PUSH2 0xCC9 PUSH2 0xD4B JUMP JUMPDEST JUMPDEST DUP1 PUSH1 0x40 MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCDE DUP3 PUSH2 0xC56 JUMP JUMPDEST SWAP2 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 EQ ISZERO PUSH2 0xD11 JUMPI PUSH2 0xD10 PUSH2 0xD1C JUMP JUMPDEST JUMPDEST PUSH1 0x1 DUP3 ADD SWAP1 POP SWAP2 SWAP1 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 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 PUSH2 0xD94 DUP2 PUSH2 0xC4C JUMP JUMPDEST DUP2 EQ PUSH2 0xD9F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0xDAB DUP2 PUSH2 0xC56 JUMP JUMPDEST DUP2 EQ PUSH2 0xDB6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x25 0xE4 0xC9 0xEC LOG2 DUP11 0xF8 0x1E 0xEB AND 0xCF 0xBB CODESIZE ORIGIN CALLDATALOAD 0x5E 0x24 0xC6 0x4C PUSH31 0xAE221A5034159A671D61281464736F6C634300080400330000000000000000 ","sourceMap":"65:2709:2:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;888:73;;;:::i;:::-;;2652:120;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2383:141;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;792:92;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2134:100;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1360:94;;;:::i;:::-;;965:73;;;:::i;:::-;;1109:63;;;:::i;:::-;;1684:128;;;:::i;:::-;;696:92;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;622:70;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1816:103;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;542:76;;;:::i;:::-;;1556:124;;;:::i;:::-;;1923:103;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2030:100;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1458:94;;;:::i;:::-;;1042:63;;;:::i;:::-;;1176:88;;;:::i;:::-;;2528:120;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2238:141;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1268:88;;;:::i;:::-;;888:73;933:1;;:3;;;;;;;;;:::i;:::-;;;;;;950:5;942:14;;;;;;888:73::o;2652:120::-;2756:10;;;;;;;;2761:1;2756:10;;;;2764:1;2756:10;;;2736:31;;;;;;;;;;;:::i;:::-;;;;;;;;2383:141;2514:1;2517;2485:34;;;;;;;;;;;;:::i;:::-;;;;;;;;792:92;865:5;872:6;857:22;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;792:92;:::o;2134:100::-;2227:1;2208:21;;;;;;;;;;;:::i;:::-;;;;;;;;1360:94;1413:1;;:3;;;;;;;;;:::i;:::-;;;;;;1429:20;;;;;;;;;;;;;;965:73;1027:5;1019:14;;;;;;965:73::o;1109:63::-;1161:5;1154:13;;;;;;;;;;;;1109:63::o;1684:128::-;1754:15;;;;;;;;;;;:51;;;:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1684:128::o;696:92::-;752:1;;:3;;;;;;;;;:::i;:::-;;;;;;769:5;776:6;761:22;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;696:92;:::o;622:70::-;667:4;686:1;;679:8;;622:70;:::o;1816:103::-;1876:1;;:3;;;;;;;;;:::i;:::-;;;;;;1912:1;1892:22;;;;;;;;;;;:::i;:::-;;;;;;;;542:76;575:1;;:3;;;;;;;;;:::i;:::-;;;;;;542:76::o;1556:124::-;1617:1;;:3;;;;;;;;;:::i;:::-;;;;;;1626:15;;;;;;;;;;;:47;;;:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1556:124::o;1923:103::-;2019:1;1999:22;;;;;;;;;;;:::i;:::-;;;;;;;;2030:100;2088:1;;:3;;;;;;;;;:::i;:::-;;;;;;2123:1;2104:21;;;;;;;;;;;:::i;:::-;;;;;;;;1458:94;1527:20;;;;;;;;;;;;;;1042:63;1078:1;;:3;;;;;;;;;:::i;:::-;;;;;;1094:5;1087:13;;;;;;;;;;;;1042:63::o;1176:88::-;1226:1;;:3;;;;;;;;;:::i;:::-;;;;;;1242:17;;;;;;;;;;;;;;2528:120;2596:1;;:3;;;;;;;;;:::i;:::-;;;;;;2632:10;;;;;;;;2637:1;2632:10;;;;2640:1;2632:10;;;2612:31;;;;;;;;;;;:::i;:::-;;;;;;;;2238:141;2324:1;;:3;;;;;;;;;:::i;:::-;;;;;;2369:1;2372;2340:34;;;;;;;;;;;;:::i;:::-;;;;;;;;1268:88;1334:17;;;;;;;;;;;;;;7:345:4;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:137::-;403:5;441:6;428:20;419:29;;457:32;483:5;457:32;:::i;:::-;409:86;;;;:::o;515:273::-;571:5;620:3;613:4;605:6;601:17;597:27;587:2;;638:1;635;628:12;587:2;678:6;665:20;703:79;778:3;770:6;763:4;755:6;751:17;703:79;:::i;:::-;694:88;;577:211;;;;;:::o;794:139::-;840:5;878:6;865:20;856:29;;894:33;921:5;894:33;:::i;:::-;846:87;;;;:::o;939:260::-;997:6;1046:2;1034:9;1025:7;1021:23;1017:32;1014:2;;;1062:1;1059;1052:12;1014:2;1105:1;1130:52;1174:7;1165:6;1154:9;1150:22;1130:52;:::i;:::-;1120:62;;1076:116;1004:195;;;;:::o;1205:375::-;1274:6;1323:2;1311:9;1302:7;1298:23;1294:32;1291:2;;;1339:1;1336;1329:12;1291:2;1410:1;1399:9;1395:17;1382:31;1440:18;1432:6;1429:30;1426:2;;;1472:1;1469;1462:12;1426:2;1500:63;1555:7;1546:6;1535:9;1531:22;1500:63;:::i;:::-;1490:73;;1353:220;1281:299;;;;:::o;1586:262::-;1645:6;1694:2;1682:9;1673:7;1669:23;1665:32;1662:2;;;1710:1;1707;1700:12;1662:2;1753:1;1778:53;1823:7;1814:6;1803:9;1799:22;1778:53;:::i;:::-;1768:63;;1724:117;1652:196;;;;:::o;1854:520::-;1932:6;1940;1989:2;1977:9;1968:7;1964:23;1960:32;1957:2;;;2005:1;2002;1995:12;1957:2;2048:1;2073:53;2118:7;2109:6;2098:9;2094:22;2073:53;:::i;:::-;2063:63;;2019:117;2203:2;2192:9;2188:18;2175:32;2234:18;2226:6;2223:30;2220:2;;;2266:1;2263;2256:12;2220:2;2294:63;2349:7;2340:6;2329:9;2325:22;2294:63;:::i;:::-;2284:73;;2146:221;1947:427;;;;;:::o;2380:407::-;2448:6;2456;2505:2;2493:9;2484:7;2480:23;2476:32;2473:2;;;2521:1;2518;2511:12;2473:2;2564:1;2589:53;2634:7;2625:6;2614:9;2610:22;2589:53;:::i;:::-;2579:63;;2535:117;2691:2;2717:53;2762:7;2753:6;2742:9;2738:22;2717:53;:::i;:::-;2707:63;;2662:118;2463:324;;;;;:::o;2793:115::-;2878:23;2895:5;2878:23;:::i;:::-;2873:3;2866:36;2856:52;;:::o;2914:364::-;3002:3;3030:39;3063:5;3030:39;:::i;:::-;3085:71;3149:6;3144:3;3085:71;:::i;:::-;3078:78;;3165:52;3210:6;3205:3;3198:4;3191:5;3187:16;3165:52;:::i;:::-;3242:29;3264:6;3242:29;:::i;:::-;3237:3;3233:39;3226:46;;3006:272;;;;;:::o;3336:493::-;3475:4;3470:3;3466:14;3559:4;3552:5;3548:16;3542:23;3578:63;3635:4;3630:3;3626:14;3612:12;3578:63;:::i;:::-;3490:161;3730:4;3723:5;3719:16;3713:23;3749:63;3806:4;3801:3;3797:14;3783:12;3749:63;:::i;:::-;3661:161;3444:385;;;:::o;3835:108::-;3912:24;3930:5;3912:24;:::i;:::-;3907:3;3900:37;3890:53;;:::o;3949:118::-;4036:24;4054:5;4036:24;:::i;:::-;4031:3;4024:37;4014:53;;:::o;4073:218::-;4164:4;4202:2;4191:9;4187:18;4179:26;;4215:69;4281:1;4270:9;4266:17;4257:6;4215:69;:::i;:::-;4169:122;;;;:::o;4297:313::-;4410:4;4448:2;4437:9;4433:18;4425:26;;4497:9;4491:4;4487:20;4483:1;4472:9;4468:17;4461:47;4525:78;4598:4;4589:6;4525:78;:::i;:::-;4517:86;;4415:195;;;;:::o;4616:306::-;4751:4;4789:2;4778:9;4774:18;4766:26;;4802:113;4912:1;4901:9;4897:17;4888:6;4802:113;:::i;:::-;4756:166;;;;:::o;4928:222::-;5021:4;5059:2;5048:9;5044:18;5036:26;;5072:71;5140:1;5129:9;5125:17;5116:6;5072:71;:::i;:::-;5026:124;;;;:::o;5156:423::-;5297:4;5335:2;5324:9;5320:18;5312:26;;5348:71;5416:1;5405:9;5401:17;5392:6;5348:71;:::i;:::-;5466:9;5460:4;5456:20;5451:2;5440:9;5436:18;5429:48;5494:78;5567:4;5558:6;5494:78;:::i;:::-;5486:86;;5302:277;;;;;:::o;5585:129::-;5619:6;5646:20;;:::i;:::-;5636:30;;5675:33;5703:4;5695:6;5675:33;:::i;:::-;5626:88;;;:::o;5720:75::-;5753:6;5786:2;5780:9;5770:19;;5760:35;:::o;5801:308::-;5863:4;5953:18;5945:6;5942:30;5939:2;;;5975:18;;:::i;:::-;5939:2;6013:29;6035:6;6013:29;:::i;:::-;6005:37;;6097:4;6091;6087:15;6079:23;;5868:241;;;:::o;6115:99::-;6167:6;6201:5;6195:12;6185:22;;6174:40;;;:::o;6220:169::-;6304:11;6338:6;6333:3;6326:19;6378:4;6373:3;6369:14;6354:29;;6316:73;;;;:::o;6395:76::-;6431:7;6460:5;6449:16;;6439:32;;;:::o;6477:77::-;6514:7;6543:5;6532:16;;6522:32;;;:::o;6560:154::-;6644:6;6639:3;6634;6621:30;6706:1;6697:6;6692:3;6688:16;6681:27;6611:103;;;:::o;6720:307::-;6788:1;6798:113;6812:6;6809:1;6806:13;6798:113;;;6897:1;6892:3;6888:11;6882:18;6878:1;6873:3;6869:11;6862:39;6834:2;6831:1;6827:10;6822:15;;6798:113;;;6929:6;6926:1;6923:13;6920:2;;;7009:1;7000:6;6995:3;6991:16;6984:27;6920:2;6769:258;;;;:::o;7033:281::-;7116:27;7138:4;7116:27;:::i;:::-;7108:6;7104:40;7246:6;7234:10;7231:22;7210:18;7198:10;7195:34;7192:62;7189:2;;;7257:18;;:::i;:::-;7189:2;7297:10;7293:2;7286:22;7076:238;;;:::o;7320:233::-;7359:3;7382:24;7400:5;7382:24;:::i;:::-;7373:33;;7428:66;7421:5;7418:77;7415:2;;;7498:18;;:::i;:::-;7415:2;7545:1;7538:5;7534:13;7527:20;;7363:190;;;:::o;7559:180::-;7607:77;7604:1;7597:88;7704:4;7701:1;7694:15;7728:4;7725:1;7718:15;7745:180;7793:77;7790:1;7783:88;7890:4;7887:1;7880:15;7914:4;7911:1;7904:15;7931:102;7972:6;8023:2;8019:7;8014:2;8007:5;8003:14;7999:28;7989:38;;7979:54;;;:::o;8039:120::-;8111:23;8128:5;8111:23;:::i;:::-;8104:5;8101:34;8091:2;;8149:1;8146;8139:12;8091:2;8081:78;:::o;8165:122::-;8238:24;8256:5;8238:24;:::i;:::-;8231:5;8228:35;8218:2;;8277:1;8274;8267:12;8218:2;8208:79;:::o"},"methodIdentifiers":{"panicAssert()":"b6bbe061","panicAssertView()":"5b94e31e","revertWithAnotherContractCustomError()":"772f243a","revertWithAnotherContractCustomErrorView()":"622051f1","revertWithAnotherCustomError()":"4b5bbf6a","revertWithAnotherCustomErrorView()":"aac014e0","revertWithCustomErrorWithInt(int256)":"8f933030","revertWithCustomErrorWithIntView(int256)":"47c56769","revertWithCustomErrorWithPair(uint256,uint256)":"e0a03812","revertWithCustomErrorWithPairView(uint256,uint256)":"1f542cf3","revertWithCustomErrorWithUint(uint256)":"73d2ea85","revertWithCustomErrorWithUintAndString(uint256,string)":"fe276a34","revertWithCustomErrorWithUintAndStringView(uint256,string)":"3ba4178b","revertWithCustomErrorWithUintView(uint256)":"7c3cb0af","revertWithSomeCustomError()":"bad92aa9","revertWithSomeCustomErrorView()":"ffb4746b","revertsWith(string)":"6f1fdc31","revertsWithView(string)":"467e3d37","revertsWithoutReason()":"1b4f3f3d","revertsWithoutReasonView()":"58a1d1ed","succeeds()":"74afd452","succeedsView()":"6fc588d2"}},"metadata":"{\"compiler\":{\"version\":\"0.8.4+commit.c7e474f2\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AnotherCustomError\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"CustomErrorWithInt\",\"type\":\"error\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"a\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"b\",\"type\":\"uint256\"}],\"internalType\":\"struct Matchers.Pair\",\"name\":\"\",\"type\":\"tuple\"}],\"name\":\"CustomErrorWithPair\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"nameToForceEthersToUseAnArrayLikeWithNamedProperties\",\"type\":\"uint256\"}],\"name\":\"CustomErrorWithUint\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"CustomErrorWithUintAndString\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SomeCustomError\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"SomeEvent\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"panicAssert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"panicAssertView\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"revertWithAnotherContractCustomError\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"revertWithAnotherContractCustomErrorView\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"revertWithAnotherCustomError\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"revertWithAnotherCustomErrorView\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"i\",\"type\":\"int256\"}],\"name\":\"revertWithCustomErrorWithInt\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"i\",\"type\":\"int256\"}],\"name\":\"revertWithCustomErrorWithIntView\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"a\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"b\",\"type\":\"uint256\"}],\"name\":\"revertWithCustomErrorWithPair\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"a\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"b\",\"type\":\"uint256\"}],\"name\":\"revertWithCustomErrorWithPairView\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"n\",\"type\":\"uint256\"}],\"name\":\"revertWithCustomErrorWithUint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"n\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"s\",\"type\":\"string\"}],\"name\":\"revertWithCustomErrorWithUintAndString\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"n\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"s\",\"type\":\"string\"}],\"name\":\"revertWithCustomErrorWithUintAndStringView\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"n\",\"type\":\"uint256\"}],\"name\":\"revertWithCustomErrorWithUintView\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"revertWithSomeCustomError\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"revertWithSomeCustomErrorView\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"revertsWith\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"revertsWithView\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"revertsWithoutReason\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"revertsWithoutReasonView\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"succeeds\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"succeedsView\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/Matchers.sol\":\"Matchers\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/Matchers.sol\":{\"keccak256\":\"0x5a69001d60d8f2498c88a26a86619900f4a7d1e7443adcb5f6bf73b112e659df\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://ca96217e25bd9b0beccc5038bcde4bb32fc71f7828c01e2254f7c6eb06b2ec1c\",\"dweb:/ipfs/QmaHs3KgdszUPBCWbYsxriReGFePSG1AE23BxSCa98cnT9\"]}},\"version\":1}"}},"contracts/Token.sol":{"MockToken":{"abi":[{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"remaining","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:516:4","statements":[{"body":{"nodeType":"YulBlock","src":"58:269:4","statements":[{"nodeType":"YulAssignment","src":"68:22:4","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"82:4:4"},{"kind":"number","nodeType":"YulLiteral","src":"88:1:4","type":"","value":"2"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"78:3:4"},"nodeType":"YulFunctionCall","src":"78:12:4"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"68:6:4"}]},{"nodeType":"YulVariableDeclaration","src":"99:38:4","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"129:4:4"},{"kind":"number","nodeType":"YulLiteral","src":"135:1:4","type":"","value":"1"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"125:3:4"},"nodeType":"YulFunctionCall","src":"125:12:4"},"variables":[{"name":"outOfPlaceEncoding","nodeType":"YulTypedName","src":"103:18:4","type":""}]},{"body":{"nodeType":"YulBlock","src":"176:51:4","statements":[{"nodeType":"YulAssignment","src":"190:27:4","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"204:6:4"},{"kind":"number","nodeType":"YulLiteral","src":"212:4:4","type":"","value":"0x7f"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"200:3:4"},"nodeType":"YulFunctionCall","src":"200:17:4"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"190:6:4"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"156:18:4"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"149:6:4"},"nodeType":"YulFunctionCall","src":"149:26:4"},"nodeType":"YulIf","src":"146:2:4"},{"body":{"nodeType":"YulBlock","src":"279:42:4","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x22","nodeType":"YulIdentifier","src":"293:16:4"},"nodeType":"YulFunctionCall","src":"293:18:4"},"nodeType":"YulExpressionStatement","src":"293:18:4"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"243:18:4"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"266:6:4"},{"kind":"number","nodeType":"YulLiteral","src":"274:2:4","type":"","value":"32"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"263:2:4"},"nodeType":"YulFunctionCall","src":"263:14:4"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"240:2:4"},"nodeType":"YulFunctionCall","src":"240:38:4"},"nodeType":"YulIf","src":"237:2:4"}]},"name":"extract_byte_array_length","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"42:4:4","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"51:6:4","type":""}],"src":"7:320:4"},{"body":{"nodeType":"YulBlock","src":"361:152:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"378:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"381:77:4","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"371:6:4"},"nodeType":"YulFunctionCall","src":"371:88:4"},"nodeType":"YulExpressionStatement","src":"371:88:4"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"475:1:4","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"478:4:4","type":"","value":"0x22"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"468:6:4"},"nodeType":"YulFunctionCall","src":"468:15:4"},"nodeType":"YulExpressionStatement","src":"468:15:4"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"499:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"502:4:4","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"492:6:4"},"nodeType":"YulFunctionCall","src":"492:15:4"},"nodeType":"YulExpressionStatement","src":"492:15:4"}]},"name":"panic_error_0x22","nodeType":"YulFunctionDefinition","src":"333:180:4"}]},"contents":"{\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 panic_error_0x22() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n\n}\n","id":4,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"608060405260016000556040518060400160405280600981526020017f4d6f636b546f6b656e000000000000000000000000000000000000000000000081525060049080519060200190620000569291906200010a565b506040518060400160405280600381526020017f4d434b000000000000000000000000000000000000000000000000000000000081525060059080519060200190620000a49291906200010a565b50348015620000b257600080fd5b50633b9aca00600181905550600154600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506200021f565b8280546200011890620001ba565b90600052602060002090601f0160209004810192826200013c576000855562000188565b82601f106200015757805160ff191683800117855562000188565b8280016001018555821562000188579182015b82811115620001875782518255916020019190600101906200016a565b5b5090506200019791906200019b565b5090565b5b80821115620001b65760008160009055506001016200019c565b5090565b60006002820490506001821680620001d357607f821691505b60208210811415620001ea57620001e9620001f0565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b610bad806200022f6000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c8063313ce56711610066578063313ce5671461013457806370a082311461015257806395d89b4114610182578063a9059cbb146101a0578063dd62ed3e146101d057610093565b806306fdde0314610098578063095ea7b3146100b657806318160ddd146100e657806323b872dd14610104575b600080fd5b6100a0610200565b6040516100ad91906108b8565b60405180910390f35b6100d060048036038101906100cb91906107c4565b61028e565b6040516100dd919061089d565b60405180910390f35b6100ee61031b565b6040516100fb919061091a565b60405180910390f35b61011e60048036038101906101199190610775565b610321565b60405161012b919061089d565b60405180910390f35b61013c6104b9565b604051610149919061091a565b60405180910390f35b61016c60048036038101906101679190610710565b6104bf565b604051610179919061091a565b60405180910390f35b61018a6104d7565b60405161019791906108b8565b60405180910390f35b6101ba60048036038101906101b591906107c4565b610565565b6040516101c7919061089d565b60405180910390f35b6101ea60048036038101906101e59190610739565b61065f565b6040516101f7919061091a565b60405180910390f35b6004805461020d90610a56565b80601f016020809104026020016040519081016040528092919081815260200182805461023990610a56565b80156102865780601f1061025b57610100808354040283529160200191610286565b820191906000526020600020905b81548152906001019060200180831161026957829003601f168201915b505050505081565b600081600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001905092915050565b60015481565b60008161032e853361065f565b101561036f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610366906108da565b60405180910390fd5b81600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546103fb91906109a7565b9250508190555081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461045191906109a7565b9250508190555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546104a79190610951565b92505081905550600190509392505050565b60005481565b60026020528060005260406000206000915090505481565b600580546104e490610a56565b80601f016020809104026020016040519081016040528092919081815260200182805461051090610a56565b801561055d5780601f106105325761010080835404028352916020019161055d565b820191906000526020600020905b81548152906001019060200180831161054057829003601f168201915b505050505081565b60008082116105a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105a0906108fa565b60405180910390fd5b81600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546105f891906109a7565b9250508190555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461064e9190610951565b925050819055506001905092915050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000813590506106f581610b49565b92915050565b60008135905061070a81610b60565b92915050565b60006020828403121561072257600080fd5b6000610730848285016106e6565b91505092915050565b6000806040838503121561074c57600080fd5b600061075a858286016106e6565b925050602061076b858286016106e6565b9150509250929050565b60008060006060848603121561078a57600080fd5b6000610798868287016106e6565b93505060206107a9868287016106e6565b92505060406107ba868287016106fb565b9150509250925092565b600080604083850312156107d757600080fd5b60006107e5858286016106e6565b92505060206107f6858286016106fb565b9150509250929050565b610809816109ed565b82525050565b600061081a82610935565b6108248185610940565b9350610834818560208601610a23565b61083d81610ae6565b840191505092915050565b6000610855601683610940565b915061086082610af7565b602082019050919050565b6000610878601983610940565b915061088382610b20565b602082019050919050565b61089781610a19565b82525050565b60006020820190506108b26000830184610800565b92915050565b600060208201905081810360008301526108d2818461080f565b905092915050565b600060208201905081810360008301526108f381610848565b9050919050565b600060208201905081810360008301526109138161086b565b9050919050565b600060208201905061092f600083018461088e565b92915050565b600081519050919050565b600082825260208201905092915050565b600061095c82610a19565b915061096783610a19565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561099c5761099b610a88565b5b828201905092915050565b60006109b282610a19565b91506109bd83610a19565b9250828210156109d0576109cf610a88565b5b828203905092915050565b60006109e6826109f9565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b83811015610a41578082015181840152602081019050610a26565b83811115610a50576000848401525b50505050565b60006002820490506001821680610a6e57607f821691505b60208210811415610a8257610a81610ab7565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f496e73756666696369656e7420616c6c6f77616e636500000000000000000000600082015250565b7f5472616e736665727265642076616c7565206973207a65726f00000000000000600082015250565b610b52816109db565b8114610b5d57600080fd5b50565b610b6981610a19565b8114610b7457600080fd5b5056fea26469706673582212208ce961870c9d6cd505270df5da0c70d49a8f6cb7e04d5a03b16637783be136e764736f6c63430008040033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x1 PUSH1 0x0 SSTORE PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x9 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x4D6F636B546F6B656E0000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x4 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH3 0x56 SWAP3 SWAP2 SWAP1 PUSH3 0x10A JUMP JUMPDEST POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x4D434B0000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x5 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH3 0xA4 SWAP3 SWAP2 SWAP1 PUSH3 0x10A JUMP JUMPDEST POP CALLVALUE DUP1 ISZERO PUSH3 0xB2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH4 0x3B9ACA00 PUSH1 0x1 DUP2 SWAP1 SSTORE POP PUSH1 0x1 SLOAD 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 DUP2 SWAP1 SSTORE POP PUSH3 0x21F JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH3 0x118 SWAP1 PUSH3 0x1BA JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH3 0x13C JUMPI PUSH1 0x0 DUP6 SSTORE PUSH3 0x188 JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH3 0x157 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x188 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x188 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x187 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0x16A JUMP JUMPDEST JUMPDEST POP SWAP1 POP PUSH3 0x197 SWAP2 SWAP1 PUSH3 0x19B JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x1B6 JUMPI PUSH1 0x0 DUP2 PUSH1 0x0 SWAP1 SSTORE POP PUSH1 0x1 ADD PUSH3 0x19C JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x2 DUP3 DIV SWAP1 POP PUSH1 0x1 DUP3 AND DUP1 PUSH3 0x1D3 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 EQ ISZERO PUSH3 0x1EA JUMPI PUSH3 0x1E9 PUSH3 0x1F0 JUMP JUMPDEST JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH2 0xBAD DUP1 PUSH3 0x22F PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x93 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x313CE567 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x134 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x152 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x182 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x1A0 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x1D0 JUMPI PUSH2 0x93 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x98 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0xB6 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0xE6 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x104 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA0 PUSH2 0x200 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xAD SWAP2 SWAP1 PUSH2 0x8B8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xD0 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xCB SWAP2 SWAP1 PUSH2 0x7C4 JUMP JUMPDEST PUSH2 0x28E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xDD SWAP2 SWAP1 PUSH2 0x89D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xEE PUSH2 0x31B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xFB SWAP2 SWAP1 PUSH2 0x91A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x11E PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x119 SWAP2 SWAP1 PUSH2 0x775 JUMP JUMPDEST PUSH2 0x321 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x12B SWAP2 SWAP1 PUSH2 0x89D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x13C PUSH2 0x4B9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x149 SWAP2 SWAP1 PUSH2 0x91A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x16C PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x167 SWAP2 SWAP1 PUSH2 0x710 JUMP JUMPDEST PUSH2 0x4BF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x179 SWAP2 SWAP1 PUSH2 0x91A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x18A PUSH2 0x4D7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x197 SWAP2 SWAP1 PUSH2 0x8B8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1BA PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1B5 SWAP2 SWAP1 PUSH2 0x7C4 JUMP JUMPDEST PUSH2 0x565 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1C7 SWAP2 SWAP1 PUSH2 0x89D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1EA PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1E5 SWAP2 SWAP1 PUSH2 0x739 JUMP JUMPDEST PUSH2 0x65F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1F7 SWAP2 SWAP1 PUSH2 0x91A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH2 0x20D SWAP1 PUSH2 0xA56 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 0x239 SWAP1 PUSH2 0xA56 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x286 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x25B JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x286 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 0x269 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x3 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 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP PUSH1 0x1 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x32E DUP6 CALLER PUSH2 0x65F JUMP JUMPDEST LT ISZERO PUSH2 0x36F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x366 SWAP1 PUSH2 0x8DA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 PUSH1 0x3 PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 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 0x3FB SWAP2 SWAP1 PUSH2 0x9A7 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x2 PUSH1 0x0 DUP7 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 0x451 SWAP2 SWAP1 PUSH2 0x9A7 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x2 PUSH1 0x0 DUP6 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 0x4A7 SWAP2 SWAP1 PUSH2 0x951 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH1 0x1 SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD 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 0x5 DUP1 SLOAD PUSH2 0x4E4 SWAP1 PUSH2 0xA56 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 0x510 SWAP1 PUSH2 0xA56 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x55D JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x532 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x55D 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 0x540 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 GT PUSH2 0x5A9 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5A0 SWAP1 PUSH2 0x8FA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 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 0x5F8 SWAP2 SWAP1 PUSH2 0x9A7 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x2 PUSH1 0x0 DUP6 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 0x64E SWAP2 SWAP1 PUSH2 0x951 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH1 0x1 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x3 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x6F5 DUP2 PUSH2 0xB49 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x70A DUP2 PUSH2 0xB60 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x722 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x730 DUP5 DUP3 DUP6 ADD PUSH2 0x6E6 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x74C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x75A DUP6 DUP3 DUP7 ADD PUSH2 0x6E6 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x76B DUP6 DUP3 DUP7 ADD PUSH2 0x6E6 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x78A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x798 DUP7 DUP3 DUP8 ADD PUSH2 0x6E6 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x7A9 DUP7 DUP3 DUP8 ADD PUSH2 0x6E6 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x7BA DUP7 DUP3 DUP8 ADD PUSH2 0x6FB JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x7D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x7E5 DUP6 DUP3 DUP7 ADD PUSH2 0x6E6 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x7F6 DUP6 DUP3 DUP7 ADD PUSH2 0x6FB JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH2 0x809 DUP2 PUSH2 0x9ED JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x81A DUP3 PUSH2 0x935 JUMP JUMPDEST PUSH2 0x824 DUP2 DUP6 PUSH2 0x940 JUMP JUMPDEST SWAP4 POP PUSH2 0x834 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0xA23 JUMP JUMPDEST PUSH2 0x83D DUP2 PUSH2 0xAE6 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x855 PUSH1 0x16 DUP4 PUSH2 0x940 JUMP JUMPDEST SWAP2 POP PUSH2 0x860 DUP3 PUSH2 0xAF7 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x878 PUSH1 0x19 DUP4 PUSH2 0x940 JUMP JUMPDEST SWAP2 POP PUSH2 0x883 DUP3 PUSH2 0xB20 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x897 DUP2 PUSH2 0xA19 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x8B2 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x800 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 0x8D2 DUP2 DUP5 PUSH2 0x80F 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 0x8F3 DUP2 PUSH2 0x848 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 0x913 DUP2 PUSH2 0x86B JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x92F PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x88E JUMP JUMPDEST SWAP3 SWAP2 POP 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 0x95C DUP3 PUSH2 0xA19 JUMP JUMPDEST SWAP2 POP PUSH2 0x967 DUP4 PUSH2 0xA19 JUMP JUMPDEST SWAP3 POP DUP3 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SUB DUP3 GT ISZERO PUSH2 0x99C JUMPI PUSH2 0x99B PUSH2 0xA88 JUMP JUMPDEST JUMPDEST DUP3 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9B2 DUP3 PUSH2 0xA19 JUMP JUMPDEST SWAP2 POP PUSH2 0x9BD DUP4 PUSH2 0xA19 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 LT ISZERO PUSH2 0x9D0 JUMPI PUSH2 0x9CF PUSH2 0xA88 JUMP JUMPDEST JUMPDEST DUP3 DUP3 SUB SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9E6 DUP3 PUSH2 0x9F9 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO ISZERO 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 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xA41 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0xA26 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0xA50 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 0xA6E JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 EQ ISZERO PUSH2 0xA82 JUMPI PUSH2 0xA81 PUSH2 0xAB7 JUMP JUMPDEST JUMPDEST POP SWAP2 SWAP1 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 PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x496E73756666696369656E7420616C6C6F77616E636500000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH32 0x5472616E736665727265642076616C7565206973207A65726F00000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH2 0xB52 DUP2 PUSH2 0x9DB JUMP JUMPDEST DUP2 EQ PUSH2 0xB5D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0xB69 DUP2 PUSH2 0xA19 JUMP JUMPDEST DUP2 EQ PUSH2 0xB74 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP13 0xE9 PUSH2 0x870C SWAP14 PUSH13 0xD505270DF5DA0C70D49A8F6CB7 0xE0 0x4D GAS SUB 0xB1 PUSH7 0x37783BE136E764 PUSH20 0x6F6C634300080400330000000000000000000000 ","sourceMap":"1241:119:3:-:0;;;119:1;96:24;;1293:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1329:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1241:119;;;;;;;;;;292:13;278:11;:27;;;;335:11;;311:9;:21;321:10;311:21;;;;;;;;;;;;;;;:35;;;;1241:119;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;7:320:4:-;51:6;88:1;82:4;78:12;68:22;;135:1;129:4;125:12;156:18;146:2;;212:4;204:6;200:17;190:27;;146:2;274;266:6;263:14;243:18;240:38;237:2;;;293:18;;:::i;:::-;237:2;58:269;;;;:::o;333:180::-;381:77;378:1;371:88;478:4;475:1;468:15;502:4;499:1;492:15;1241:119:3;;;;;;;"},"deployedBytecode":{"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:7847:4","statements":[{"body":{"nodeType":"YulBlock","src":"59:87:4","statements":[{"nodeType":"YulAssignment","src":"69:29:4","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"91:6:4"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"78:12:4"},"nodeType":"YulFunctionCall","src":"78:20:4"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"69:5:4"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"134:5:4"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"107:26:4"},"nodeType":"YulFunctionCall","src":"107:33:4"},"nodeType":"YulExpressionStatement","src":"107:33:4"}]},"name":"abi_decode_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"37:6:4","type":""},{"name":"end","nodeType":"YulTypedName","src":"45:3:4","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"53:5:4","type":""}],"src":"7:139:4"},{"body":{"nodeType":"YulBlock","src":"204:87:4","statements":[{"nodeType":"YulAssignment","src":"214:29:4","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"236:6:4"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"223:12:4"},"nodeType":"YulFunctionCall","src":"223:20:4"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"214:5:4"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"279:5:4"}],"functionName":{"name":"validator_revert_t_uint256","nodeType":"YulIdentifier","src":"252:26:4"},"nodeType":"YulFunctionCall","src":"252:33:4"},"nodeType":"YulExpressionStatement","src":"252:33:4"}]},"name":"abi_decode_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"182:6:4","type":""},{"name":"end","nodeType":"YulTypedName","src":"190:3:4","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"198:5:4","type":""}],"src":"152:139:4"},{"body":{"nodeType":"YulBlock","src":"363:196:4","statements":[{"body":{"nodeType":"YulBlock","src":"409:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"418:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"421:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"411:6:4"},"nodeType":"YulFunctionCall","src":"411:12:4"},"nodeType":"YulExpressionStatement","src":"411:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"384:7:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"393:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"380:3:4"},"nodeType":"YulFunctionCall","src":"380:23:4"},{"kind":"number","nodeType":"YulLiteral","src":"405:2:4","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"376:3:4"},"nodeType":"YulFunctionCall","src":"376:32:4"},"nodeType":"YulIf","src":"373:2:4"},{"nodeType":"YulBlock","src":"435:117:4","statements":[{"nodeType":"YulVariableDeclaration","src":"450:15:4","value":{"kind":"number","nodeType":"YulLiteral","src":"464:1:4","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"454:6:4","type":""}]},{"nodeType":"YulAssignment","src":"479:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"514:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"525:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"510:3:4"},"nodeType":"YulFunctionCall","src":"510:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"534:7:4"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"489:20:4"},"nodeType":"YulFunctionCall","src":"489:53:4"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"479:6:4"}]}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"333:9:4","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"344:7:4","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"356:6:4","type":""}],"src":"297:262:4"},{"body":{"nodeType":"YulBlock","src":"648:324:4","statements":[{"body":{"nodeType":"YulBlock","src":"694:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"703:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"706:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"696:6:4"},"nodeType":"YulFunctionCall","src":"696:12:4"},"nodeType":"YulExpressionStatement","src":"696:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"669:7:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"678:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"665:3:4"},"nodeType":"YulFunctionCall","src":"665:23:4"},{"kind":"number","nodeType":"YulLiteral","src":"690:2:4","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"661:3:4"},"nodeType":"YulFunctionCall","src":"661:32:4"},"nodeType":"YulIf","src":"658:2:4"},{"nodeType":"YulBlock","src":"720:117:4","statements":[{"nodeType":"YulVariableDeclaration","src":"735:15:4","value":{"kind":"number","nodeType":"YulLiteral","src":"749:1:4","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"739:6:4","type":""}]},{"nodeType":"YulAssignment","src":"764:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"799:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"810:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"795:3:4"},"nodeType":"YulFunctionCall","src":"795:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"819:7:4"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"774:20:4"},"nodeType":"YulFunctionCall","src":"774:53:4"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"764:6:4"}]}]},{"nodeType":"YulBlock","src":"847:118:4","statements":[{"nodeType":"YulVariableDeclaration","src":"862:16:4","value":{"kind":"number","nodeType":"YulLiteral","src":"876:2:4","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"866:6:4","type":""}]},{"nodeType":"YulAssignment","src":"892:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"927:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"938:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"923:3:4"},"nodeType":"YulFunctionCall","src":"923:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"947:7:4"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"902:20:4"},"nodeType":"YulFunctionCall","src":"902:53:4"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"892:6:4"}]}]}]},"name":"abi_decode_tuple_t_addresst_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"610:9:4","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"621:7:4","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"633:6:4","type":""},{"name":"value1","nodeType":"YulTypedName","src":"641:6:4","type":""}],"src":"565:407:4"},{"body":{"nodeType":"YulBlock","src":"1078:452:4","statements":[{"body":{"nodeType":"YulBlock","src":"1124:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1133:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1136:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1126:6:4"},"nodeType":"YulFunctionCall","src":"1126:12:4"},"nodeType":"YulExpressionStatement","src":"1126:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1099:7:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"1108:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1095:3:4"},"nodeType":"YulFunctionCall","src":"1095:23:4"},{"kind":"number","nodeType":"YulLiteral","src":"1120:2:4","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1091:3:4"},"nodeType":"YulFunctionCall","src":"1091:32:4"},"nodeType":"YulIf","src":"1088:2:4"},{"nodeType":"YulBlock","src":"1150:117:4","statements":[{"nodeType":"YulVariableDeclaration","src":"1165:15:4","value":{"kind":"number","nodeType":"YulLiteral","src":"1179:1:4","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1169:6:4","type":""}]},{"nodeType":"YulAssignment","src":"1194:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1229:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"1240:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1225:3:4"},"nodeType":"YulFunctionCall","src":"1225:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1249:7:4"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"1204:20:4"},"nodeType":"YulFunctionCall","src":"1204:53:4"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1194:6:4"}]}]},{"nodeType":"YulBlock","src":"1277:118:4","statements":[{"nodeType":"YulVariableDeclaration","src":"1292:16:4","value":{"kind":"number","nodeType":"YulLiteral","src":"1306:2:4","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1296:6:4","type":""}]},{"nodeType":"YulAssignment","src":"1322:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1357:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"1368:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1353:3:4"},"nodeType":"YulFunctionCall","src":"1353:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1377:7:4"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"1332:20:4"},"nodeType":"YulFunctionCall","src":"1332:53:4"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1322:6:4"}]}]},{"nodeType":"YulBlock","src":"1405:118:4","statements":[{"nodeType":"YulVariableDeclaration","src":"1420:16:4","value":{"kind":"number","nodeType":"YulLiteral","src":"1434:2:4","type":"","value":"64"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1424:6:4","type":""}]},{"nodeType":"YulAssignment","src":"1450:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1485:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"1496:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1481:3:4"},"nodeType":"YulFunctionCall","src":"1481:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1505:7:4"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"1460:20:4"},"nodeType":"YulFunctionCall","src":"1460:53:4"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"1450:6:4"}]}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1032:9:4","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1043:7:4","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1055:6:4","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1063:6:4","type":""},{"name":"value2","nodeType":"YulTypedName","src":"1071:6:4","type":""}],"src":"978:552:4"},{"body":{"nodeType":"YulBlock","src":"1619:324:4","statements":[{"body":{"nodeType":"YulBlock","src":"1665:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1674:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1677:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1667:6:4"},"nodeType":"YulFunctionCall","src":"1667:12:4"},"nodeType":"YulExpressionStatement","src":"1667:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1640:7:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"1649:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1636:3:4"},"nodeType":"YulFunctionCall","src":"1636:23:4"},{"kind":"number","nodeType":"YulLiteral","src":"1661:2:4","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1632:3:4"},"nodeType":"YulFunctionCall","src":"1632:32:4"},"nodeType":"YulIf","src":"1629:2:4"},{"nodeType":"YulBlock","src":"1691:117:4","statements":[{"nodeType":"YulVariableDeclaration","src":"1706:15:4","value":{"kind":"number","nodeType":"YulLiteral","src":"1720:1:4","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1710:6:4","type":""}]},{"nodeType":"YulAssignment","src":"1735:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1770:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"1781:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1766:3:4"},"nodeType":"YulFunctionCall","src":"1766:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1790:7:4"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"1745:20:4"},"nodeType":"YulFunctionCall","src":"1745:53:4"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1735:6:4"}]}]},{"nodeType":"YulBlock","src":"1818:118:4","statements":[{"nodeType":"YulVariableDeclaration","src":"1833:16:4","value":{"kind":"number","nodeType":"YulLiteral","src":"1847:2:4","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1837:6:4","type":""}]},{"nodeType":"YulAssignment","src":"1863:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1898:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"1909:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1894:3:4"},"nodeType":"YulFunctionCall","src":"1894:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1918:7:4"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"1873:20:4"},"nodeType":"YulFunctionCall","src":"1873:53:4"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1863:6:4"}]}]}]},"name":"abi_decode_tuple_t_addresst_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1581:9:4","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1592:7:4","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1604:6:4","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1612:6:4","type":""}],"src":"1536:407:4"},{"body":{"nodeType":"YulBlock","src":"2008:50:4","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2025:3:4"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2045:5:4"}],"functionName":{"name":"cleanup_t_bool","nodeType":"YulIdentifier","src":"2030:14:4"},"nodeType":"YulFunctionCall","src":"2030:21:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2018:6:4"},"nodeType":"YulFunctionCall","src":"2018:34:4"},"nodeType":"YulExpressionStatement","src":"2018:34:4"}]},"name":"abi_encode_t_bool_to_t_bool_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1996:5:4","type":""},{"name":"pos","nodeType":"YulTypedName","src":"2003:3:4","type":""}],"src":"1949:109:4"},{"body":{"nodeType":"YulBlock","src":"2156:272:4","statements":[{"nodeType":"YulVariableDeclaration","src":"2166:53:4","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2213:5:4"}],"functionName":{"name":"array_length_t_string_memory_ptr","nodeType":"YulIdentifier","src":"2180:32:4"},"nodeType":"YulFunctionCall","src":"2180:39:4"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"2170:6:4","type":""}]},{"nodeType":"YulAssignment","src":"2228:78:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2294:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"2299:6:4"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"2235:58:4"},"nodeType":"YulFunctionCall","src":"2235:71:4"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"2228:3:4"}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2341:5:4"},{"kind":"number","nodeType":"YulLiteral","src":"2348:4:4","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2337:3:4"},"nodeType":"YulFunctionCall","src":"2337:16:4"},{"name":"pos","nodeType":"YulIdentifier","src":"2355:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"2360:6:4"}],"functionName":{"name":"copy_memory_to_memory","nodeType":"YulIdentifier","src":"2315:21:4"},"nodeType":"YulFunctionCall","src":"2315:52:4"},"nodeType":"YulExpressionStatement","src":"2315:52:4"},{"nodeType":"YulAssignment","src":"2376:46:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2387:3:4"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"2414:6:4"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"2392:21:4"},"nodeType":"YulFunctionCall","src":"2392:29:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2383:3:4"},"nodeType":"YulFunctionCall","src":"2383:39:4"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"2376:3:4"}]}]},"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"2137:5:4","type":""},{"name":"pos","nodeType":"YulTypedName","src":"2144:3:4","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"2152:3:4","type":""}],"src":"2064:364:4"},{"body":{"nodeType":"YulBlock","src":"2580:220:4","statements":[{"nodeType":"YulAssignment","src":"2590:74:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2656:3:4"},{"kind":"number","nodeType":"YulLiteral","src":"2661:2:4","type":"","value":"22"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"2597:58:4"},"nodeType":"YulFunctionCall","src":"2597:67:4"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"2590:3:4"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2762:3:4"}],"functionName":{"name":"store_literal_in_memory_45e3d26e36c3151c7f92a1eee9add9658cbb8e14605ee2452ec007389b9744bc","nodeType":"YulIdentifier","src":"2673:88:4"},"nodeType":"YulFunctionCall","src":"2673:93:4"},"nodeType":"YulExpressionStatement","src":"2673:93:4"},{"nodeType":"YulAssignment","src":"2775:19:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2786:3:4"},{"kind":"number","nodeType":"YulLiteral","src":"2791:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2782:3:4"},"nodeType":"YulFunctionCall","src":"2782:12:4"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"2775:3:4"}]}]},"name":"abi_encode_t_stringliteral_45e3d26e36c3151c7f92a1eee9add9658cbb8e14605ee2452ec007389b9744bc_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"2568:3:4","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"2576:3:4","type":""}],"src":"2434:366:4"},{"body":{"nodeType":"YulBlock","src":"2952:220:4","statements":[{"nodeType":"YulAssignment","src":"2962:74:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3028:3:4"},{"kind":"number","nodeType":"YulLiteral","src":"3033:2:4","type":"","value":"25"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"2969:58:4"},"nodeType":"YulFunctionCall","src":"2969:67:4"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"2962:3:4"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3134:3:4"}],"functionName":{"name":"store_literal_in_memory_4ca3cd75a1831a94a24913bfd2c9b9d35acbb11ac3447f65bb0682cf14f63f5c","nodeType":"YulIdentifier","src":"3045:88:4"},"nodeType":"YulFunctionCall","src":"3045:93:4"},"nodeType":"YulExpressionStatement","src":"3045:93:4"},{"nodeType":"YulAssignment","src":"3147:19:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3158:3:4"},{"kind":"number","nodeType":"YulLiteral","src":"3163:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3154:3:4"},"nodeType":"YulFunctionCall","src":"3154:12:4"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"3147:3:4"}]}]},"name":"abi_encode_t_stringliteral_4ca3cd75a1831a94a24913bfd2c9b9d35acbb11ac3447f65bb0682cf14f63f5c_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"2940:3:4","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"2948:3:4","type":""}],"src":"2806:366:4"},{"body":{"nodeType":"YulBlock","src":"3243:53:4","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3260:3:4"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3283:5:4"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"3265:17:4"},"nodeType":"YulFunctionCall","src":"3265:24:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3253:6:4"},"nodeType":"YulFunctionCall","src":"3253:37:4"},"nodeType":"YulExpressionStatement","src":"3253:37:4"}]},"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"3231:5:4","type":""},{"name":"pos","nodeType":"YulTypedName","src":"3238:3:4","type":""}],"src":"3178:118:4"},{"body":{"nodeType":"YulBlock","src":"3394:118:4","statements":[{"nodeType":"YulAssignment","src":"3404:26:4","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3416:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"3427:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3412:3:4"},"nodeType":"YulFunctionCall","src":"3412:18:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3404:4:4"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3478:6:4"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3491:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"3502:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3487:3:4"},"nodeType":"YulFunctionCall","src":"3487:17:4"}],"functionName":{"name":"abi_encode_t_bool_to_t_bool_fromStack","nodeType":"YulIdentifier","src":"3440:37:4"},"nodeType":"YulFunctionCall","src":"3440:65:4"},"nodeType":"YulExpressionStatement","src":"3440:65:4"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3366:9:4","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3378:6:4","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3389:4:4","type":""}],"src":"3302:210:4"},{"body":{"nodeType":"YulBlock","src":"3636:195:4","statements":[{"nodeType":"YulAssignment","src":"3646:26:4","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3658:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"3669:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3654:3:4"},"nodeType":"YulFunctionCall","src":"3654:18:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3646:4:4"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3693:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"3704:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3689:3:4"},"nodeType":"YulFunctionCall","src":"3689:17:4"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"3712:4:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"3718:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3708:3:4"},"nodeType":"YulFunctionCall","src":"3708:20:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3682:6:4"},"nodeType":"YulFunctionCall","src":"3682:47:4"},"nodeType":"YulExpressionStatement","src":"3682:47:4"},{"nodeType":"YulAssignment","src":"3738:86:4","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3810:6:4"},{"name":"tail","nodeType":"YulIdentifier","src":"3819:4:4"}],"functionName":{"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"3746:63:4"},"nodeType":"YulFunctionCall","src":"3746:78:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3738:4:4"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3608:9:4","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3620:6:4","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3631:4:4","type":""}],"src":"3518:313:4"},{"body":{"nodeType":"YulBlock","src":"4008:248:4","statements":[{"nodeType":"YulAssignment","src":"4018:26:4","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4030:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"4041:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4026:3:4"},"nodeType":"YulFunctionCall","src":"4026:18:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4018:4:4"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4065:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"4076:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4061:3:4"},"nodeType":"YulFunctionCall","src":"4061:17:4"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"4084:4:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"4090:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4080:3:4"},"nodeType":"YulFunctionCall","src":"4080:20:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4054:6:4"},"nodeType":"YulFunctionCall","src":"4054:47:4"},"nodeType":"YulExpressionStatement","src":"4054:47:4"},{"nodeType":"YulAssignment","src":"4110:139:4","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"4244:4:4"}],"functionName":{"name":"abi_encode_t_stringliteral_45e3d26e36c3151c7f92a1eee9add9658cbb8e14605ee2452ec007389b9744bc_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"4118:124:4"},"nodeType":"YulFunctionCall","src":"4118:131:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4110:4:4"}]}]},"name":"abi_encode_tuple_t_stringliteral_45e3d26e36c3151c7f92a1eee9add9658cbb8e14605ee2452ec007389b9744bc__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3988:9:4","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4003:4:4","type":""}],"src":"3837:419:4"},{"body":{"nodeType":"YulBlock","src":"4433:248:4","statements":[{"nodeType":"YulAssignment","src":"4443:26:4","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4455:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"4466:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4451:3:4"},"nodeType":"YulFunctionCall","src":"4451:18:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4443:4:4"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4490:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"4501:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4486:3:4"},"nodeType":"YulFunctionCall","src":"4486:17:4"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"4509:4:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"4515:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4505:3:4"},"nodeType":"YulFunctionCall","src":"4505:20:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4479:6:4"},"nodeType":"YulFunctionCall","src":"4479:47:4"},"nodeType":"YulExpressionStatement","src":"4479:47:4"},{"nodeType":"YulAssignment","src":"4535:139:4","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"4669:4:4"}],"functionName":{"name":"abi_encode_t_stringliteral_4ca3cd75a1831a94a24913bfd2c9b9d35acbb11ac3447f65bb0682cf14f63f5c_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"4543:124:4"},"nodeType":"YulFunctionCall","src":"4543:131:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4535:4:4"}]}]},"name":"abi_encode_tuple_t_stringliteral_4ca3cd75a1831a94a24913bfd2c9b9d35acbb11ac3447f65bb0682cf14f63f5c__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4413:9:4","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4428:4:4","type":""}],"src":"4262:419:4"},{"body":{"nodeType":"YulBlock","src":"4785:124:4","statements":[{"nodeType":"YulAssignment","src":"4795:26:4","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4807:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"4818:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4803:3:4"},"nodeType":"YulFunctionCall","src":"4803:18:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4795:4:4"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4875:6:4"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4888:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"4899:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4884:3:4"},"nodeType":"YulFunctionCall","src":"4884:17:4"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"4831:43:4"},"nodeType":"YulFunctionCall","src":"4831:71:4"},"nodeType":"YulExpressionStatement","src":"4831:71:4"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4757:9:4","type":""},{"name":"value0","nodeType":"YulTypedName","src":"4769:6:4","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4780:4:4","type":""}],"src":"4687:222:4"},{"body":{"nodeType":"YulBlock","src":"4974:40:4","statements":[{"nodeType":"YulAssignment","src":"4985:22:4","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5001:5:4"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4995:5:4"},"nodeType":"YulFunctionCall","src":"4995:12:4"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"4985:6:4"}]}]},"name":"array_length_t_string_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"4957:5:4","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"4967:6:4","type":""}],"src":"4915:99:4"},{"body":{"nodeType":"YulBlock","src":"5116:73:4","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5133:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"5138:6:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5126:6:4"},"nodeType":"YulFunctionCall","src":"5126:19:4"},"nodeType":"YulExpressionStatement","src":"5126:19:4"},{"nodeType":"YulAssignment","src":"5154:29:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5173:3:4"},{"kind":"number","nodeType":"YulLiteral","src":"5178:4:4","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5169:3:4"},"nodeType":"YulFunctionCall","src":"5169:14:4"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"5154:11:4"}]}]},"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"5088:3:4","type":""},{"name":"length","nodeType":"YulTypedName","src":"5093:6:4","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"5104:11:4","type":""}],"src":"5020:169:4"},{"body":{"nodeType":"YulBlock","src":"5239:261:4","statements":[{"nodeType":"YulAssignment","src":"5249:25:4","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"5272:1:4"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"5254:17:4"},"nodeType":"YulFunctionCall","src":"5254:20:4"},"variableNames":[{"name":"x","nodeType":"YulIdentifier","src":"5249:1:4"}]},{"nodeType":"YulAssignment","src":"5283:25:4","value":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"5306:1:4"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"5288:17:4"},"nodeType":"YulFunctionCall","src":"5288:20:4"},"variableNames":[{"name":"y","nodeType":"YulIdentifier","src":"5283:1:4"}]},{"body":{"nodeType":"YulBlock","src":"5446:22:4","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"5448:16:4"},"nodeType":"YulFunctionCall","src":"5448:18:4"},"nodeType":"YulExpressionStatement","src":"5448:18:4"}]},"condition":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"5367:1:4"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5374:66:4","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"},{"name":"y","nodeType":"YulIdentifier","src":"5442:1:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5370:3:4"},"nodeType":"YulFunctionCall","src":"5370:74:4"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5364:2:4"},"nodeType":"YulFunctionCall","src":"5364:81:4"},"nodeType":"YulIf","src":"5361:2:4"},{"nodeType":"YulAssignment","src":"5478:16:4","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"5489:1:4"},{"name":"y","nodeType":"YulIdentifier","src":"5492:1:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5485:3:4"},"nodeType":"YulFunctionCall","src":"5485:9:4"},"variableNames":[{"name":"sum","nodeType":"YulIdentifier","src":"5478:3:4"}]}]},"name":"checked_add_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"5226:1:4","type":""},{"name":"y","nodeType":"YulTypedName","src":"5229:1:4","type":""}],"returnVariables":[{"name":"sum","nodeType":"YulTypedName","src":"5235:3:4","type":""}],"src":"5195:305:4"},{"body":{"nodeType":"YulBlock","src":"5551:146:4","statements":[{"nodeType":"YulAssignment","src":"5561:25:4","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"5584:1:4"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"5566:17:4"},"nodeType":"YulFunctionCall","src":"5566:20:4"},"variableNames":[{"name":"x","nodeType":"YulIdentifier","src":"5561:1:4"}]},{"nodeType":"YulAssignment","src":"5595:25:4","value":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"5618:1:4"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"5600:17:4"},"nodeType":"YulFunctionCall","src":"5600:20:4"},"variableNames":[{"name":"y","nodeType":"YulIdentifier","src":"5595:1:4"}]},{"body":{"nodeType":"YulBlock","src":"5642:22:4","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"5644:16:4"},"nodeType":"YulFunctionCall","src":"5644:18:4"},"nodeType":"YulExpressionStatement","src":"5644:18:4"}]},"condition":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"5636:1:4"},{"name":"y","nodeType":"YulIdentifier","src":"5639:1:4"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"5633:2:4"},"nodeType":"YulFunctionCall","src":"5633:8:4"},"nodeType":"YulIf","src":"5630:2:4"},{"nodeType":"YulAssignment","src":"5674:17:4","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"5686:1:4"},{"name":"y","nodeType":"YulIdentifier","src":"5689:1:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5682:3:4"},"nodeType":"YulFunctionCall","src":"5682:9:4"},"variableNames":[{"name":"diff","nodeType":"YulIdentifier","src":"5674:4:4"}]}]},"name":"checked_sub_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"5537:1:4","type":""},{"name":"y","nodeType":"YulTypedName","src":"5540:1:4","type":""}],"returnVariables":[{"name":"diff","nodeType":"YulTypedName","src":"5546:4:4","type":""}],"src":"5506:191:4"},{"body":{"nodeType":"YulBlock","src":"5748:51:4","statements":[{"nodeType":"YulAssignment","src":"5758:35:4","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5787:5:4"}],"functionName":{"name":"cleanup_t_uint160","nodeType":"YulIdentifier","src":"5769:17:4"},"nodeType":"YulFunctionCall","src":"5769:24:4"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"5758:7:4"}]}]},"name":"cleanup_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"5730:5:4","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"5740:7:4","type":""}],"src":"5703:96:4"},{"body":{"nodeType":"YulBlock","src":"5847:48:4","statements":[{"nodeType":"YulAssignment","src":"5857:32:4","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5882:5:4"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"5875:6:4"},"nodeType":"YulFunctionCall","src":"5875:13:4"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"5868:6:4"},"nodeType":"YulFunctionCall","src":"5868:21:4"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"5857:7:4"}]}]},"name":"cleanup_t_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"5829:5:4","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"5839:7:4","type":""}],"src":"5805:90:4"},{"body":{"nodeType":"YulBlock","src":"5946:81:4","statements":[{"nodeType":"YulAssignment","src":"5956:65:4","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5971:5:4"},{"kind":"number","nodeType":"YulLiteral","src":"5978:42:4","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5967:3:4"},"nodeType":"YulFunctionCall","src":"5967:54:4"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"5956:7:4"}]}]},"name":"cleanup_t_uint160","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"5928:5:4","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"5938:7:4","type":""}],"src":"5901:126:4"},{"body":{"nodeType":"YulBlock","src":"6078:32:4","statements":[{"nodeType":"YulAssignment","src":"6088:16:4","value":{"name":"value","nodeType":"YulIdentifier","src":"6099:5:4"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"6088:7:4"}]}]},"name":"cleanup_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"6060:5:4","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"6070:7:4","type":""}],"src":"6033:77:4"},{"body":{"nodeType":"YulBlock","src":"6165:258:4","statements":[{"nodeType":"YulVariableDeclaration","src":"6175:10:4","value":{"kind":"number","nodeType":"YulLiteral","src":"6184:1:4","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"6179:1:4","type":""}]},{"body":{"nodeType":"YulBlock","src":"6244:63:4","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"6269:3:4"},{"name":"i","nodeType":"YulIdentifier","src":"6274:1:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6265:3:4"},"nodeType":"YulFunctionCall","src":"6265:11:4"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"6288:3:4"},{"name":"i","nodeType":"YulIdentifier","src":"6293:1:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6284:3:4"},"nodeType":"YulFunctionCall","src":"6284:11:4"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6278:5:4"},"nodeType":"YulFunctionCall","src":"6278:18:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6258:6:4"},"nodeType":"YulFunctionCall","src":"6258:39:4"},"nodeType":"YulExpressionStatement","src":"6258:39:4"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"6205:1:4"},{"name":"length","nodeType":"YulIdentifier","src":"6208:6:4"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"6202:2:4"},"nodeType":"YulFunctionCall","src":"6202:13:4"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"6216:19:4","statements":[{"nodeType":"YulAssignment","src":"6218:15:4","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"6227:1:4"},{"kind":"number","nodeType":"YulLiteral","src":"6230:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6223:3:4"},"nodeType":"YulFunctionCall","src":"6223:10:4"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"6218:1:4"}]}]},"pre":{"nodeType":"YulBlock","src":"6198:3:4","statements":[]},"src":"6194:113:4"},{"body":{"nodeType":"YulBlock","src":"6341:76:4","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"6391:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"6396:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6387:3:4"},"nodeType":"YulFunctionCall","src":"6387:16:4"},{"kind":"number","nodeType":"YulLiteral","src":"6405:1:4","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6380:6:4"},"nodeType":"YulFunctionCall","src":"6380:27:4"},"nodeType":"YulExpressionStatement","src":"6380:27:4"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"6322:1:4"},{"name":"length","nodeType":"YulIdentifier","src":"6325:6:4"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"6319:2:4"},"nodeType":"YulFunctionCall","src":"6319:13:4"},"nodeType":"YulIf","src":"6316:2:4"}]},"name":"copy_memory_to_memory","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"6147:3:4","type":""},{"name":"dst","nodeType":"YulTypedName","src":"6152:3:4","type":""},{"name":"length","nodeType":"YulTypedName","src":"6157:6:4","type":""}],"src":"6116:307:4"},{"body":{"nodeType":"YulBlock","src":"6480:269:4","statements":[{"nodeType":"YulAssignment","src":"6490:22:4","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"6504:4:4"},{"kind":"number","nodeType":"YulLiteral","src":"6510:1:4","type":"","value":"2"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"6500:3:4"},"nodeType":"YulFunctionCall","src":"6500:12:4"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"6490:6:4"}]},{"nodeType":"YulVariableDeclaration","src":"6521:38:4","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"6551:4:4"},{"kind":"number","nodeType":"YulLiteral","src":"6557:1:4","type":"","value":"1"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"6547:3:4"},"nodeType":"YulFunctionCall","src":"6547:12:4"},"variables":[{"name":"outOfPlaceEncoding","nodeType":"YulTypedName","src":"6525:18:4","type":""}]},{"body":{"nodeType":"YulBlock","src":"6598:51:4","statements":[{"nodeType":"YulAssignment","src":"6612:27:4","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"6626:6:4"},{"kind":"number","nodeType":"YulLiteral","src":"6634:4:4","type":"","value":"0x7f"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"6622:3:4"},"nodeType":"YulFunctionCall","src":"6622:17:4"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"6612:6:4"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"6578:18:4"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"6571:6:4"},"nodeType":"YulFunctionCall","src":"6571:26:4"},"nodeType":"YulIf","src":"6568:2:4"},{"body":{"nodeType":"YulBlock","src":"6701:42:4","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x22","nodeType":"YulIdentifier","src":"6715:16:4"},"nodeType":"YulFunctionCall","src":"6715:18:4"},"nodeType":"YulExpressionStatement","src":"6715:18:4"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"6665:18:4"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"6688:6:4"},{"kind":"number","nodeType":"YulLiteral","src":"6696:2:4","type":"","value":"32"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"6685:2:4"},"nodeType":"YulFunctionCall","src":"6685:14:4"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"6662:2:4"},"nodeType":"YulFunctionCall","src":"6662:38:4"},"nodeType":"YulIf","src":"6659:2:4"}]},"name":"extract_byte_array_length","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"6464:4:4","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"6473:6:4","type":""}],"src":"6429:320:4"},{"body":{"nodeType":"YulBlock","src":"6783:152:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6800:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6803:77:4","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6793:6:4"},"nodeType":"YulFunctionCall","src":"6793:88:4"},"nodeType":"YulExpressionStatement","src":"6793:88:4"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6897:1:4","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"6900:4:4","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6890:6:4"},"nodeType":"YulFunctionCall","src":"6890:15:4"},"nodeType":"YulExpressionStatement","src":"6890:15:4"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6921:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6924:4:4","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6914:6:4"},"nodeType":"YulFunctionCall","src":"6914:15:4"},"nodeType":"YulExpressionStatement","src":"6914:15:4"}]},"name":"panic_error_0x11","nodeType":"YulFunctionDefinition","src":"6755:180:4"},{"body":{"nodeType":"YulBlock","src":"6969:152:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6986:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6989:77:4","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6979:6:4"},"nodeType":"YulFunctionCall","src":"6979:88:4"},"nodeType":"YulExpressionStatement","src":"6979:88:4"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7083:1:4","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"7086:4:4","type":"","value":"0x22"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7076:6:4"},"nodeType":"YulFunctionCall","src":"7076:15:4"},"nodeType":"YulExpressionStatement","src":"7076:15:4"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7107:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7110:4:4","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7100:6:4"},"nodeType":"YulFunctionCall","src":"7100:15:4"},"nodeType":"YulExpressionStatement","src":"7100:15:4"}]},"name":"panic_error_0x22","nodeType":"YulFunctionDefinition","src":"6941:180:4"},{"body":{"nodeType":"YulBlock","src":"7175:54:4","statements":[{"nodeType":"YulAssignment","src":"7185:38:4","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"7203:5:4"},{"kind":"number","nodeType":"YulLiteral","src":"7210:2:4","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7199:3:4"},"nodeType":"YulFunctionCall","src":"7199:14:4"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7219:2:4","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"7215:3:4"},"nodeType":"YulFunctionCall","src":"7215:7:4"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7195:3:4"},"nodeType":"YulFunctionCall","src":"7195:28:4"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"7185:6:4"}]}]},"name":"round_up_to_mul_of_32","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"7158:5:4","type":""}],"returnVariables":[{"name":"result","nodeType":"YulTypedName","src":"7168:6:4","type":""}],"src":"7127:102:4"},{"body":{"nodeType":"YulBlock","src":"7341:66:4","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7363:6:4"},{"kind":"number","nodeType":"YulLiteral","src":"7371:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7359:3:4"},"nodeType":"YulFunctionCall","src":"7359:14:4"},{"kind":"string","nodeType":"YulLiteral","src":"7375:24:4","type":"","value":"Insufficient allowance"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7352:6:4"},"nodeType":"YulFunctionCall","src":"7352:48:4"},"nodeType":"YulExpressionStatement","src":"7352:48:4"}]},"name":"store_literal_in_memory_45e3d26e36c3151c7f92a1eee9add9658cbb8e14605ee2452ec007389b9744bc","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"7333:6:4","type":""}],"src":"7235:172:4"},{"body":{"nodeType":"YulBlock","src":"7519:69:4","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7541:6:4"},{"kind":"number","nodeType":"YulLiteral","src":"7549:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7537:3:4"},"nodeType":"YulFunctionCall","src":"7537:14:4"},{"kind":"string","nodeType":"YulLiteral","src":"7553:27:4","type":"","value":"Transferred value is zero"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7530:6:4"},"nodeType":"YulFunctionCall","src":"7530:51:4"},"nodeType":"YulExpressionStatement","src":"7530:51:4"}]},"name":"store_literal_in_memory_4ca3cd75a1831a94a24913bfd2c9b9d35acbb11ac3447f65bb0682cf14f63f5c","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"7511:6:4","type":""}],"src":"7413:175:4"},{"body":{"nodeType":"YulBlock","src":"7637:79:4","statements":[{"body":{"nodeType":"YulBlock","src":"7694:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7703:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7706:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7696:6:4"},"nodeType":"YulFunctionCall","src":"7696:12:4"},"nodeType":"YulExpressionStatement","src":"7696:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"7660:5:4"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"7685:5:4"}],"functionName":{"name":"cleanup_t_address","nodeType":"YulIdentifier","src":"7667:17:4"},"nodeType":"YulFunctionCall","src":"7667:24:4"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"7657:2:4"},"nodeType":"YulFunctionCall","src":"7657:35:4"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"7650:6:4"},"nodeType":"YulFunctionCall","src":"7650:43:4"},"nodeType":"YulIf","src":"7647:2:4"}]},"name":"validator_revert_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"7630:5:4","type":""}],"src":"7594:122:4"},{"body":{"nodeType":"YulBlock","src":"7765:79:4","statements":[{"body":{"nodeType":"YulBlock","src":"7822:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7831:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7834:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7824:6:4"},"nodeType":"YulFunctionCall","src":"7824:12:4"},"nodeType":"YulExpressionStatement","src":"7824:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"7788:5:4"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"7813:5:4"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"7795:17:4"},"nodeType":"YulFunctionCall","src":"7795:24:4"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"7785:2:4"},"nodeType":"YulFunctionCall","src":"7785:35:4"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"7778:6:4"},"nodeType":"YulFunctionCall","src":"7778:43:4"},"nodeType":"YulIf","src":"7775:2:4"}]},"name":"validator_revert_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"7758:5:4","type":""}],"src":"7722:122:4"}]},"contents":"{\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_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_addresst_address(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(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2 {\n if slt(sub(dataEnd, headStart), 96) { 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 let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_addresst_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(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_encode_t_bool_to_t_bool_fromStack(value, pos) {\n mstore(pos, cleanup_t_bool(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_45e3d26e36c3151c7f92a1eee9add9658cbb8e14605ee2452ec007389b9744bc_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 22)\n store_literal_in_memory_45e3d26e36c3151c7f92a1eee9add9658cbb8e14605ee2452ec007389b9744bc(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_t_stringliteral_4ca3cd75a1831a94a24913bfd2c9b9d35acbb11ac3447f65bb0682cf14f63f5c_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 25)\n store_literal_in_memory_4ca3cd75a1831a94a24913bfd2c9b9d35acbb11ac3447f65bb0682cf14f63f5c(pos)\n end := add(pos, 32)\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_bool__to_t_bool__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_bool_to_t_bool_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_45e3d26e36c3151c7f92a1eee9add9658cbb8e14605ee2452ec007389b9744bc__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_45e3d26e36c3151c7f92a1eee9add9658cbb8e14605ee2452ec007389b9744bc_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function abi_encode_tuple_t_stringliteral_4ca3cd75a1831a94a24913bfd2c9b9d35acbb11ac3447f65bb0682cf14f63f5c__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_4ca3cd75a1831a94a24913bfd2c9b9d35acbb11ac3447f65bb0682cf14f63f5c_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 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_bool(value) -> cleaned {\n cleaned := iszero(iszero(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_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 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 round_up_to_mul_of_32(value) -> result {\n result := and(add(value, 31), not(31))\n }\n\n function store_literal_in_memory_45e3d26e36c3151c7f92a1eee9add9658cbb8e14605ee2452ec007389b9744bc(memPtr) {\n\n mstore(add(memPtr, 0), \"Insufficient allowance\")\n\n }\n\n function store_literal_in_memory_4ca3cd75a1831a94a24913bfd2c9b9d35acbb11ac3447f65bb0682cf14f63f5c(memPtr) {\n\n mstore(add(memPtr, 0), \"Transferred value is zero\")\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_uint256(value) {\n if iszero(eq(value, cleanup_t_uint256(value))) { revert(0, 0) }\n }\n\n}\n","id":4,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100935760003560e01c8063313ce56711610066578063313ce5671461013457806370a082311461015257806395d89b4114610182578063a9059cbb146101a0578063dd62ed3e146101d057610093565b806306fdde0314610098578063095ea7b3146100b657806318160ddd146100e657806323b872dd14610104575b600080fd5b6100a0610200565b6040516100ad91906108b8565b60405180910390f35b6100d060048036038101906100cb91906107c4565b61028e565b6040516100dd919061089d565b60405180910390f35b6100ee61031b565b6040516100fb919061091a565b60405180910390f35b61011e60048036038101906101199190610775565b610321565b60405161012b919061089d565b60405180910390f35b61013c6104b9565b604051610149919061091a565b60405180910390f35b61016c60048036038101906101679190610710565b6104bf565b604051610179919061091a565b60405180910390f35b61018a6104d7565b60405161019791906108b8565b60405180910390f35b6101ba60048036038101906101b591906107c4565b610565565b6040516101c7919061089d565b60405180910390f35b6101ea60048036038101906101e59190610739565b61065f565b6040516101f7919061091a565b60405180910390f35b6004805461020d90610a56565b80601f016020809104026020016040519081016040528092919081815260200182805461023990610a56565b80156102865780601f1061025b57610100808354040283529160200191610286565b820191906000526020600020905b81548152906001019060200180831161026957829003601f168201915b505050505081565b600081600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001905092915050565b60015481565b60008161032e853361065f565b101561036f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610366906108da565b60405180910390fd5b81600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546103fb91906109a7565b9250508190555081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461045191906109a7565b9250508190555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546104a79190610951565b92505081905550600190509392505050565b60005481565b60026020528060005260406000206000915090505481565b600580546104e490610a56565b80601f016020809104026020016040519081016040528092919081815260200182805461051090610a56565b801561055d5780601f106105325761010080835404028352916020019161055d565b820191906000526020600020905b81548152906001019060200180831161054057829003601f168201915b505050505081565b60008082116105a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105a0906108fa565b60405180910390fd5b81600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546105f891906109a7565b9250508190555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461064e9190610951565b925050819055506001905092915050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000813590506106f581610b49565b92915050565b60008135905061070a81610b60565b92915050565b60006020828403121561072257600080fd5b6000610730848285016106e6565b91505092915050565b6000806040838503121561074c57600080fd5b600061075a858286016106e6565b925050602061076b858286016106e6565b9150509250929050565b60008060006060848603121561078a57600080fd5b6000610798868287016106e6565b93505060206107a9868287016106e6565b92505060406107ba868287016106fb565b9150509250925092565b600080604083850312156107d757600080fd5b60006107e5858286016106e6565b92505060206107f6858286016106fb565b9150509250929050565b610809816109ed565b82525050565b600061081a82610935565b6108248185610940565b9350610834818560208601610a23565b61083d81610ae6565b840191505092915050565b6000610855601683610940565b915061086082610af7565b602082019050919050565b6000610878601983610940565b915061088382610b20565b602082019050919050565b61089781610a19565b82525050565b60006020820190506108b26000830184610800565b92915050565b600060208201905081810360008301526108d2818461080f565b905092915050565b600060208201905081810360008301526108f381610848565b9050919050565b600060208201905081810360008301526109138161086b565b9050919050565b600060208201905061092f600083018461088e565b92915050565b600081519050919050565b600082825260208201905092915050565b600061095c82610a19565b915061096783610a19565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561099c5761099b610a88565b5b828201905092915050565b60006109b282610a19565b91506109bd83610a19565b9250828210156109d0576109cf610a88565b5b828203905092915050565b60006109e6826109f9565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b83811015610a41578082015181840152602081019050610a26565b83811115610a50576000848401525b50505050565b60006002820490506001821680610a6e57607f821691505b60208210811415610a8257610a81610ab7565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f496e73756666696369656e7420616c6c6f77616e636500000000000000000000600082015250565b7f5472616e736665727265642076616c7565206973207a65726f00000000000000600082015250565b610b52816109db565b8114610b5d57600080fd5b50565b610b6981610a19565b8114610b7457600080fd5b5056fea26469706673582212208ce961870c9d6cd505270df5da0c70d49a8f6cb7e04d5a03b16637783be136e764736f6c63430008040033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x93 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x313CE567 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x134 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x152 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x182 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x1A0 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x1D0 JUMPI PUSH2 0x93 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x98 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0xB6 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0xE6 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x104 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA0 PUSH2 0x200 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xAD SWAP2 SWAP1 PUSH2 0x8B8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xD0 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xCB SWAP2 SWAP1 PUSH2 0x7C4 JUMP JUMPDEST PUSH2 0x28E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xDD SWAP2 SWAP1 PUSH2 0x89D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xEE PUSH2 0x31B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xFB SWAP2 SWAP1 PUSH2 0x91A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x11E PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x119 SWAP2 SWAP1 PUSH2 0x775 JUMP JUMPDEST PUSH2 0x321 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x12B SWAP2 SWAP1 PUSH2 0x89D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x13C PUSH2 0x4B9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x149 SWAP2 SWAP1 PUSH2 0x91A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x16C PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x167 SWAP2 SWAP1 PUSH2 0x710 JUMP JUMPDEST PUSH2 0x4BF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x179 SWAP2 SWAP1 PUSH2 0x91A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x18A PUSH2 0x4D7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x197 SWAP2 SWAP1 PUSH2 0x8B8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1BA PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1B5 SWAP2 SWAP1 PUSH2 0x7C4 JUMP JUMPDEST PUSH2 0x565 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1C7 SWAP2 SWAP1 PUSH2 0x89D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1EA PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1E5 SWAP2 SWAP1 PUSH2 0x739 JUMP JUMPDEST PUSH2 0x65F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1F7 SWAP2 SWAP1 PUSH2 0x91A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH2 0x20D SWAP1 PUSH2 0xA56 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 0x239 SWAP1 PUSH2 0xA56 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x286 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x25B JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x286 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 0x269 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x3 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 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP PUSH1 0x1 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x32E DUP6 CALLER PUSH2 0x65F JUMP JUMPDEST LT ISZERO PUSH2 0x36F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x366 SWAP1 PUSH2 0x8DA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 PUSH1 0x3 PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 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 0x3FB SWAP2 SWAP1 PUSH2 0x9A7 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x2 PUSH1 0x0 DUP7 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 0x451 SWAP2 SWAP1 PUSH2 0x9A7 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x2 PUSH1 0x0 DUP6 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 0x4A7 SWAP2 SWAP1 PUSH2 0x951 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH1 0x1 SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD 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 0x5 DUP1 SLOAD PUSH2 0x4E4 SWAP1 PUSH2 0xA56 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 0x510 SWAP1 PUSH2 0xA56 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x55D JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x532 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x55D 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 0x540 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 GT PUSH2 0x5A9 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5A0 SWAP1 PUSH2 0x8FA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 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 0x5F8 SWAP2 SWAP1 PUSH2 0x9A7 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x2 PUSH1 0x0 DUP6 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 0x64E SWAP2 SWAP1 PUSH2 0x951 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH1 0x1 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x3 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x6F5 DUP2 PUSH2 0xB49 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x70A DUP2 PUSH2 0xB60 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x722 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x730 DUP5 DUP3 DUP6 ADD PUSH2 0x6E6 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x74C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x75A DUP6 DUP3 DUP7 ADD PUSH2 0x6E6 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x76B DUP6 DUP3 DUP7 ADD PUSH2 0x6E6 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x78A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x798 DUP7 DUP3 DUP8 ADD PUSH2 0x6E6 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x7A9 DUP7 DUP3 DUP8 ADD PUSH2 0x6E6 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x7BA DUP7 DUP3 DUP8 ADD PUSH2 0x6FB JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x7D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x7E5 DUP6 DUP3 DUP7 ADD PUSH2 0x6E6 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x7F6 DUP6 DUP3 DUP7 ADD PUSH2 0x6FB JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH2 0x809 DUP2 PUSH2 0x9ED JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x81A DUP3 PUSH2 0x935 JUMP JUMPDEST PUSH2 0x824 DUP2 DUP6 PUSH2 0x940 JUMP JUMPDEST SWAP4 POP PUSH2 0x834 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0xA23 JUMP JUMPDEST PUSH2 0x83D DUP2 PUSH2 0xAE6 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x855 PUSH1 0x16 DUP4 PUSH2 0x940 JUMP JUMPDEST SWAP2 POP PUSH2 0x860 DUP3 PUSH2 0xAF7 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x878 PUSH1 0x19 DUP4 PUSH2 0x940 JUMP JUMPDEST SWAP2 POP PUSH2 0x883 DUP3 PUSH2 0xB20 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x897 DUP2 PUSH2 0xA19 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x8B2 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x800 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 0x8D2 DUP2 DUP5 PUSH2 0x80F 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 0x8F3 DUP2 PUSH2 0x848 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 0x913 DUP2 PUSH2 0x86B JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x92F PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x88E JUMP JUMPDEST SWAP3 SWAP2 POP 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 0x95C DUP3 PUSH2 0xA19 JUMP JUMPDEST SWAP2 POP PUSH2 0x967 DUP4 PUSH2 0xA19 JUMP JUMPDEST SWAP3 POP DUP3 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SUB DUP3 GT ISZERO PUSH2 0x99C JUMPI PUSH2 0x99B PUSH2 0xA88 JUMP JUMPDEST JUMPDEST DUP3 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9B2 DUP3 PUSH2 0xA19 JUMP JUMPDEST SWAP2 POP PUSH2 0x9BD DUP4 PUSH2 0xA19 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 LT ISZERO PUSH2 0x9D0 JUMPI PUSH2 0x9CF PUSH2 0xA88 JUMP JUMPDEST JUMPDEST DUP3 DUP3 SUB SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9E6 DUP3 PUSH2 0x9F9 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO ISZERO 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 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xA41 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0xA26 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0xA50 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 0xA6E JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 EQ ISZERO PUSH2 0xA82 JUMPI PUSH2 0xA81 PUSH2 0xAB7 JUMP JUMPDEST JUMPDEST POP SWAP2 SWAP1 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 PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x496E73756666696369656E7420616C6C6F77616E636500000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH32 0x5472616E736665727265642076616C7565206973207A65726F00000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH2 0xB52 DUP2 PUSH2 0x9DB JUMP JUMPDEST DUP2 EQ PUSH2 0xB5D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0xB69 DUP2 PUSH2 0xA19 JUMP JUMPDEST DUP2 EQ PUSH2 0xB74 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP13 0xE9 PUSH2 0x870C SWAP14 PUSH13 0xD505270DF5DA0C70D49A8F6CB7 0xE0 0x4D GAS SUB 0xB1 PUSH7 0x37783BE136E764 PUSH20 0x6F6C634300080400330000000000000000000000 ","sourceMap":"1241:119:3:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1293:32;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;703:146;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;125:23;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;853:287;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;96:24;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;152:41;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1329:28;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;355:205;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;564:135;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1293:32;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;703:146::-;768:12;822:5;788:10;:22;799:10;788:22;;;;;;;;;;;;;;;:31;811:7;788:31;;;;;;;;;;;;;;;:39;;;;840:4;833:11;;703:146;;;;:::o;125:23::-;;;;:::o;853:287::-;932:4;983:5;952:27;962:4;968:10;952:9;:27::i;:::-;:36;;944:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;1054:5;1022:10;:16;1033:4;1022:16;;;;;;;;;;;;;;;:28;1039:10;1022:28;;;;;;;;;;;;;;;;:37;;;;;;;:::i;:::-;;;;;;;;1084:5;1065:9;:15;1075:4;1065:15;;;;;;;;;;;;;;;;:24;;;;;;;:::i;:::-;;;;;;;;1112:5;1095:9;:13;1105:2;1095:13;;;;;;;;;;;;;;;;:22;;;;;;;:::i;:::-;;;;;;;;1131:4;1124:11;;853:287;;;;;:::o;96:24::-;;;;:::o;152:41::-;;;;;;;;;;;;;;;;;:::o;1329:28::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;355:205::-;413:4;441:1;433:5;:9;425:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;504:5;479:9;:21;489:10;479:21;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;532:5;515:9;:13;525:2;515:13;;;;;;;;;;;;;;;;:22;;;;;;;:::i;:::-;;;;;;;;551:4;544:11;;355:205;;;;:::o;564:135::-;636:17;668:10;:17;679:5;668:17;;;;;;;;;;;;;;;:26;686:7;668:26;;;;;;;;;;;;;;;;661:33;;564:135;;;;:::o;7:139:4:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:139::-;198:5;236:6;223:20;214:29;;252:33;279:5;252:33;:::i;:::-;204:87;;;;:::o;297:262::-;356:6;405:2;393:9;384:7;380:23;376:32;373:2;;;421:1;418;411:12;373:2;464:1;489:53;534:7;525:6;514:9;510:22;489:53;:::i;:::-;479:63;;435:117;363:196;;;;:::o;565:407::-;633:6;641;690:2;678:9;669:7;665:23;661:32;658:2;;;706:1;703;696:12;658:2;749:1;774:53;819:7;810:6;799:9;795:22;774:53;:::i;:::-;764:63;;720:117;876:2;902:53;947:7;938:6;927:9;923:22;902:53;:::i;:::-;892:63;;847:118;648:324;;;;;:::o;978:552::-;1055:6;1063;1071;1120:2;1108:9;1099:7;1095:23;1091:32;1088:2;;;1136:1;1133;1126:12;1088:2;1179:1;1204:53;1249:7;1240:6;1229:9;1225:22;1204:53;:::i;:::-;1194:63;;1150:117;1306:2;1332:53;1377:7;1368:6;1357:9;1353:22;1332:53;:::i;:::-;1322:63;;1277:118;1434:2;1460:53;1505:7;1496:6;1485:9;1481:22;1460:53;:::i;:::-;1450:63;;1405:118;1078:452;;;;;:::o;1536:407::-;1604:6;1612;1661:2;1649:9;1640:7;1636:23;1632:32;1629:2;;;1677:1;1674;1667:12;1629:2;1720:1;1745:53;1790:7;1781:6;1770:9;1766:22;1745:53;:::i;:::-;1735:63;;1691:117;1847:2;1873:53;1918:7;1909:6;1898:9;1894:22;1873:53;:::i;:::-;1863:63;;1818:118;1619:324;;;;;:::o;1949:109::-;2030:21;2045:5;2030:21;:::i;:::-;2025:3;2018:34;2008:50;;:::o;2064:364::-;2152:3;2180:39;2213:5;2180:39;:::i;:::-;2235:71;2299:6;2294:3;2235:71;:::i;:::-;2228:78;;2315:52;2360:6;2355:3;2348:4;2341:5;2337:16;2315:52;:::i;:::-;2392:29;2414:6;2392:29;:::i;:::-;2387:3;2383:39;2376:46;;2156:272;;;;;:::o;2434:366::-;2576:3;2597:67;2661:2;2656:3;2597:67;:::i;:::-;2590:74;;2673:93;2762:3;2673:93;:::i;:::-;2791:2;2786:3;2782:12;2775:19;;2580:220;;;:::o;2806:366::-;2948:3;2969:67;3033:2;3028:3;2969:67;:::i;:::-;2962:74;;3045:93;3134:3;3045:93;:::i;:::-;3163:2;3158:3;3154:12;3147:19;;2952:220;;;:::o;3178:118::-;3265:24;3283:5;3265:24;:::i;:::-;3260:3;3253:37;3243:53;;:::o;3302:210::-;3389:4;3427:2;3416:9;3412:18;3404:26;;3440:65;3502:1;3491:9;3487:17;3478:6;3440:65;:::i;:::-;3394:118;;;;:::o;3518:313::-;3631:4;3669:2;3658:9;3654:18;3646:26;;3718:9;3712:4;3708:20;3704:1;3693:9;3689:17;3682:47;3746:78;3819:4;3810:6;3746:78;:::i;:::-;3738:86;;3636:195;;;;:::o;3837:419::-;4003:4;4041:2;4030:9;4026:18;4018:26;;4090:9;4084:4;4080:20;4076:1;4065:9;4061:17;4054:47;4118:131;4244:4;4118:131;:::i;:::-;4110:139;;4008:248;;;:::o;4262:419::-;4428:4;4466:2;4455:9;4451:18;4443:26;;4515:9;4509:4;4505:20;4501:1;4490:9;4486:17;4479:47;4543:131;4669:4;4543:131;:::i;:::-;4535:139;;4433:248;;;:::o;4687:222::-;4780:4;4818:2;4807:9;4803:18;4795:26;;4831:71;4899:1;4888:9;4884:17;4875:6;4831:71;:::i;:::-;4785:124;;;;:::o;4915:99::-;4967:6;5001:5;4995:12;4985:22;;4974:40;;;:::o;5020:169::-;5104:11;5138:6;5133:3;5126:19;5178:4;5173:3;5169:14;5154:29;;5116:73;;;;:::o;5195:305::-;5235:3;5254:20;5272:1;5254:20;:::i;:::-;5249:25;;5288:20;5306:1;5288:20;:::i;:::-;5283:25;;5442:1;5374:66;5370:74;5367:1;5364:81;5361:2;;;5448:18;;:::i;:::-;5361:2;5492:1;5489;5485:9;5478:16;;5239:261;;;;:::o;5506:191::-;5546:4;5566:20;5584:1;5566:20;:::i;:::-;5561:25;;5600:20;5618:1;5600:20;:::i;:::-;5595:25;;5639:1;5636;5633:8;5630:2;;;5644:18;;:::i;:::-;5630:2;5689:1;5686;5682:9;5674:17;;5551:146;;;;:::o;5703:96::-;5740:7;5769:24;5787:5;5769:24;:::i;:::-;5758:35;;5748:51;;;:::o;5805:90::-;5839:7;5882:5;5875:13;5868:21;5857:32;;5847:48;;;:::o;5901:126::-;5938:7;5978:42;5971:5;5967:54;5956:65;;5946:81;;;:::o;6033:77::-;6070:7;6099:5;6088:16;;6078:32;;;:::o;6116:307::-;6184:1;6194:113;6208:6;6205:1;6202:13;6194:113;;;6293:1;6288:3;6284:11;6278:18;6274:1;6269:3;6265:11;6258:39;6230:2;6227:1;6223:10;6218:15;;6194:113;;;6325:6;6322:1;6319:13;6316:2;;;6405:1;6396:6;6391:3;6387:16;6380:27;6316:2;6165:258;;;;:::o;6429:320::-;6473:6;6510:1;6504:4;6500:12;6490:22;;6557:1;6551:4;6547:12;6578:18;6568:2;;6634:4;6626:6;6622:17;6612:27;;6568:2;6696;6688:6;6685:14;6665:18;6662:38;6659:2;;;6715:18;;:::i;:::-;6659:2;6480:269;;;;:::o;6755:180::-;6803:77;6800:1;6793:88;6900:4;6897:1;6890:15;6924:4;6921:1;6914:15;6941:180;6989:77;6986:1;6979:88;7086:4;7083:1;7076:15;7110:4;7107:1;7100:15;7127:102;7168:6;7219:2;7215:7;7210:2;7203:5;7199:14;7195:28;7185:38;;7175:54;;;:::o;7235:172::-;7375:24;7371:1;7363:6;7359:14;7352:48;7341:66;:::o;7413:175::-;7553:27;7549:1;7541:6;7537:14;7530:51;7519:69;:::o;7594:122::-;7667:24;7685:5;7667:24;:::i;:::-;7660:5;7657:35;7647:2;;7706:1;7703;7696:12;7647:2;7637:79;:::o;7722:122::-;7795:24;7813:5;7795:24;:::i;:::-;7788:5;7785:35;7775:2;;7834:1;7831;7824:12;7775:2;7765:79;:::o"},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","name()":"06fdde03","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.4+commit.c7e474f2\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"remaining\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/Token.sol\":\"MockToken\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/Token.sol\":{\"keccak256\":\"0x3c98df2a7295115a107e950c40733f37ce5384cf18a0b5efb948ccf6d1acaa59\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://21c0d9ad7fee4c50e057a477ec0c151985566e51e1df46d3dc42f4320eceeccf\",\"dweb:/ipfs/QmSVvnCWd9MH3F93atgJGuwbHMJpifnoMLSosQsZUKUrZ8\"]}},\"version\":1}"},"NotAToken":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"6080604052348015600f57600080fd5b50603f80601d6000396000f3fe6080604052600080fdfea26469706673582212209449725821c33b87347a40f451b2c6483bf5505349fe39bcd25604669e50f33364736f6c63430008040033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x3F DUP1 PUSH1 0x1D PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP5 0x49 PUSH19 0x5821C33B87347A40F451B2C6483BF5505349FE CODECOPY 0xBC 0xD2 JUMP DIV PUSH7 0x9E50F33364736F PUSH13 0x63430008040033000000000000 ","sourceMap":"1362:21:3:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"6080604052600080fdfea26469706673582212209449725821c33b87347a40f451b2c6483bf5505349fe39bcd25604669e50f33364736f6c63430008040033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP5 0x49 PUSH19 0x5821C33B87347A40F451B2C6483BF5505349FE CODECOPY 0xBC 0xD2 JUMP DIV PUSH7 0x9E50F33364736F PUSH13 0x63430008040033000000000000 ","sourceMap":"1362:21:3:-:0;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.4+commit.c7e474f2\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/Token.sol\":\"NotAToken\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/Token.sol\":{\"keccak256\":\"0x3c98df2a7295115a107e950c40733f37ce5384cf18a0b5efb948ccf6d1acaa59\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://21c0d9ad7fee4c50e057a477ec0c151985566e51e1df46d3dc42f4320eceeccf\",\"dweb:/ipfs/QmSVvnCWd9MH3F93atgJGuwbHMJpifnoMLSosQsZUKUrZ8\"]}},\"version\":1}"},"TokenWithOnlyName":{"abi":[{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"remaining","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:516:4","statements":[{"body":{"nodeType":"YulBlock","src":"58:269:4","statements":[{"nodeType":"YulAssignment","src":"68:22:4","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"82:4:4"},{"kind":"number","nodeType":"YulLiteral","src":"88:1:4","type":"","value":"2"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"78:3:4"},"nodeType":"YulFunctionCall","src":"78:12:4"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"68:6:4"}]},{"nodeType":"YulVariableDeclaration","src":"99:38:4","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"129:4:4"},{"kind":"number","nodeType":"YulLiteral","src":"135:1:4","type":"","value":"1"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"125:3:4"},"nodeType":"YulFunctionCall","src":"125:12:4"},"variables":[{"name":"outOfPlaceEncoding","nodeType":"YulTypedName","src":"103:18:4","type":""}]},{"body":{"nodeType":"YulBlock","src":"176:51:4","statements":[{"nodeType":"YulAssignment","src":"190:27:4","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"204:6:4"},{"kind":"number","nodeType":"YulLiteral","src":"212:4:4","type":"","value":"0x7f"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"200:3:4"},"nodeType":"YulFunctionCall","src":"200:17:4"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"190:6:4"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"156:18:4"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"149:6:4"},"nodeType":"YulFunctionCall","src":"149:26:4"},"nodeType":"YulIf","src":"146:2:4"},{"body":{"nodeType":"YulBlock","src":"279:42:4","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x22","nodeType":"YulIdentifier","src":"293:16:4"},"nodeType":"YulFunctionCall","src":"293:18:4"},"nodeType":"YulExpressionStatement","src":"293:18:4"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"243:18:4"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"266:6:4"},{"kind":"number","nodeType":"YulLiteral","src":"274:2:4","type":"","value":"32"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"263:2:4"},"nodeType":"YulFunctionCall","src":"263:14:4"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"240:2:4"},"nodeType":"YulFunctionCall","src":"240:38:4"},"nodeType":"YulIf","src":"237:2:4"}]},"name":"extract_byte_array_length","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"42:4:4","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"51:6:4","type":""}],"src":"7:320:4"},{"body":{"nodeType":"YulBlock","src":"361:152:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"378:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"381:77:4","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"371:6:4"},"nodeType":"YulFunctionCall","src":"371:88:4"},"nodeType":"YulExpressionStatement","src":"371:88:4"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"475:1:4","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"478:4:4","type":"","value":"0x22"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"468:6:4"},"nodeType":"YulFunctionCall","src":"468:15:4"},"nodeType":"YulExpressionStatement","src":"468:15:4"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"499:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"502:4:4","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"492:6:4"},"nodeType":"YulFunctionCall","src":"492:15:4"},"nodeType":"YulExpressionStatement","src":"492:15:4"}]},"name":"panic_error_0x22","nodeType":"YulFunctionDefinition","src":"333:180:4"}]},"contents":"{\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 panic_error_0x22() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n\n}\n","id":4,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"608060405260016000556040518060400160405280600981526020017f4d6f636b546f6b656e0000000000000000000000000000000000000000000000815250600490805190602001906100549291906100b8565b5034801561006157600080fd5b50633b9aca00600181905550600154600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506101bc565b8280546100c49061015b565b90600052602060002090601f0160209004810192826100e6576000855561012d565b82601f106100ff57805160ff191683800117855561012d565b8280016001018555821561012d579182015b8281111561012c578251825591602001919060010190610111565b5b50905061013a919061013e565b5090565b5b8082111561015757600081600090555060010161013f565b5090565b6000600282049050600182168061017357607f821691505b602082108114156101875761018661018d565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b610af6806101cb6000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063313ce5671161005b578063313ce5671461012957806370a0823114610147578063a9059cbb14610177578063dd62ed3e146101a757610088565b806306fdde031461008d578063095ea7b3146100ab57806318160ddd146100db57806323b872dd146100f9575b600080fd5b6100956101d7565b6040516100a29190610801565b60405180910390f35b6100c560048036038101906100c0919061070d565b610265565b6040516100d291906107e6565b60405180910390f35b6100e36102f2565b6040516100f09190610863565b60405180910390f35b610113600480360381019061010e91906106be565b6102f8565b60405161012091906107e6565b60405180910390f35b610131610490565b60405161013e9190610863565b60405180910390f35b610161600480360381019061015c9190610659565b610496565b60405161016e9190610863565b60405180910390f35b610191600480360381019061018c919061070d565b6104ae565b60405161019e91906107e6565b60405180910390f35b6101c160048036038101906101bc9190610682565b6105a8565b6040516101ce9190610863565b60405180910390f35b600480546101e49061099f565b80601f01602080910402602001604051908101604052809291908181526020018280546102109061099f565b801561025d5780601f106102325761010080835404028352916020019161025d565b820191906000526020600020905b81548152906001019060200180831161024057829003601f168201915b505050505081565b600081600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001905092915050565b60015481565b60008161030585336105a8565b1015610346576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161033d90610823565b60405180910390fd5b81600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546103d291906108f0565b9250508190555081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461042891906108f0565b9250508190555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461047e919061089a565b92505081905550600190509392505050565b60005481565b60026020528060005260406000206000915090505481565b60008082116104f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104e990610843565b60405180910390fd5b81600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461054191906108f0565b9250508190555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610597919061089a565b925050819055506001905092915050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008135905061063e81610a92565b92915050565b60008135905061065381610aa9565b92915050565b60006020828403121561066b57600080fd5b60006106798482850161062f565b91505092915050565b6000806040838503121561069557600080fd5b60006106a38582860161062f565b92505060206106b48582860161062f565b9150509250929050565b6000806000606084860312156106d357600080fd5b60006106e18682870161062f565b93505060206106f28682870161062f565b925050604061070386828701610644565b9150509250925092565b6000806040838503121561072057600080fd5b600061072e8582860161062f565b925050602061073f85828601610644565b9150509250929050565b61075281610936565b82525050565b60006107638261087e565b61076d8185610889565b935061077d81856020860161096c565b61078681610a2f565b840191505092915050565b600061079e601683610889565b91506107a982610a40565b602082019050919050565b60006107c1601983610889565b91506107cc82610a69565b602082019050919050565b6107e081610962565b82525050565b60006020820190506107fb6000830184610749565b92915050565b6000602082019050818103600083015261081b8184610758565b905092915050565b6000602082019050818103600083015261083c81610791565b9050919050565b6000602082019050818103600083015261085c816107b4565b9050919050565b600060208201905061087860008301846107d7565b92915050565b600081519050919050565b600082825260208201905092915050565b60006108a582610962565b91506108b083610962565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156108e5576108e46109d1565b5b828201905092915050565b60006108fb82610962565b915061090683610962565b925082821015610919576109186109d1565b5b828203905092915050565b600061092f82610942565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b8381101561098a57808201518184015260208101905061096f565b83811115610999576000848401525b50505050565b600060028204905060018216806109b757607f821691505b602082108114156109cb576109ca610a00565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f496e73756666696369656e7420616c6c6f77616e636500000000000000000000600082015250565b7f5472616e736665727265642076616c7565206973207a65726f00000000000000600082015250565b610a9b81610924565b8114610aa657600080fd5b50565b610ab281610962565b8114610abd57600080fd5b5056fea2646970667358221220a6fcd04aa893368d0e3e9a004a848844c520623183d6b2111fbc6f837204d0fa64736f6c63430008040033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x1 PUSH1 0x0 SSTORE PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x9 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x4D6F636B546F6B656E0000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x4 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0x54 SWAP3 SWAP2 SWAP1 PUSH2 0xB8 JUMP JUMPDEST POP CALLVALUE DUP1 ISZERO PUSH2 0x61 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH4 0x3B9ACA00 PUSH1 0x1 DUP2 SWAP1 SSTORE POP PUSH1 0x1 SLOAD 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 DUP2 SWAP1 SSTORE POP PUSH2 0x1BC JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH2 0xC4 SWAP1 PUSH2 0x15B JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH2 0xE6 JUMPI PUSH1 0x0 DUP6 SSTORE PUSH2 0x12D JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH2 0xFF JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x12D JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x12D JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x12C JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x111 JUMP JUMPDEST JUMPDEST POP SWAP1 POP PUSH2 0x13A SWAP2 SWAP1 PUSH2 0x13E JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x157 JUMPI PUSH1 0x0 DUP2 PUSH1 0x0 SWAP1 SSTORE POP PUSH1 0x1 ADD PUSH2 0x13F JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x2 DUP3 DIV SWAP1 POP PUSH1 0x1 DUP3 AND DUP1 PUSH2 0x173 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 EQ ISZERO PUSH2 0x187 JUMPI PUSH2 0x186 PUSH2 0x18D JUMP JUMPDEST JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH2 0xAF6 DUP1 PUSH2 0x1CB PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x88 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x313CE567 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x129 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x147 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x177 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x1A7 JUMPI PUSH2 0x88 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x8D JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0xAB JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0xDB JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0xF9 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x95 PUSH2 0x1D7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xA2 SWAP2 SWAP1 PUSH2 0x801 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xC5 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xC0 SWAP2 SWAP1 PUSH2 0x70D JUMP JUMPDEST PUSH2 0x265 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xD2 SWAP2 SWAP1 PUSH2 0x7E6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xE3 PUSH2 0x2F2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xF0 SWAP2 SWAP1 PUSH2 0x863 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x113 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x10E SWAP2 SWAP1 PUSH2 0x6BE JUMP JUMPDEST PUSH2 0x2F8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x120 SWAP2 SWAP1 PUSH2 0x7E6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x131 PUSH2 0x490 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x13E SWAP2 SWAP1 PUSH2 0x863 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x161 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x15C SWAP2 SWAP1 PUSH2 0x659 JUMP JUMPDEST PUSH2 0x496 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x16E SWAP2 SWAP1 PUSH2 0x863 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x191 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x18C SWAP2 SWAP1 PUSH2 0x70D JUMP JUMPDEST PUSH2 0x4AE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x19E SWAP2 SWAP1 PUSH2 0x7E6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1C1 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1BC SWAP2 SWAP1 PUSH2 0x682 JUMP JUMPDEST PUSH2 0x5A8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1CE SWAP2 SWAP1 PUSH2 0x863 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH2 0x1E4 SWAP1 PUSH2 0x99F 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 0x210 SWAP1 PUSH2 0x99F JUMP JUMPDEST DUP1 ISZERO PUSH2 0x25D JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x232 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x25D 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 0x240 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x3 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 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP PUSH1 0x1 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x305 DUP6 CALLER PUSH2 0x5A8 JUMP JUMPDEST LT ISZERO PUSH2 0x346 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x33D SWAP1 PUSH2 0x823 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 PUSH1 0x3 PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 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 0x3D2 SWAP2 SWAP1 PUSH2 0x8F0 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x2 PUSH1 0x0 DUP7 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 0x428 SWAP2 SWAP1 PUSH2 0x8F0 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x2 PUSH1 0x0 DUP6 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 0x47E SWAP2 SWAP1 PUSH2 0x89A JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH1 0x1 SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD 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 DUP3 GT PUSH2 0x4F2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4E9 SWAP1 PUSH2 0x843 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 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 0x541 SWAP2 SWAP1 PUSH2 0x8F0 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x2 PUSH1 0x0 DUP6 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 0x597 SWAP2 SWAP1 PUSH2 0x89A JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH1 0x1 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x3 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x63E DUP2 PUSH2 0xA92 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x653 DUP2 PUSH2 0xAA9 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x66B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x679 DUP5 DUP3 DUP6 ADD PUSH2 0x62F JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x695 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x6A3 DUP6 DUP3 DUP7 ADD PUSH2 0x62F JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x6B4 DUP6 DUP3 DUP7 ADD PUSH2 0x62F JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x6D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x6E1 DUP7 DUP3 DUP8 ADD PUSH2 0x62F JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x6F2 DUP7 DUP3 DUP8 ADD PUSH2 0x62F JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x703 DUP7 DUP3 DUP8 ADD PUSH2 0x644 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x720 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x72E DUP6 DUP3 DUP7 ADD PUSH2 0x62F JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x73F DUP6 DUP3 DUP7 ADD PUSH2 0x644 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH2 0x752 DUP2 PUSH2 0x936 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x763 DUP3 PUSH2 0x87E JUMP JUMPDEST PUSH2 0x76D DUP2 DUP6 PUSH2 0x889 JUMP JUMPDEST SWAP4 POP PUSH2 0x77D DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x96C JUMP JUMPDEST PUSH2 0x786 DUP2 PUSH2 0xA2F JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x79E PUSH1 0x16 DUP4 PUSH2 0x889 JUMP JUMPDEST SWAP2 POP PUSH2 0x7A9 DUP3 PUSH2 0xA40 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7C1 PUSH1 0x19 DUP4 PUSH2 0x889 JUMP JUMPDEST SWAP2 POP PUSH2 0x7CC DUP3 PUSH2 0xA69 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x7E0 DUP2 PUSH2 0x962 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x7FB PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x749 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 0x81B DUP2 DUP5 PUSH2 0x758 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 0x83C DUP2 PUSH2 0x791 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 0x85C DUP2 PUSH2 0x7B4 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x878 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x7D7 JUMP JUMPDEST SWAP3 SWAP2 POP 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 0x8A5 DUP3 PUSH2 0x962 JUMP JUMPDEST SWAP2 POP PUSH2 0x8B0 DUP4 PUSH2 0x962 JUMP JUMPDEST SWAP3 POP DUP3 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SUB DUP3 GT ISZERO PUSH2 0x8E5 JUMPI PUSH2 0x8E4 PUSH2 0x9D1 JUMP JUMPDEST JUMPDEST DUP3 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8FB DUP3 PUSH2 0x962 JUMP JUMPDEST SWAP2 POP PUSH2 0x906 DUP4 PUSH2 0x962 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 LT ISZERO PUSH2 0x919 JUMPI PUSH2 0x918 PUSH2 0x9D1 JUMP JUMPDEST JUMPDEST DUP3 DUP3 SUB SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x92F DUP3 PUSH2 0x942 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO ISZERO 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 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x98A JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x96F JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x999 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 0x9B7 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 EQ ISZERO PUSH2 0x9CB JUMPI PUSH2 0x9CA PUSH2 0xA00 JUMP JUMPDEST JUMPDEST POP SWAP2 SWAP1 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 PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x496E73756666696369656E7420616C6C6F77616E636500000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH32 0x5472616E736665727265642076616C7565206973207A65726F00000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH2 0xA9B DUP2 PUSH2 0x924 JUMP JUMPDEST DUP2 EQ PUSH2 0xAA6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0xAB2 DUP2 PUSH2 0x962 JUMP JUMPDEST DUP2 EQ PUSH2 0xABD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xA6 0xFC 0xD0 0x4A 0xA8 SWAP4 CALLDATASIZE DUP14 0xE RETURNDATACOPY SWAP11 STOP 0x4A DUP5 DUP9 DIFFICULTY 0xC5 KECCAK256 PUSH3 0x3183D6 0xB2 GT 0x1F 0xBC PUSH16 0x837204D0FA64736F6C63430008040033 ","sourceMap":"1144:95:3:-:0;;;119:1;96:24;;1204:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1144:95;;;;;;;;;;292:13;278:11;:27;;;;335:11;;311:9;:21;321:10;311:21;;;;;;;;;;;;;;;:35;;;;1144:95;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;7:320:4:-;51:6;88:1;82:4;78:12;68:22;;135:1;129:4;125:12;156:18;146:2;;212:4;204:6;200:17;190:27;;146:2;274;266:6;263:14;243:18;240:38;237:2;;;293:18;;:::i;:::-;237:2;58:269;;;;:::o;333:180::-;381:77;378:1;371:88;478:4;475:1;468:15;502:4;499:1;492:15;1144:95:3;;;;;;;"},"deployedBytecode":{"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:7847:4","statements":[{"body":{"nodeType":"YulBlock","src":"59:87:4","statements":[{"nodeType":"YulAssignment","src":"69:29:4","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"91:6:4"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"78:12:4"},"nodeType":"YulFunctionCall","src":"78:20:4"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"69:5:4"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"134:5:4"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"107:26:4"},"nodeType":"YulFunctionCall","src":"107:33:4"},"nodeType":"YulExpressionStatement","src":"107:33:4"}]},"name":"abi_decode_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"37:6:4","type":""},{"name":"end","nodeType":"YulTypedName","src":"45:3:4","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"53:5:4","type":""}],"src":"7:139:4"},{"body":{"nodeType":"YulBlock","src":"204:87:4","statements":[{"nodeType":"YulAssignment","src":"214:29:4","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"236:6:4"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"223:12:4"},"nodeType":"YulFunctionCall","src":"223:20:4"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"214:5:4"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"279:5:4"}],"functionName":{"name":"validator_revert_t_uint256","nodeType":"YulIdentifier","src":"252:26:4"},"nodeType":"YulFunctionCall","src":"252:33:4"},"nodeType":"YulExpressionStatement","src":"252:33:4"}]},"name":"abi_decode_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"182:6:4","type":""},{"name":"end","nodeType":"YulTypedName","src":"190:3:4","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"198:5:4","type":""}],"src":"152:139:4"},{"body":{"nodeType":"YulBlock","src":"363:196:4","statements":[{"body":{"nodeType":"YulBlock","src":"409:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"418:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"421:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"411:6:4"},"nodeType":"YulFunctionCall","src":"411:12:4"},"nodeType":"YulExpressionStatement","src":"411:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"384:7:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"393:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"380:3:4"},"nodeType":"YulFunctionCall","src":"380:23:4"},{"kind":"number","nodeType":"YulLiteral","src":"405:2:4","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"376:3:4"},"nodeType":"YulFunctionCall","src":"376:32:4"},"nodeType":"YulIf","src":"373:2:4"},{"nodeType":"YulBlock","src":"435:117:4","statements":[{"nodeType":"YulVariableDeclaration","src":"450:15:4","value":{"kind":"number","nodeType":"YulLiteral","src":"464:1:4","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"454:6:4","type":""}]},{"nodeType":"YulAssignment","src":"479:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"514:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"525:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"510:3:4"},"nodeType":"YulFunctionCall","src":"510:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"534:7:4"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"489:20:4"},"nodeType":"YulFunctionCall","src":"489:53:4"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"479:6:4"}]}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"333:9:4","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"344:7:4","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"356:6:4","type":""}],"src":"297:262:4"},{"body":{"nodeType":"YulBlock","src":"648:324:4","statements":[{"body":{"nodeType":"YulBlock","src":"694:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"703:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"706:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"696:6:4"},"nodeType":"YulFunctionCall","src":"696:12:4"},"nodeType":"YulExpressionStatement","src":"696:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"669:7:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"678:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"665:3:4"},"nodeType":"YulFunctionCall","src":"665:23:4"},{"kind":"number","nodeType":"YulLiteral","src":"690:2:4","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"661:3:4"},"nodeType":"YulFunctionCall","src":"661:32:4"},"nodeType":"YulIf","src":"658:2:4"},{"nodeType":"YulBlock","src":"720:117:4","statements":[{"nodeType":"YulVariableDeclaration","src":"735:15:4","value":{"kind":"number","nodeType":"YulLiteral","src":"749:1:4","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"739:6:4","type":""}]},{"nodeType":"YulAssignment","src":"764:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"799:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"810:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"795:3:4"},"nodeType":"YulFunctionCall","src":"795:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"819:7:4"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"774:20:4"},"nodeType":"YulFunctionCall","src":"774:53:4"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"764:6:4"}]}]},{"nodeType":"YulBlock","src":"847:118:4","statements":[{"nodeType":"YulVariableDeclaration","src":"862:16:4","value":{"kind":"number","nodeType":"YulLiteral","src":"876:2:4","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"866:6:4","type":""}]},{"nodeType":"YulAssignment","src":"892:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"927:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"938:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"923:3:4"},"nodeType":"YulFunctionCall","src":"923:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"947:7:4"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"902:20:4"},"nodeType":"YulFunctionCall","src":"902:53:4"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"892:6:4"}]}]}]},"name":"abi_decode_tuple_t_addresst_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"610:9:4","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"621:7:4","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"633:6:4","type":""},{"name":"value1","nodeType":"YulTypedName","src":"641:6:4","type":""}],"src":"565:407:4"},{"body":{"nodeType":"YulBlock","src":"1078:452:4","statements":[{"body":{"nodeType":"YulBlock","src":"1124:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1133:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1136:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1126:6:4"},"nodeType":"YulFunctionCall","src":"1126:12:4"},"nodeType":"YulExpressionStatement","src":"1126:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1099:7:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"1108:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1095:3:4"},"nodeType":"YulFunctionCall","src":"1095:23:4"},{"kind":"number","nodeType":"YulLiteral","src":"1120:2:4","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1091:3:4"},"nodeType":"YulFunctionCall","src":"1091:32:4"},"nodeType":"YulIf","src":"1088:2:4"},{"nodeType":"YulBlock","src":"1150:117:4","statements":[{"nodeType":"YulVariableDeclaration","src":"1165:15:4","value":{"kind":"number","nodeType":"YulLiteral","src":"1179:1:4","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1169:6:4","type":""}]},{"nodeType":"YulAssignment","src":"1194:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1229:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"1240:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1225:3:4"},"nodeType":"YulFunctionCall","src":"1225:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1249:7:4"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"1204:20:4"},"nodeType":"YulFunctionCall","src":"1204:53:4"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1194:6:4"}]}]},{"nodeType":"YulBlock","src":"1277:118:4","statements":[{"nodeType":"YulVariableDeclaration","src":"1292:16:4","value":{"kind":"number","nodeType":"YulLiteral","src":"1306:2:4","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1296:6:4","type":""}]},{"nodeType":"YulAssignment","src":"1322:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1357:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"1368:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1353:3:4"},"nodeType":"YulFunctionCall","src":"1353:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1377:7:4"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"1332:20:4"},"nodeType":"YulFunctionCall","src":"1332:53:4"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1322:6:4"}]}]},{"nodeType":"YulBlock","src":"1405:118:4","statements":[{"nodeType":"YulVariableDeclaration","src":"1420:16:4","value":{"kind":"number","nodeType":"YulLiteral","src":"1434:2:4","type":"","value":"64"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1424:6:4","type":""}]},{"nodeType":"YulAssignment","src":"1450:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1485:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"1496:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1481:3:4"},"nodeType":"YulFunctionCall","src":"1481:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1505:7:4"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"1460:20:4"},"nodeType":"YulFunctionCall","src":"1460:53:4"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"1450:6:4"}]}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1032:9:4","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1043:7:4","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1055:6:4","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1063:6:4","type":""},{"name":"value2","nodeType":"YulTypedName","src":"1071:6:4","type":""}],"src":"978:552:4"},{"body":{"nodeType":"YulBlock","src":"1619:324:4","statements":[{"body":{"nodeType":"YulBlock","src":"1665:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1674:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1677:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1667:6:4"},"nodeType":"YulFunctionCall","src":"1667:12:4"},"nodeType":"YulExpressionStatement","src":"1667:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1640:7:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"1649:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1636:3:4"},"nodeType":"YulFunctionCall","src":"1636:23:4"},{"kind":"number","nodeType":"YulLiteral","src":"1661:2:4","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1632:3:4"},"nodeType":"YulFunctionCall","src":"1632:32:4"},"nodeType":"YulIf","src":"1629:2:4"},{"nodeType":"YulBlock","src":"1691:117:4","statements":[{"nodeType":"YulVariableDeclaration","src":"1706:15:4","value":{"kind":"number","nodeType":"YulLiteral","src":"1720:1:4","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1710:6:4","type":""}]},{"nodeType":"YulAssignment","src":"1735:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1770:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"1781:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1766:3:4"},"nodeType":"YulFunctionCall","src":"1766:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1790:7:4"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"1745:20:4"},"nodeType":"YulFunctionCall","src":"1745:53:4"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1735:6:4"}]}]},{"nodeType":"YulBlock","src":"1818:118:4","statements":[{"nodeType":"YulVariableDeclaration","src":"1833:16:4","value":{"kind":"number","nodeType":"YulLiteral","src":"1847:2:4","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1837:6:4","type":""}]},{"nodeType":"YulAssignment","src":"1863:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1898:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"1909:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1894:3:4"},"nodeType":"YulFunctionCall","src":"1894:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1918:7:4"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"1873:20:4"},"nodeType":"YulFunctionCall","src":"1873:53:4"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1863:6:4"}]}]}]},"name":"abi_decode_tuple_t_addresst_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1581:9:4","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1592:7:4","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1604:6:4","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1612:6:4","type":""}],"src":"1536:407:4"},{"body":{"nodeType":"YulBlock","src":"2008:50:4","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2025:3:4"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2045:5:4"}],"functionName":{"name":"cleanup_t_bool","nodeType":"YulIdentifier","src":"2030:14:4"},"nodeType":"YulFunctionCall","src":"2030:21:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2018:6:4"},"nodeType":"YulFunctionCall","src":"2018:34:4"},"nodeType":"YulExpressionStatement","src":"2018:34:4"}]},"name":"abi_encode_t_bool_to_t_bool_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1996:5:4","type":""},{"name":"pos","nodeType":"YulTypedName","src":"2003:3:4","type":""}],"src":"1949:109:4"},{"body":{"nodeType":"YulBlock","src":"2156:272:4","statements":[{"nodeType":"YulVariableDeclaration","src":"2166:53:4","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2213:5:4"}],"functionName":{"name":"array_length_t_string_memory_ptr","nodeType":"YulIdentifier","src":"2180:32:4"},"nodeType":"YulFunctionCall","src":"2180:39:4"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"2170:6:4","type":""}]},{"nodeType":"YulAssignment","src":"2228:78:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2294:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"2299:6:4"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"2235:58:4"},"nodeType":"YulFunctionCall","src":"2235:71:4"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"2228:3:4"}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2341:5:4"},{"kind":"number","nodeType":"YulLiteral","src":"2348:4:4","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2337:3:4"},"nodeType":"YulFunctionCall","src":"2337:16:4"},{"name":"pos","nodeType":"YulIdentifier","src":"2355:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"2360:6:4"}],"functionName":{"name":"copy_memory_to_memory","nodeType":"YulIdentifier","src":"2315:21:4"},"nodeType":"YulFunctionCall","src":"2315:52:4"},"nodeType":"YulExpressionStatement","src":"2315:52:4"},{"nodeType":"YulAssignment","src":"2376:46:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2387:3:4"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"2414:6:4"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"2392:21:4"},"nodeType":"YulFunctionCall","src":"2392:29:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2383:3:4"},"nodeType":"YulFunctionCall","src":"2383:39:4"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"2376:3:4"}]}]},"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"2137:5:4","type":""},{"name":"pos","nodeType":"YulTypedName","src":"2144:3:4","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"2152:3:4","type":""}],"src":"2064:364:4"},{"body":{"nodeType":"YulBlock","src":"2580:220:4","statements":[{"nodeType":"YulAssignment","src":"2590:74:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2656:3:4"},{"kind":"number","nodeType":"YulLiteral","src":"2661:2:4","type":"","value":"22"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"2597:58:4"},"nodeType":"YulFunctionCall","src":"2597:67:4"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"2590:3:4"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2762:3:4"}],"functionName":{"name":"store_literal_in_memory_45e3d26e36c3151c7f92a1eee9add9658cbb8e14605ee2452ec007389b9744bc","nodeType":"YulIdentifier","src":"2673:88:4"},"nodeType":"YulFunctionCall","src":"2673:93:4"},"nodeType":"YulExpressionStatement","src":"2673:93:4"},{"nodeType":"YulAssignment","src":"2775:19:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2786:3:4"},{"kind":"number","nodeType":"YulLiteral","src":"2791:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2782:3:4"},"nodeType":"YulFunctionCall","src":"2782:12:4"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"2775:3:4"}]}]},"name":"abi_encode_t_stringliteral_45e3d26e36c3151c7f92a1eee9add9658cbb8e14605ee2452ec007389b9744bc_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"2568:3:4","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"2576:3:4","type":""}],"src":"2434:366:4"},{"body":{"nodeType":"YulBlock","src":"2952:220:4","statements":[{"nodeType":"YulAssignment","src":"2962:74:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3028:3:4"},{"kind":"number","nodeType":"YulLiteral","src":"3033:2:4","type":"","value":"25"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"2969:58:4"},"nodeType":"YulFunctionCall","src":"2969:67:4"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"2962:3:4"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3134:3:4"}],"functionName":{"name":"store_literal_in_memory_4ca3cd75a1831a94a24913bfd2c9b9d35acbb11ac3447f65bb0682cf14f63f5c","nodeType":"YulIdentifier","src":"3045:88:4"},"nodeType":"YulFunctionCall","src":"3045:93:4"},"nodeType":"YulExpressionStatement","src":"3045:93:4"},{"nodeType":"YulAssignment","src":"3147:19:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3158:3:4"},{"kind":"number","nodeType":"YulLiteral","src":"3163:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3154:3:4"},"nodeType":"YulFunctionCall","src":"3154:12:4"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"3147:3:4"}]}]},"name":"abi_encode_t_stringliteral_4ca3cd75a1831a94a24913bfd2c9b9d35acbb11ac3447f65bb0682cf14f63f5c_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"2940:3:4","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"2948:3:4","type":""}],"src":"2806:366:4"},{"body":{"nodeType":"YulBlock","src":"3243:53:4","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3260:3:4"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3283:5:4"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"3265:17:4"},"nodeType":"YulFunctionCall","src":"3265:24:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3253:6:4"},"nodeType":"YulFunctionCall","src":"3253:37:4"},"nodeType":"YulExpressionStatement","src":"3253:37:4"}]},"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"3231:5:4","type":""},{"name":"pos","nodeType":"YulTypedName","src":"3238:3:4","type":""}],"src":"3178:118:4"},{"body":{"nodeType":"YulBlock","src":"3394:118:4","statements":[{"nodeType":"YulAssignment","src":"3404:26:4","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3416:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"3427:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3412:3:4"},"nodeType":"YulFunctionCall","src":"3412:18:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3404:4:4"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3478:6:4"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3491:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"3502:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3487:3:4"},"nodeType":"YulFunctionCall","src":"3487:17:4"}],"functionName":{"name":"abi_encode_t_bool_to_t_bool_fromStack","nodeType":"YulIdentifier","src":"3440:37:4"},"nodeType":"YulFunctionCall","src":"3440:65:4"},"nodeType":"YulExpressionStatement","src":"3440:65:4"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3366:9:4","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3378:6:4","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3389:4:4","type":""}],"src":"3302:210:4"},{"body":{"nodeType":"YulBlock","src":"3636:195:4","statements":[{"nodeType":"YulAssignment","src":"3646:26:4","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3658:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"3669:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3654:3:4"},"nodeType":"YulFunctionCall","src":"3654:18:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3646:4:4"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3693:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"3704:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3689:3:4"},"nodeType":"YulFunctionCall","src":"3689:17:4"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"3712:4:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"3718:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3708:3:4"},"nodeType":"YulFunctionCall","src":"3708:20:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3682:6:4"},"nodeType":"YulFunctionCall","src":"3682:47:4"},"nodeType":"YulExpressionStatement","src":"3682:47:4"},{"nodeType":"YulAssignment","src":"3738:86:4","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3810:6:4"},{"name":"tail","nodeType":"YulIdentifier","src":"3819:4:4"}],"functionName":{"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"3746:63:4"},"nodeType":"YulFunctionCall","src":"3746:78:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3738:4:4"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3608:9:4","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3620:6:4","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3631:4:4","type":""}],"src":"3518:313:4"},{"body":{"nodeType":"YulBlock","src":"4008:248:4","statements":[{"nodeType":"YulAssignment","src":"4018:26:4","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4030:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"4041:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4026:3:4"},"nodeType":"YulFunctionCall","src":"4026:18:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4018:4:4"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4065:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"4076:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4061:3:4"},"nodeType":"YulFunctionCall","src":"4061:17:4"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"4084:4:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"4090:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4080:3:4"},"nodeType":"YulFunctionCall","src":"4080:20:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4054:6:4"},"nodeType":"YulFunctionCall","src":"4054:47:4"},"nodeType":"YulExpressionStatement","src":"4054:47:4"},{"nodeType":"YulAssignment","src":"4110:139:4","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"4244:4:4"}],"functionName":{"name":"abi_encode_t_stringliteral_45e3d26e36c3151c7f92a1eee9add9658cbb8e14605ee2452ec007389b9744bc_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"4118:124:4"},"nodeType":"YulFunctionCall","src":"4118:131:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4110:4:4"}]}]},"name":"abi_encode_tuple_t_stringliteral_45e3d26e36c3151c7f92a1eee9add9658cbb8e14605ee2452ec007389b9744bc__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3988:9:4","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4003:4:4","type":""}],"src":"3837:419:4"},{"body":{"nodeType":"YulBlock","src":"4433:248:4","statements":[{"nodeType":"YulAssignment","src":"4443:26:4","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4455:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"4466:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4451:3:4"},"nodeType":"YulFunctionCall","src":"4451:18:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4443:4:4"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4490:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"4501:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4486:3:4"},"nodeType":"YulFunctionCall","src":"4486:17:4"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"4509:4:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"4515:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4505:3:4"},"nodeType":"YulFunctionCall","src":"4505:20:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4479:6:4"},"nodeType":"YulFunctionCall","src":"4479:47:4"},"nodeType":"YulExpressionStatement","src":"4479:47:4"},{"nodeType":"YulAssignment","src":"4535:139:4","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"4669:4:4"}],"functionName":{"name":"abi_encode_t_stringliteral_4ca3cd75a1831a94a24913bfd2c9b9d35acbb11ac3447f65bb0682cf14f63f5c_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"4543:124:4"},"nodeType":"YulFunctionCall","src":"4543:131:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4535:4:4"}]}]},"name":"abi_encode_tuple_t_stringliteral_4ca3cd75a1831a94a24913bfd2c9b9d35acbb11ac3447f65bb0682cf14f63f5c__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4413:9:4","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4428:4:4","type":""}],"src":"4262:419:4"},{"body":{"nodeType":"YulBlock","src":"4785:124:4","statements":[{"nodeType":"YulAssignment","src":"4795:26:4","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4807:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"4818:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4803:3:4"},"nodeType":"YulFunctionCall","src":"4803:18:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4795:4:4"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4875:6:4"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4888:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"4899:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4884:3:4"},"nodeType":"YulFunctionCall","src":"4884:17:4"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"4831:43:4"},"nodeType":"YulFunctionCall","src":"4831:71:4"},"nodeType":"YulExpressionStatement","src":"4831:71:4"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4757:9:4","type":""},{"name":"value0","nodeType":"YulTypedName","src":"4769:6:4","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4780:4:4","type":""}],"src":"4687:222:4"},{"body":{"nodeType":"YulBlock","src":"4974:40:4","statements":[{"nodeType":"YulAssignment","src":"4985:22:4","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5001:5:4"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4995:5:4"},"nodeType":"YulFunctionCall","src":"4995:12:4"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"4985:6:4"}]}]},"name":"array_length_t_string_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"4957:5:4","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"4967:6:4","type":""}],"src":"4915:99:4"},{"body":{"nodeType":"YulBlock","src":"5116:73:4","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5133:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"5138:6:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5126:6:4"},"nodeType":"YulFunctionCall","src":"5126:19:4"},"nodeType":"YulExpressionStatement","src":"5126:19:4"},{"nodeType":"YulAssignment","src":"5154:29:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5173:3:4"},{"kind":"number","nodeType":"YulLiteral","src":"5178:4:4","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5169:3:4"},"nodeType":"YulFunctionCall","src":"5169:14:4"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"5154:11:4"}]}]},"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"5088:3:4","type":""},{"name":"length","nodeType":"YulTypedName","src":"5093:6:4","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"5104:11:4","type":""}],"src":"5020:169:4"},{"body":{"nodeType":"YulBlock","src":"5239:261:4","statements":[{"nodeType":"YulAssignment","src":"5249:25:4","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"5272:1:4"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"5254:17:4"},"nodeType":"YulFunctionCall","src":"5254:20:4"},"variableNames":[{"name":"x","nodeType":"YulIdentifier","src":"5249:1:4"}]},{"nodeType":"YulAssignment","src":"5283:25:4","value":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"5306:1:4"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"5288:17:4"},"nodeType":"YulFunctionCall","src":"5288:20:4"},"variableNames":[{"name":"y","nodeType":"YulIdentifier","src":"5283:1:4"}]},{"body":{"nodeType":"YulBlock","src":"5446:22:4","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"5448:16:4"},"nodeType":"YulFunctionCall","src":"5448:18:4"},"nodeType":"YulExpressionStatement","src":"5448:18:4"}]},"condition":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"5367:1:4"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5374:66:4","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"},{"name":"y","nodeType":"YulIdentifier","src":"5442:1:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5370:3:4"},"nodeType":"YulFunctionCall","src":"5370:74:4"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5364:2:4"},"nodeType":"YulFunctionCall","src":"5364:81:4"},"nodeType":"YulIf","src":"5361:2:4"},{"nodeType":"YulAssignment","src":"5478:16:4","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"5489:1:4"},{"name":"y","nodeType":"YulIdentifier","src":"5492:1:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5485:3:4"},"nodeType":"YulFunctionCall","src":"5485:9:4"},"variableNames":[{"name":"sum","nodeType":"YulIdentifier","src":"5478:3:4"}]}]},"name":"checked_add_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"5226:1:4","type":""},{"name":"y","nodeType":"YulTypedName","src":"5229:1:4","type":""}],"returnVariables":[{"name":"sum","nodeType":"YulTypedName","src":"5235:3:4","type":""}],"src":"5195:305:4"},{"body":{"nodeType":"YulBlock","src":"5551:146:4","statements":[{"nodeType":"YulAssignment","src":"5561:25:4","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"5584:1:4"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"5566:17:4"},"nodeType":"YulFunctionCall","src":"5566:20:4"},"variableNames":[{"name":"x","nodeType":"YulIdentifier","src":"5561:1:4"}]},{"nodeType":"YulAssignment","src":"5595:25:4","value":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"5618:1:4"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"5600:17:4"},"nodeType":"YulFunctionCall","src":"5600:20:4"},"variableNames":[{"name":"y","nodeType":"YulIdentifier","src":"5595:1:4"}]},{"body":{"nodeType":"YulBlock","src":"5642:22:4","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"5644:16:4"},"nodeType":"YulFunctionCall","src":"5644:18:4"},"nodeType":"YulExpressionStatement","src":"5644:18:4"}]},"condition":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"5636:1:4"},{"name":"y","nodeType":"YulIdentifier","src":"5639:1:4"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"5633:2:4"},"nodeType":"YulFunctionCall","src":"5633:8:4"},"nodeType":"YulIf","src":"5630:2:4"},{"nodeType":"YulAssignment","src":"5674:17:4","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"5686:1:4"},{"name":"y","nodeType":"YulIdentifier","src":"5689:1:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5682:3:4"},"nodeType":"YulFunctionCall","src":"5682:9:4"},"variableNames":[{"name":"diff","nodeType":"YulIdentifier","src":"5674:4:4"}]}]},"name":"checked_sub_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"5537:1:4","type":""},{"name":"y","nodeType":"YulTypedName","src":"5540:1:4","type":""}],"returnVariables":[{"name":"diff","nodeType":"YulTypedName","src":"5546:4:4","type":""}],"src":"5506:191:4"},{"body":{"nodeType":"YulBlock","src":"5748:51:4","statements":[{"nodeType":"YulAssignment","src":"5758:35:4","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5787:5:4"}],"functionName":{"name":"cleanup_t_uint160","nodeType":"YulIdentifier","src":"5769:17:4"},"nodeType":"YulFunctionCall","src":"5769:24:4"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"5758:7:4"}]}]},"name":"cleanup_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"5730:5:4","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"5740:7:4","type":""}],"src":"5703:96:4"},{"body":{"nodeType":"YulBlock","src":"5847:48:4","statements":[{"nodeType":"YulAssignment","src":"5857:32:4","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5882:5:4"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"5875:6:4"},"nodeType":"YulFunctionCall","src":"5875:13:4"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"5868:6:4"},"nodeType":"YulFunctionCall","src":"5868:21:4"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"5857:7:4"}]}]},"name":"cleanup_t_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"5829:5:4","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"5839:7:4","type":""}],"src":"5805:90:4"},{"body":{"nodeType":"YulBlock","src":"5946:81:4","statements":[{"nodeType":"YulAssignment","src":"5956:65:4","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5971:5:4"},{"kind":"number","nodeType":"YulLiteral","src":"5978:42:4","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5967:3:4"},"nodeType":"YulFunctionCall","src":"5967:54:4"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"5956:7:4"}]}]},"name":"cleanup_t_uint160","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"5928:5:4","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"5938:7:4","type":""}],"src":"5901:126:4"},{"body":{"nodeType":"YulBlock","src":"6078:32:4","statements":[{"nodeType":"YulAssignment","src":"6088:16:4","value":{"name":"value","nodeType":"YulIdentifier","src":"6099:5:4"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"6088:7:4"}]}]},"name":"cleanup_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"6060:5:4","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"6070:7:4","type":""}],"src":"6033:77:4"},{"body":{"nodeType":"YulBlock","src":"6165:258:4","statements":[{"nodeType":"YulVariableDeclaration","src":"6175:10:4","value":{"kind":"number","nodeType":"YulLiteral","src":"6184:1:4","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"6179:1:4","type":""}]},{"body":{"nodeType":"YulBlock","src":"6244:63:4","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"6269:3:4"},{"name":"i","nodeType":"YulIdentifier","src":"6274:1:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6265:3:4"},"nodeType":"YulFunctionCall","src":"6265:11:4"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"6288:3:4"},{"name":"i","nodeType":"YulIdentifier","src":"6293:1:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6284:3:4"},"nodeType":"YulFunctionCall","src":"6284:11:4"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6278:5:4"},"nodeType":"YulFunctionCall","src":"6278:18:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6258:6:4"},"nodeType":"YulFunctionCall","src":"6258:39:4"},"nodeType":"YulExpressionStatement","src":"6258:39:4"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"6205:1:4"},{"name":"length","nodeType":"YulIdentifier","src":"6208:6:4"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"6202:2:4"},"nodeType":"YulFunctionCall","src":"6202:13:4"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"6216:19:4","statements":[{"nodeType":"YulAssignment","src":"6218:15:4","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"6227:1:4"},{"kind":"number","nodeType":"YulLiteral","src":"6230:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6223:3:4"},"nodeType":"YulFunctionCall","src":"6223:10:4"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"6218:1:4"}]}]},"pre":{"nodeType":"YulBlock","src":"6198:3:4","statements":[]},"src":"6194:113:4"},{"body":{"nodeType":"YulBlock","src":"6341:76:4","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"6391:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"6396:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6387:3:4"},"nodeType":"YulFunctionCall","src":"6387:16:4"},{"kind":"number","nodeType":"YulLiteral","src":"6405:1:4","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6380:6:4"},"nodeType":"YulFunctionCall","src":"6380:27:4"},"nodeType":"YulExpressionStatement","src":"6380:27:4"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"6322:1:4"},{"name":"length","nodeType":"YulIdentifier","src":"6325:6:4"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"6319:2:4"},"nodeType":"YulFunctionCall","src":"6319:13:4"},"nodeType":"YulIf","src":"6316:2:4"}]},"name":"copy_memory_to_memory","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"6147:3:4","type":""},{"name":"dst","nodeType":"YulTypedName","src":"6152:3:4","type":""},{"name":"length","nodeType":"YulTypedName","src":"6157:6:4","type":""}],"src":"6116:307:4"},{"body":{"nodeType":"YulBlock","src":"6480:269:4","statements":[{"nodeType":"YulAssignment","src":"6490:22:4","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"6504:4:4"},{"kind":"number","nodeType":"YulLiteral","src":"6510:1:4","type":"","value":"2"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"6500:3:4"},"nodeType":"YulFunctionCall","src":"6500:12:4"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"6490:6:4"}]},{"nodeType":"YulVariableDeclaration","src":"6521:38:4","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"6551:4:4"},{"kind":"number","nodeType":"YulLiteral","src":"6557:1:4","type":"","value":"1"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"6547:3:4"},"nodeType":"YulFunctionCall","src":"6547:12:4"},"variables":[{"name":"outOfPlaceEncoding","nodeType":"YulTypedName","src":"6525:18:4","type":""}]},{"body":{"nodeType":"YulBlock","src":"6598:51:4","statements":[{"nodeType":"YulAssignment","src":"6612:27:4","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"6626:6:4"},{"kind":"number","nodeType":"YulLiteral","src":"6634:4:4","type":"","value":"0x7f"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"6622:3:4"},"nodeType":"YulFunctionCall","src":"6622:17:4"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"6612:6:4"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"6578:18:4"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"6571:6:4"},"nodeType":"YulFunctionCall","src":"6571:26:4"},"nodeType":"YulIf","src":"6568:2:4"},{"body":{"nodeType":"YulBlock","src":"6701:42:4","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x22","nodeType":"YulIdentifier","src":"6715:16:4"},"nodeType":"YulFunctionCall","src":"6715:18:4"},"nodeType":"YulExpressionStatement","src":"6715:18:4"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"6665:18:4"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"6688:6:4"},{"kind":"number","nodeType":"YulLiteral","src":"6696:2:4","type":"","value":"32"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"6685:2:4"},"nodeType":"YulFunctionCall","src":"6685:14:4"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"6662:2:4"},"nodeType":"YulFunctionCall","src":"6662:38:4"},"nodeType":"YulIf","src":"6659:2:4"}]},"name":"extract_byte_array_length","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"6464:4:4","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"6473:6:4","type":""}],"src":"6429:320:4"},{"body":{"nodeType":"YulBlock","src":"6783:152:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6800:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6803:77:4","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6793:6:4"},"nodeType":"YulFunctionCall","src":"6793:88:4"},"nodeType":"YulExpressionStatement","src":"6793:88:4"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6897:1:4","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"6900:4:4","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6890:6:4"},"nodeType":"YulFunctionCall","src":"6890:15:4"},"nodeType":"YulExpressionStatement","src":"6890:15:4"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6921:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6924:4:4","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6914:6:4"},"nodeType":"YulFunctionCall","src":"6914:15:4"},"nodeType":"YulExpressionStatement","src":"6914:15:4"}]},"name":"panic_error_0x11","nodeType":"YulFunctionDefinition","src":"6755:180:4"},{"body":{"nodeType":"YulBlock","src":"6969:152:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6986:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6989:77:4","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6979:6:4"},"nodeType":"YulFunctionCall","src":"6979:88:4"},"nodeType":"YulExpressionStatement","src":"6979:88:4"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7083:1:4","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"7086:4:4","type":"","value":"0x22"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7076:6:4"},"nodeType":"YulFunctionCall","src":"7076:15:4"},"nodeType":"YulExpressionStatement","src":"7076:15:4"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7107:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7110:4:4","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7100:6:4"},"nodeType":"YulFunctionCall","src":"7100:15:4"},"nodeType":"YulExpressionStatement","src":"7100:15:4"}]},"name":"panic_error_0x22","nodeType":"YulFunctionDefinition","src":"6941:180:4"},{"body":{"nodeType":"YulBlock","src":"7175:54:4","statements":[{"nodeType":"YulAssignment","src":"7185:38:4","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"7203:5:4"},{"kind":"number","nodeType":"YulLiteral","src":"7210:2:4","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7199:3:4"},"nodeType":"YulFunctionCall","src":"7199:14:4"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7219:2:4","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"7215:3:4"},"nodeType":"YulFunctionCall","src":"7215:7:4"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7195:3:4"},"nodeType":"YulFunctionCall","src":"7195:28:4"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"7185:6:4"}]}]},"name":"round_up_to_mul_of_32","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"7158:5:4","type":""}],"returnVariables":[{"name":"result","nodeType":"YulTypedName","src":"7168:6:4","type":""}],"src":"7127:102:4"},{"body":{"nodeType":"YulBlock","src":"7341:66:4","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7363:6:4"},{"kind":"number","nodeType":"YulLiteral","src":"7371:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7359:3:4"},"nodeType":"YulFunctionCall","src":"7359:14:4"},{"kind":"string","nodeType":"YulLiteral","src":"7375:24:4","type":"","value":"Insufficient allowance"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7352:6:4"},"nodeType":"YulFunctionCall","src":"7352:48:4"},"nodeType":"YulExpressionStatement","src":"7352:48:4"}]},"name":"store_literal_in_memory_45e3d26e36c3151c7f92a1eee9add9658cbb8e14605ee2452ec007389b9744bc","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"7333:6:4","type":""}],"src":"7235:172:4"},{"body":{"nodeType":"YulBlock","src":"7519:69:4","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7541:6:4"},{"kind":"number","nodeType":"YulLiteral","src":"7549:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7537:3:4"},"nodeType":"YulFunctionCall","src":"7537:14:4"},{"kind":"string","nodeType":"YulLiteral","src":"7553:27:4","type":"","value":"Transferred value is zero"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7530:6:4"},"nodeType":"YulFunctionCall","src":"7530:51:4"},"nodeType":"YulExpressionStatement","src":"7530:51:4"}]},"name":"store_literal_in_memory_4ca3cd75a1831a94a24913bfd2c9b9d35acbb11ac3447f65bb0682cf14f63f5c","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"7511:6:4","type":""}],"src":"7413:175:4"},{"body":{"nodeType":"YulBlock","src":"7637:79:4","statements":[{"body":{"nodeType":"YulBlock","src":"7694:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7703:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7706:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7696:6:4"},"nodeType":"YulFunctionCall","src":"7696:12:4"},"nodeType":"YulExpressionStatement","src":"7696:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"7660:5:4"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"7685:5:4"}],"functionName":{"name":"cleanup_t_address","nodeType":"YulIdentifier","src":"7667:17:4"},"nodeType":"YulFunctionCall","src":"7667:24:4"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"7657:2:4"},"nodeType":"YulFunctionCall","src":"7657:35:4"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"7650:6:4"},"nodeType":"YulFunctionCall","src":"7650:43:4"},"nodeType":"YulIf","src":"7647:2:4"}]},"name":"validator_revert_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"7630:5:4","type":""}],"src":"7594:122:4"},{"body":{"nodeType":"YulBlock","src":"7765:79:4","statements":[{"body":{"nodeType":"YulBlock","src":"7822:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7831:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7834:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7824:6:4"},"nodeType":"YulFunctionCall","src":"7824:12:4"},"nodeType":"YulExpressionStatement","src":"7824:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"7788:5:4"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"7813:5:4"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"7795:17:4"},"nodeType":"YulFunctionCall","src":"7795:24:4"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"7785:2:4"},"nodeType":"YulFunctionCall","src":"7785:35:4"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"7778:6:4"},"nodeType":"YulFunctionCall","src":"7778:43:4"},"nodeType":"YulIf","src":"7775:2:4"}]},"name":"validator_revert_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"7758:5:4","type":""}],"src":"7722:122:4"}]},"contents":"{\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_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_addresst_address(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(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2 {\n if slt(sub(dataEnd, headStart), 96) { 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 let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_addresst_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(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_encode_t_bool_to_t_bool_fromStack(value, pos) {\n mstore(pos, cleanup_t_bool(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_45e3d26e36c3151c7f92a1eee9add9658cbb8e14605ee2452ec007389b9744bc_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 22)\n store_literal_in_memory_45e3d26e36c3151c7f92a1eee9add9658cbb8e14605ee2452ec007389b9744bc(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_t_stringliteral_4ca3cd75a1831a94a24913bfd2c9b9d35acbb11ac3447f65bb0682cf14f63f5c_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 25)\n store_literal_in_memory_4ca3cd75a1831a94a24913bfd2c9b9d35acbb11ac3447f65bb0682cf14f63f5c(pos)\n end := add(pos, 32)\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_bool__to_t_bool__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_bool_to_t_bool_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_45e3d26e36c3151c7f92a1eee9add9658cbb8e14605ee2452ec007389b9744bc__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_45e3d26e36c3151c7f92a1eee9add9658cbb8e14605ee2452ec007389b9744bc_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function abi_encode_tuple_t_stringliteral_4ca3cd75a1831a94a24913bfd2c9b9d35acbb11ac3447f65bb0682cf14f63f5c__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_4ca3cd75a1831a94a24913bfd2c9b9d35acbb11ac3447f65bb0682cf14f63f5c_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 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_bool(value) -> cleaned {\n cleaned := iszero(iszero(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_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 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 round_up_to_mul_of_32(value) -> result {\n result := and(add(value, 31), not(31))\n }\n\n function store_literal_in_memory_45e3d26e36c3151c7f92a1eee9add9658cbb8e14605ee2452ec007389b9744bc(memPtr) {\n\n mstore(add(memPtr, 0), \"Insufficient allowance\")\n\n }\n\n function store_literal_in_memory_4ca3cd75a1831a94a24913bfd2c9b9d35acbb11ac3447f65bb0682cf14f63f5c(memPtr) {\n\n mstore(add(memPtr, 0), \"Transferred value is zero\")\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_uint256(value) {\n if iszero(eq(value, cleanup_t_uint256(value))) { revert(0, 0) }\n }\n\n}\n","id":4,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100885760003560e01c8063313ce5671161005b578063313ce5671461012957806370a0823114610147578063a9059cbb14610177578063dd62ed3e146101a757610088565b806306fdde031461008d578063095ea7b3146100ab57806318160ddd146100db57806323b872dd146100f9575b600080fd5b6100956101d7565b6040516100a29190610801565b60405180910390f35b6100c560048036038101906100c0919061070d565b610265565b6040516100d291906107e6565b60405180910390f35b6100e36102f2565b6040516100f09190610863565b60405180910390f35b610113600480360381019061010e91906106be565b6102f8565b60405161012091906107e6565b60405180910390f35b610131610490565b60405161013e9190610863565b60405180910390f35b610161600480360381019061015c9190610659565b610496565b60405161016e9190610863565b60405180910390f35b610191600480360381019061018c919061070d565b6104ae565b60405161019e91906107e6565b60405180910390f35b6101c160048036038101906101bc9190610682565b6105a8565b6040516101ce9190610863565b60405180910390f35b600480546101e49061099f565b80601f01602080910402602001604051908101604052809291908181526020018280546102109061099f565b801561025d5780601f106102325761010080835404028352916020019161025d565b820191906000526020600020905b81548152906001019060200180831161024057829003601f168201915b505050505081565b600081600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001905092915050565b60015481565b60008161030585336105a8565b1015610346576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161033d90610823565b60405180910390fd5b81600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546103d291906108f0565b9250508190555081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461042891906108f0565b9250508190555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461047e919061089a565b92505081905550600190509392505050565b60005481565b60026020528060005260406000206000915090505481565b60008082116104f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104e990610843565b60405180910390fd5b81600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461054191906108f0565b9250508190555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610597919061089a565b925050819055506001905092915050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008135905061063e81610a92565b92915050565b60008135905061065381610aa9565b92915050565b60006020828403121561066b57600080fd5b60006106798482850161062f565b91505092915050565b6000806040838503121561069557600080fd5b60006106a38582860161062f565b92505060206106b48582860161062f565b9150509250929050565b6000806000606084860312156106d357600080fd5b60006106e18682870161062f565b93505060206106f28682870161062f565b925050604061070386828701610644565b9150509250925092565b6000806040838503121561072057600080fd5b600061072e8582860161062f565b925050602061073f85828601610644565b9150509250929050565b61075281610936565b82525050565b60006107638261087e565b61076d8185610889565b935061077d81856020860161096c565b61078681610a2f565b840191505092915050565b600061079e601683610889565b91506107a982610a40565b602082019050919050565b60006107c1601983610889565b91506107cc82610a69565b602082019050919050565b6107e081610962565b82525050565b60006020820190506107fb6000830184610749565b92915050565b6000602082019050818103600083015261081b8184610758565b905092915050565b6000602082019050818103600083015261083c81610791565b9050919050565b6000602082019050818103600083015261085c816107b4565b9050919050565b600060208201905061087860008301846107d7565b92915050565b600081519050919050565b600082825260208201905092915050565b60006108a582610962565b91506108b083610962565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156108e5576108e46109d1565b5b828201905092915050565b60006108fb82610962565b915061090683610962565b925082821015610919576109186109d1565b5b828203905092915050565b600061092f82610942565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b8381101561098a57808201518184015260208101905061096f565b83811115610999576000848401525b50505050565b600060028204905060018216806109b757607f821691505b602082108114156109cb576109ca610a00565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f496e73756666696369656e7420616c6c6f77616e636500000000000000000000600082015250565b7f5472616e736665727265642076616c7565206973207a65726f00000000000000600082015250565b610a9b81610924565b8114610aa657600080fd5b50565b610ab281610962565b8114610abd57600080fd5b5056fea2646970667358221220a6fcd04aa893368d0e3e9a004a848844c520623183d6b2111fbc6f837204d0fa64736f6c63430008040033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x88 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x313CE567 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x129 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x147 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x177 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x1A7 JUMPI PUSH2 0x88 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x8D JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0xAB JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0xDB JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0xF9 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x95 PUSH2 0x1D7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xA2 SWAP2 SWAP1 PUSH2 0x801 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xC5 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xC0 SWAP2 SWAP1 PUSH2 0x70D JUMP JUMPDEST PUSH2 0x265 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xD2 SWAP2 SWAP1 PUSH2 0x7E6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xE3 PUSH2 0x2F2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xF0 SWAP2 SWAP1 PUSH2 0x863 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x113 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x10E SWAP2 SWAP1 PUSH2 0x6BE JUMP JUMPDEST PUSH2 0x2F8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x120 SWAP2 SWAP1 PUSH2 0x7E6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x131 PUSH2 0x490 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x13E SWAP2 SWAP1 PUSH2 0x863 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x161 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x15C SWAP2 SWAP1 PUSH2 0x659 JUMP JUMPDEST PUSH2 0x496 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x16E SWAP2 SWAP1 PUSH2 0x863 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x191 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x18C SWAP2 SWAP1 PUSH2 0x70D JUMP JUMPDEST PUSH2 0x4AE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x19E SWAP2 SWAP1 PUSH2 0x7E6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1C1 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1BC SWAP2 SWAP1 PUSH2 0x682 JUMP JUMPDEST PUSH2 0x5A8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1CE SWAP2 SWAP1 PUSH2 0x863 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH2 0x1E4 SWAP1 PUSH2 0x99F 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 0x210 SWAP1 PUSH2 0x99F JUMP JUMPDEST DUP1 ISZERO PUSH2 0x25D JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x232 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x25D 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 0x240 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x3 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 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP PUSH1 0x1 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x305 DUP6 CALLER PUSH2 0x5A8 JUMP JUMPDEST LT ISZERO PUSH2 0x346 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x33D SWAP1 PUSH2 0x823 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 PUSH1 0x3 PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 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 0x3D2 SWAP2 SWAP1 PUSH2 0x8F0 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x2 PUSH1 0x0 DUP7 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 0x428 SWAP2 SWAP1 PUSH2 0x8F0 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x2 PUSH1 0x0 DUP6 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 0x47E SWAP2 SWAP1 PUSH2 0x89A JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH1 0x1 SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD 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 DUP3 GT PUSH2 0x4F2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4E9 SWAP1 PUSH2 0x843 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 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 0x541 SWAP2 SWAP1 PUSH2 0x8F0 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x2 PUSH1 0x0 DUP6 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 0x597 SWAP2 SWAP1 PUSH2 0x89A JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH1 0x1 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x3 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x63E DUP2 PUSH2 0xA92 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x653 DUP2 PUSH2 0xAA9 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x66B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x679 DUP5 DUP3 DUP6 ADD PUSH2 0x62F JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x695 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x6A3 DUP6 DUP3 DUP7 ADD PUSH2 0x62F JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x6B4 DUP6 DUP3 DUP7 ADD PUSH2 0x62F JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x6D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x6E1 DUP7 DUP3 DUP8 ADD PUSH2 0x62F JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x6F2 DUP7 DUP3 DUP8 ADD PUSH2 0x62F JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x703 DUP7 DUP3 DUP8 ADD PUSH2 0x644 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x720 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x72E DUP6 DUP3 DUP7 ADD PUSH2 0x62F JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x73F DUP6 DUP3 DUP7 ADD PUSH2 0x644 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH2 0x752 DUP2 PUSH2 0x936 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x763 DUP3 PUSH2 0x87E JUMP JUMPDEST PUSH2 0x76D DUP2 DUP6 PUSH2 0x889 JUMP JUMPDEST SWAP4 POP PUSH2 0x77D DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x96C JUMP JUMPDEST PUSH2 0x786 DUP2 PUSH2 0xA2F JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x79E PUSH1 0x16 DUP4 PUSH2 0x889 JUMP JUMPDEST SWAP2 POP PUSH2 0x7A9 DUP3 PUSH2 0xA40 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7C1 PUSH1 0x19 DUP4 PUSH2 0x889 JUMP JUMPDEST SWAP2 POP PUSH2 0x7CC DUP3 PUSH2 0xA69 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x7E0 DUP2 PUSH2 0x962 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x7FB PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x749 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 0x81B DUP2 DUP5 PUSH2 0x758 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 0x83C DUP2 PUSH2 0x791 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 0x85C DUP2 PUSH2 0x7B4 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x878 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x7D7 JUMP JUMPDEST SWAP3 SWAP2 POP 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 0x8A5 DUP3 PUSH2 0x962 JUMP JUMPDEST SWAP2 POP PUSH2 0x8B0 DUP4 PUSH2 0x962 JUMP JUMPDEST SWAP3 POP DUP3 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SUB DUP3 GT ISZERO PUSH2 0x8E5 JUMPI PUSH2 0x8E4 PUSH2 0x9D1 JUMP JUMPDEST JUMPDEST DUP3 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8FB DUP3 PUSH2 0x962 JUMP JUMPDEST SWAP2 POP PUSH2 0x906 DUP4 PUSH2 0x962 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 LT ISZERO PUSH2 0x919 JUMPI PUSH2 0x918 PUSH2 0x9D1 JUMP JUMPDEST JUMPDEST DUP3 DUP3 SUB SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x92F DUP3 PUSH2 0x942 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO ISZERO 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 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x98A JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x96F JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x999 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 0x9B7 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 EQ ISZERO PUSH2 0x9CB JUMPI PUSH2 0x9CA PUSH2 0xA00 JUMP JUMPDEST JUMPDEST POP SWAP2 SWAP1 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 PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x496E73756666696369656E7420616C6C6F77616E636500000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH32 0x5472616E736665727265642076616C7565206973207A65726F00000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH2 0xA9B DUP2 PUSH2 0x924 JUMP JUMPDEST DUP2 EQ PUSH2 0xAA6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0xAB2 DUP2 PUSH2 0x962 JUMP JUMPDEST DUP2 EQ PUSH2 0xABD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xA6 0xFC 0xD0 0x4A 0xA8 SWAP4 CALLDATASIZE DUP14 0xE RETURNDATACOPY SWAP11 STOP 0x4A DUP5 DUP9 DIFFICULTY 0xC5 KECCAK256 PUSH3 0x3183D6 0xB2 GT 0x1F 0xBC PUSH16 0x837204D0FA64736F6C63430008040033 ","sourceMap":"1144:95:3:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1204:32;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;703:146;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;125:23;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;853:287;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;96:24;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;152:41;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;355:205;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;564:135;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1204:32;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;703:146::-;768:12;822:5;788:10;:22;799:10;788:22;;;;;;;;;;;;;;;:31;811:7;788:31;;;;;;;;;;;;;;;:39;;;;840:4;833:11;;703:146;;;;:::o;125:23::-;;;;:::o;853:287::-;932:4;983:5;952:27;962:4;968:10;952:9;:27::i;:::-;:36;;944:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;1054:5;1022:10;:16;1033:4;1022:16;;;;;;;;;;;;;;;:28;1039:10;1022:28;;;;;;;;;;;;;;;;:37;;;;;;;:::i;:::-;;;;;;;;1084:5;1065:9;:15;1075:4;1065:15;;;;;;;;;;;;;;;;:24;;;;;;;:::i;:::-;;;;;;;;1112:5;1095:9;:13;1105:2;1095:13;;;;;;;;;;;;;;;;:22;;;;;;;:::i;:::-;;;;;;;;1131:4;1124:11;;853:287;;;;;:::o;96:24::-;;;;:::o;152:41::-;;;;;;;;;;;;;;;;;:::o;355:205::-;413:4;441:1;433:5;:9;425:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;504:5;479:9;:21;489:10;479:21;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;532:5;515:9;:13;525:2;515:13;;;;;;;;;;;;;;;;:22;;;;;;;:::i;:::-;;;;;;;;551:4;544:11;;355:205;;;;:::o;564:135::-;636:17;668:10;:17;679:5;668:17;;;;;;;;;;;;;;;:26;686:7;668:26;;;;;;;;;;;;;;;;661:33;;564:135;;;;:::o;7:139:4:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:139::-;198:5;236:6;223:20;214:29;;252:33;279:5;252:33;:::i;:::-;204:87;;;;:::o;297:262::-;356:6;405:2;393:9;384:7;380:23;376:32;373:2;;;421:1;418;411:12;373:2;464:1;489:53;534:7;525:6;514:9;510:22;489:53;:::i;:::-;479:63;;435:117;363:196;;;;:::o;565:407::-;633:6;641;690:2;678:9;669:7;665:23;661:32;658:2;;;706:1;703;696:12;658:2;749:1;774:53;819:7;810:6;799:9;795:22;774:53;:::i;:::-;764:63;;720:117;876:2;902:53;947:7;938:6;927:9;923:22;902:53;:::i;:::-;892:63;;847:118;648:324;;;;;:::o;978:552::-;1055:6;1063;1071;1120:2;1108:9;1099:7;1095:23;1091:32;1088:2;;;1136:1;1133;1126:12;1088:2;1179:1;1204:53;1249:7;1240:6;1229:9;1225:22;1204:53;:::i;:::-;1194:63;;1150:117;1306:2;1332:53;1377:7;1368:6;1357:9;1353:22;1332:53;:::i;:::-;1322:63;;1277:118;1434:2;1460:53;1505:7;1496:6;1485:9;1481:22;1460:53;:::i;:::-;1450:63;;1405:118;1078:452;;;;;:::o;1536:407::-;1604:6;1612;1661:2;1649:9;1640:7;1636:23;1632:32;1629:2;;;1677:1;1674;1667:12;1629:2;1720:1;1745:53;1790:7;1781:6;1770:9;1766:22;1745:53;:::i;:::-;1735:63;;1691:117;1847:2;1873:53;1918:7;1909:6;1898:9;1894:22;1873:53;:::i;:::-;1863:63;;1818:118;1619:324;;;;;:::o;1949:109::-;2030:21;2045:5;2030:21;:::i;:::-;2025:3;2018:34;2008:50;;:::o;2064:364::-;2152:3;2180:39;2213:5;2180:39;:::i;:::-;2235:71;2299:6;2294:3;2235:71;:::i;:::-;2228:78;;2315:52;2360:6;2355:3;2348:4;2341:5;2337:16;2315:52;:::i;:::-;2392:29;2414:6;2392:29;:::i;:::-;2387:3;2383:39;2376:46;;2156:272;;;;;:::o;2434:366::-;2576:3;2597:67;2661:2;2656:3;2597:67;:::i;:::-;2590:74;;2673:93;2762:3;2673:93;:::i;:::-;2791:2;2786:3;2782:12;2775:19;;2580:220;;;:::o;2806:366::-;2948:3;2969:67;3033:2;3028:3;2969:67;:::i;:::-;2962:74;;3045:93;3134:3;3045:93;:::i;:::-;3163:2;3158:3;3154:12;3147:19;;2952:220;;;:::o;3178:118::-;3265:24;3283:5;3265:24;:::i;:::-;3260:3;3253:37;3243:53;;:::o;3302:210::-;3389:4;3427:2;3416:9;3412:18;3404:26;;3440:65;3502:1;3491:9;3487:17;3478:6;3440:65;:::i;:::-;3394:118;;;;:::o;3518:313::-;3631:4;3669:2;3658:9;3654:18;3646:26;;3718:9;3712:4;3708:20;3704:1;3693:9;3689:17;3682:47;3746:78;3819:4;3810:6;3746:78;:::i;:::-;3738:86;;3636:195;;;;:::o;3837:419::-;4003:4;4041:2;4030:9;4026:18;4018:26;;4090:9;4084:4;4080:20;4076:1;4065:9;4061:17;4054:47;4118:131;4244:4;4118:131;:::i;:::-;4110:139;;4008:248;;;:::o;4262:419::-;4428:4;4466:2;4455:9;4451:18;4443:26;;4515:9;4509:4;4505:20;4501:1;4490:9;4486:17;4479:47;4543:131;4669:4;4543:131;:::i;:::-;4535:139;;4433:248;;;:::o;4687:222::-;4780:4;4818:2;4807:9;4803:18;4795:26;;4831:71;4899:1;4888:9;4884:17;4875:6;4831:71;:::i;:::-;4785:124;;;;:::o;4915:99::-;4967:6;5001:5;4995:12;4985:22;;4974:40;;;:::o;5020:169::-;5104:11;5138:6;5133:3;5126:19;5178:4;5173:3;5169:14;5154:29;;5116:73;;;;:::o;5195:305::-;5235:3;5254:20;5272:1;5254:20;:::i;:::-;5249:25;;5288:20;5306:1;5288:20;:::i;:::-;5283:25;;5442:1;5374:66;5370:74;5367:1;5364:81;5361:2;;;5448:18;;:::i;:::-;5361:2;5492:1;5489;5485:9;5478:16;;5239:261;;;;:::o;5506:191::-;5546:4;5566:20;5584:1;5566:20;:::i;:::-;5561:25;;5600:20;5618:1;5600:20;:::i;:::-;5595:25;;5639:1;5636;5633:8;5630:2;;;5644:18;;:::i;:::-;5630:2;5689:1;5686;5682:9;5674:17;;5551:146;;;;:::o;5703:96::-;5740:7;5769:24;5787:5;5769:24;:::i;:::-;5758:35;;5748:51;;;:::o;5805:90::-;5839:7;5882:5;5875:13;5868:21;5857:32;;5847:48;;;:::o;5901:126::-;5938:7;5978:42;5971:5;5967:54;5956:65;;5946:81;;;:::o;6033:77::-;6070:7;6099:5;6088:16;;6078:32;;;:::o;6116:307::-;6184:1;6194:113;6208:6;6205:1;6202:13;6194:113;;;6293:1;6288:3;6284:11;6278:18;6274:1;6269:3;6265:11;6258:39;6230:2;6227:1;6223:10;6218:15;;6194:113;;;6325:6;6322:1;6319:13;6316:2;;;6405:1;6396:6;6391:3;6387:16;6380:27;6316:2;6165:258;;;;:::o;6429:320::-;6473:6;6510:1;6504:4;6500:12;6490:22;;6557:1;6551:4;6547:12;6578:18;6568:2;;6634:4;6626:6;6622:17;6612:27;;6568:2;6696;6688:6;6685:14;6665:18;6662:38;6659:2;;;6715:18;;:::i;:::-;6659:2;6480:269;;;;:::o;6755:180::-;6803:77;6800:1;6793:88;6900:4;6897:1;6890:15;6924:4;6921:1;6914:15;6941:180;6989:77;6986:1;6979:88;7086:4;7083:1;7076:15;7110:4;7107:1;7100:15;7127:102;7168:6;7219:2;7215:7;7210:2;7203:5;7199:14;7195:28;7185:38;;7175:54;;;:::o;7235:172::-;7375:24;7371:1;7363:6;7359:14;7352:48;7341:66;:::o;7413:175::-;7553:27;7549:1;7541:6;7537:14;7530:51;7519:69;:::o;7594:122::-;7667:24;7685:5;7667:24;:::i;:::-;7660:5;7657:35;7647:2;;7706:1;7703;7696:12;7647:2;7637:79;:::o;7722:122::-;7795:24;7813:5;7795:24;:::i;:::-;7788:5;7785:35;7775:2;;7834:1;7831;7824:12;7775:2;7765:79;:::o"},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","name()":"06fdde03","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.4+commit.c7e474f2\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"remaining\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/Token.sol\":\"TokenWithOnlyName\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/Token.sol\":{\"keccak256\":\"0x3c98df2a7295115a107e950c40733f37ce5384cf18a0b5efb948ccf6d1acaa59\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://21c0d9ad7fee4c50e057a477ec0c151985566e51e1df46d3dc42f4320eceeccf\",\"dweb:/ipfs/QmSVvnCWd9MH3F93atgJGuwbHMJpifnoMLSosQsZUKUrZ8\"]}},\"version\":1}"},"TokenWithoutNameNorSymbol":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"remaining","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"6080604052600160005534801561001557600080fd5b50633b9aca00600181905550600154600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610934806100766000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c8063313ce5671161005b578063313ce5671461010057806370a082311461011e578063a9059cbb1461014e578063dd62ed3e1461017e5761007d565b8063095ea7b31461008257806318160ddd146100b257806323b872dd146100d0575b600080fd5b61009c60048036038101906100979190610656565b6101ae565b6040516100a991906106f6565b60405180910390f35b6100ba61023b565b6040516100c79190610751565b60405180910390f35b6100ea60048036038101906100e59190610607565b610241565b6040516100f791906106f6565b60405180910390f35b6101086103d9565b6040516101159190610751565b60405180910390f35b610138600480360381019061013391906105a2565b6103df565b6040516101459190610751565b60405180910390f35b61016860048036038101906101639190610656565b6103f7565b60405161017591906106f6565b60405180910390f35b610198600480360381019061019391906105cb565b6104f1565b6040516101a59190610751565b60405180910390f35b600081600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001905092915050565b60015481565b60008161024e85336104f1565b101561028f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161028690610711565b60405180910390fd5b81600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461031b91906107d3565b9250508190555081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461037191906107d3565b9250508190555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546103c7919061077d565b92505081905550600190509392505050565b60005481565b60026020528060005260406000206000915090505481565b600080821161043b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043290610731565b60405180910390fd5b81600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461048a91906107d3565b9250508190555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546104e0919061077d565b925050819055506001905092915050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600081359050610587816108d0565b92915050565b60008135905061059c816108e7565b92915050565b6000602082840312156105b457600080fd5b60006105c284828501610578565b91505092915050565b600080604083850312156105de57600080fd5b60006105ec85828601610578565b92505060206105fd85828601610578565b9150509250929050565b60008060006060848603121561061c57600080fd5b600061062a86828701610578565b935050602061063b86828701610578565b925050604061064c8682870161058d565b9150509250925092565b6000806040838503121561066957600080fd5b600061067785828601610578565b92505060206106888582860161058d565b9150509250929050565b61069b81610819565b82525050565b60006106ae60168361076c565b91506106b98261087e565b602082019050919050565b60006106d160198361076c565b91506106dc826108a7565b602082019050919050565b6106f081610845565b82525050565b600060208201905061070b6000830184610692565b92915050565b6000602082019050818103600083015261072a816106a1565b9050919050565b6000602082019050818103600083015261074a816106c4565b9050919050565b600060208201905061076660008301846106e7565b92915050565b600082825260208201905092915050565b600061078882610845565b915061079383610845565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156107c8576107c761084f565b5b828201905092915050565b60006107de82610845565b91506107e983610845565b9250828210156107fc576107fb61084f565b5b828203905092915050565b600061081282610825565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f496e73756666696369656e7420616c6c6f77616e636500000000000000000000600082015250565b7f5472616e736665727265642076616c7565206973207a65726f00000000000000600082015250565b6108d981610807565b81146108e457600080fd5b50565b6108f081610845565b81146108fb57600080fd5b5056fea2646970667358221220a8a6918adf2af132e4e49a96a108a2d9c62cfb74de3e267b6c8af323b87f6ec964736f6c63430008040033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x1 PUSH1 0x0 SSTORE CALLVALUE DUP1 ISZERO PUSH2 0x15 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH4 0x3B9ACA00 PUSH1 0x1 DUP2 SWAP1 SSTORE POP PUSH1 0x1 SLOAD 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 DUP2 SWAP1 SSTORE POP PUSH2 0x934 DUP1 PUSH2 0x76 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x7D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x313CE567 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x100 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x11E JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x14E JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x17E JUMPI PUSH2 0x7D JUMP JUMPDEST DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x82 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0xB2 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0xD0 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9C PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x97 SWAP2 SWAP1 PUSH2 0x656 JUMP JUMPDEST PUSH2 0x1AE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xA9 SWAP2 SWAP1 PUSH2 0x6F6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xBA PUSH2 0x23B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xC7 SWAP2 SWAP1 PUSH2 0x751 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xEA PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xE5 SWAP2 SWAP1 PUSH2 0x607 JUMP JUMPDEST PUSH2 0x241 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xF7 SWAP2 SWAP1 PUSH2 0x6F6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x108 PUSH2 0x3D9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x115 SWAP2 SWAP1 PUSH2 0x751 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x138 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x133 SWAP2 SWAP1 PUSH2 0x5A2 JUMP JUMPDEST PUSH2 0x3DF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x145 SWAP2 SWAP1 PUSH2 0x751 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x168 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x163 SWAP2 SWAP1 PUSH2 0x656 JUMP JUMPDEST PUSH2 0x3F7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x175 SWAP2 SWAP1 PUSH2 0x6F6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x198 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x193 SWAP2 SWAP1 PUSH2 0x5CB JUMP JUMPDEST PUSH2 0x4F1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1A5 SWAP2 SWAP1 PUSH2 0x751 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x3 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 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP PUSH1 0x1 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x24E DUP6 CALLER PUSH2 0x4F1 JUMP JUMPDEST LT ISZERO PUSH2 0x28F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x286 SWAP1 PUSH2 0x711 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 PUSH1 0x3 PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 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 0x31B SWAP2 SWAP1 PUSH2 0x7D3 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x2 PUSH1 0x0 DUP7 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 0x371 SWAP2 SWAP1 PUSH2 0x7D3 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x2 PUSH1 0x0 DUP6 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 0x3C7 SWAP2 SWAP1 PUSH2 0x77D JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH1 0x1 SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD 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 DUP3 GT PUSH2 0x43B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x432 SWAP1 PUSH2 0x731 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 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 0x48A SWAP2 SWAP1 PUSH2 0x7D3 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x2 PUSH1 0x0 DUP6 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 0x4E0 SWAP2 SWAP1 PUSH2 0x77D JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH1 0x1 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x3 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x587 DUP2 PUSH2 0x8D0 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x59C DUP2 PUSH2 0x8E7 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x5B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x5C2 DUP5 DUP3 DUP6 ADD PUSH2 0x578 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x5DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x5EC DUP6 DUP3 DUP7 ADD PUSH2 0x578 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x5FD DUP6 DUP3 DUP7 ADD PUSH2 0x578 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x61C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x62A DUP7 DUP3 DUP8 ADD PUSH2 0x578 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x63B DUP7 DUP3 DUP8 ADD PUSH2 0x578 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x64C DUP7 DUP3 DUP8 ADD PUSH2 0x58D JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x669 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x677 DUP6 DUP3 DUP7 ADD PUSH2 0x578 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x688 DUP6 DUP3 DUP7 ADD PUSH2 0x58D JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH2 0x69B DUP2 PUSH2 0x819 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6AE PUSH1 0x16 DUP4 PUSH2 0x76C JUMP JUMPDEST SWAP2 POP PUSH2 0x6B9 DUP3 PUSH2 0x87E JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6D1 PUSH1 0x19 DUP4 PUSH2 0x76C JUMP JUMPDEST SWAP2 POP PUSH2 0x6DC DUP3 PUSH2 0x8A7 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x6F0 DUP2 PUSH2 0x845 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x70B PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x692 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 0x72A DUP2 PUSH2 0x6A1 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 0x74A DUP2 PUSH2 0x6C4 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x766 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x6E7 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x788 DUP3 PUSH2 0x845 JUMP JUMPDEST SWAP2 POP PUSH2 0x793 DUP4 PUSH2 0x845 JUMP JUMPDEST SWAP3 POP DUP3 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SUB DUP3 GT ISZERO PUSH2 0x7C8 JUMPI PUSH2 0x7C7 PUSH2 0x84F JUMP JUMPDEST JUMPDEST DUP3 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7DE DUP3 PUSH2 0x845 JUMP JUMPDEST SWAP2 POP PUSH2 0x7E9 DUP4 PUSH2 0x845 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 LT ISZERO PUSH2 0x7FC JUMPI PUSH2 0x7FB PUSH2 0x84F JUMP JUMPDEST JUMPDEST DUP3 DUP3 SUB SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x812 DUP3 PUSH2 0x825 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO ISZERO 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 PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x496E73756666696369656E7420616C6C6F77616E636500000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH32 0x5472616E736665727265642076616C7565206973207A65726F00000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH2 0x8D9 DUP2 PUSH2 0x807 JUMP JUMPDEST DUP2 EQ PUSH2 0x8E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x8F0 DUP2 PUSH2 0x845 JUMP JUMPDEST DUP2 EQ PUSH2 0x8FB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xA8 0xA6 SWAP2 DUP11 0xDF 0x2A CALL ORIGIN 0xE4 0xE4 SWAP11 SWAP7 LOG1 ADDMOD LOG2 0xD9 0xC6 0x2C 0xFB PUSH21 0xDE3E267B6C8AF323B87F6EC964736F6C6343000804 STOP CALLER ","sourceMap":"57:1085:3:-:0;;;119:1;96:24;;257:94;;;;;;;;;;292:13;278:11;:27;;;;335:11;;311:9;:21;321:10;311:21;;;;;;;;;;;;;;;:35;;;;57:1085;;;;;;"},"deployedBytecode":{"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:6120:4","statements":[{"body":{"nodeType":"YulBlock","src":"59:87:4","statements":[{"nodeType":"YulAssignment","src":"69:29:4","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"91:6:4"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"78:12:4"},"nodeType":"YulFunctionCall","src":"78:20:4"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"69:5:4"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"134:5:4"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"107:26:4"},"nodeType":"YulFunctionCall","src":"107:33:4"},"nodeType":"YulExpressionStatement","src":"107:33:4"}]},"name":"abi_decode_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"37:6:4","type":""},{"name":"end","nodeType":"YulTypedName","src":"45:3:4","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"53:5:4","type":""}],"src":"7:139:4"},{"body":{"nodeType":"YulBlock","src":"204:87:4","statements":[{"nodeType":"YulAssignment","src":"214:29:4","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"236:6:4"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"223:12:4"},"nodeType":"YulFunctionCall","src":"223:20:4"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"214:5:4"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"279:5:4"}],"functionName":{"name":"validator_revert_t_uint256","nodeType":"YulIdentifier","src":"252:26:4"},"nodeType":"YulFunctionCall","src":"252:33:4"},"nodeType":"YulExpressionStatement","src":"252:33:4"}]},"name":"abi_decode_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"182:6:4","type":""},{"name":"end","nodeType":"YulTypedName","src":"190:3:4","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"198:5:4","type":""}],"src":"152:139:4"},{"body":{"nodeType":"YulBlock","src":"363:196:4","statements":[{"body":{"nodeType":"YulBlock","src":"409:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"418:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"421:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"411:6:4"},"nodeType":"YulFunctionCall","src":"411:12:4"},"nodeType":"YulExpressionStatement","src":"411:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"384:7:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"393:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"380:3:4"},"nodeType":"YulFunctionCall","src":"380:23:4"},{"kind":"number","nodeType":"YulLiteral","src":"405:2:4","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"376:3:4"},"nodeType":"YulFunctionCall","src":"376:32:4"},"nodeType":"YulIf","src":"373:2:4"},{"nodeType":"YulBlock","src":"435:117:4","statements":[{"nodeType":"YulVariableDeclaration","src":"450:15:4","value":{"kind":"number","nodeType":"YulLiteral","src":"464:1:4","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"454:6:4","type":""}]},{"nodeType":"YulAssignment","src":"479:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"514:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"525:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"510:3:4"},"nodeType":"YulFunctionCall","src":"510:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"534:7:4"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"489:20:4"},"nodeType":"YulFunctionCall","src":"489:53:4"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"479:6:4"}]}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"333:9:4","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"344:7:4","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"356:6:4","type":""}],"src":"297:262:4"},{"body":{"nodeType":"YulBlock","src":"648:324:4","statements":[{"body":{"nodeType":"YulBlock","src":"694:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"703:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"706:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"696:6:4"},"nodeType":"YulFunctionCall","src":"696:12:4"},"nodeType":"YulExpressionStatement","src":"696:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"669:7:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"678:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"665:3:4"},"nodeType":"YulFunctionCall","src":"665:23:4"},{"kind":"number","nodeType":"YulLiteral","src":"690:2:4","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"661:3:4"},"nodeType":"YulFunctionCall","src":"661:32:4"},"nodeType":"YulIf","src":"658:2:4"},{"nodeType":"YulBlock","src":"720:117:4","statements":[{"nodeType":"YulVariableDeclaration","src":"735:15:4","value":{"kind":"number","nodeType":"YulLiteral","src":"749:1:4","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"739:6:4","type":""}]},{"nodeType":"YulAssignment","src":"764:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"799:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"810:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"795:3:4"},"nodeType":"YulFunctionCall","src":"795:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"819:7:4"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"774:20:4"},"nodeType":"YulFunctionCall","src":"774:53:4"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"764:6:4"}]}]},{"nodeType":"YulBlock","src":"847:118:4","statements":[{"nodeType":"YulVariableDeclaration","src":"862:16:4","value":{"kind":"number","nodeType":"YulLiteral","src":"876:2:4","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"866:6:4","type":""}]},{"nodeType":"YulAssignment","src":"892:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"927:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"938:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"923:3:4"},"nodeType":"YulFunctionCall","src":"923:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"947:7:4"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"902:20:4"},"nodeType":"YulFunctionCall","src":"902:53:4"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"892:6:4"}]}]}]},"name":"abi_decode_tuple_t_addresst_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"610:9:4","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"621:7:4","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"633:6:4","type":""},{"name":"value1","nodeType":"YulTypedName","src":"641:6:4","type":""}],"src":"565:407:4"},{"body":{"nodeType":"YulBlock","src":"1078:452:4","statements":[{"body":{"nodeType":"YulBlock","src":"1124:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1133:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1136:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1126:6:4"},"nodeType":"YulFunctionCall","src":"1126:12:4"},"nodeType":"YulExpressionStatement","src":"1126:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1099:7:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"1108:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1095:3:4"},"nodeType":"YulFunctionCall","src":"1095:23:4"},{"kind":"number","nodeType":"YulLiteral","src":"1120:2:4","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1091:3:4"},"nodeType":"YulFunctionCall","src":"1091:32:4"},"nodeType":"YulIf","src":"1088:2:4"},{"nodeType":"YulBlock","src":"1150:117:4","statements":[{"nodeType":"YulVariableDeclaration","src":"1165:15:4","value":{"kind":"number","nodeType":"YulLiteral","src":"1179:1:4","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1169:6:4","type":""}]},{"nodeType":"YulAssignment","src":"1194:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1229:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"1240:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1225:3:4"},"nodeType":"YulFunctionCall","src":"1225:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1249:7:4"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"1204:20:4"},"nodeType":"YulFunctionCall","src":"1204:53:4"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1194:6:4"}]}]},{"nodeType":"YulBlock","src":"1277:118:4","statements":[{"nodeType":"YulVariableDeclaration","src":"1292:16:4","value":{"kind":"number","nodeType":"YulLiteral","src":"1306:2:4","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1296:6:4","type":""}]},{"nodeType":"YulAssignment","src":"1322:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1357:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"1368:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1353:3:4"},"nodeType":"YulFunctionCall","src":"1353:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1377:7:4"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"1332:20:4"},"nodeType":"YulFunctionCall","src":"1332:53:4"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1322:6:4"}]}]},{"nodeType":"YulBlock","src":"1405:118:4","statements":[{"nodeType":"YulVariableDeclaration","src":"1420:16:4","value":{"kind":"number","nodeType":"YulLiteral","src":"1434:2:4","type":"","value":"64"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1424:6:4","type":""}]},{"nodeType":"YulAssignment","src":"1450:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1485:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"1496:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1481:3:4"},"nodeType":"YulFunctionCall","src":"1481:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1505:7:4"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"1460:20:4"},"nodeType":"YulFunctionCall","src":"1460:53:4"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"1450:6:4"}]}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1032:9:4","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1043:7:4","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1055:6:4","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1063:6:4","type":""},{"name":"value2","nodeType":"YulTypedName","src":"1071:6:4","type":""}],"src":"978:552:4"},{"body":{"nodeType":"YulBlock","src":"1619:324:4","statements":[{"body":{"nodeType":"YulBlock","src":"1665:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1674:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1677:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1667:6:4"},"nodeType":"YulFunctionCall","src":"1667:12:4"},"nodeType":"YulExpressionStatement","src":"1667:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1640:7:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"1649:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1636:3:4"},"nodeType":"YulFunctionCall","src":"1636:23:4"},{"kind":"number","nodeType":"YulLiteral","src":"1661:2:4","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1632:3:4"},"nodeType":"YulFunctionCall","src":"1632:32:4"},"nodeType":"YulIf","src":"1629:2:4"},{"nodeType":"YulBlock","src":"1691:117:4","statements":[{"nodeType":"YulVariableDeclaration","src":"1706:15:4","value":{"kind":"number","nodeType":"YulLiteral","src":"1720:1:4","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1710:6:4","type":""}]},{"nodeType":"YulAssignment","src":"1735:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1770:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"1781:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1766:3:4"},"nodeType":"YulFunctionCall","src":"1766:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1790:7:4"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"1745:20:4"},"nodeType":"YulFunctionCall","src":"1745:53:4"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1735:6:4"}]}]},{"nodeType":"YulBlock","src":"1818:118:4","statements":[{"nodeType":"YulVariableDeclaration","src":"1833:16:4","value":{"kind":"number","nodeType":"YulLiteral","src":"1847:2:4","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1837:6:4","type":""}]},{"nodeType":"YulAssignment","src":"1863:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1898:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"1909:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1894:3:4"},"nodeType":"YulFunctionCall","src":"1894:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1918:7:4"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"1873:20:4"},"nodeType":"YulFunctionCall","src":"1873:53:4"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1863:6:4"}]}]}]},"name":"abi_decode_tuple_t_addresst_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1581:9:4","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1592:7:4","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1604:6:4","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1612:6:4","type":""}],"src":"1536:407:4"},{"body":{"nodeType":"YulBlock","src":"2008:50:4","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2025:3:4"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2045:5:4"}],"functionName":{"name":"cleanup_t_bool","nodeType":"YulIdentifier","src":"2030:14:4"},"nodeType":"YulFunctionCall","src":"2030:21:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2018:6:4"},"nodeType":"YulFunctionCall","src":"2018:34:4"},"nodeType":"YulExpressionStatement","src":"2018:34:4"}]},"name":"abi_encode_t_bool_to_t_bool_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1996:5:4","type":""},{"name":"pos","nodeType":"YulTypedName","src":"2003:3:4","type":""}],"src":"1949:109:4"},{"body":{"nodeType":"YulBlock","src":"2210:220:4","statements":[{"nodeType":"YulAssignment","src":"2220:74:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2286:3:4"},{"kind":"number","nodeType":"YulLiteral","src":"2291:2:4","type":"","value":"22"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"2227:58:4"},"nodeType":"YulFunctionCall","src":"2227:67:4"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"2220:3:4"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2392:3:4"}],"functionName":{"name":"store_literal_in_memory_45e3d26e36c3151c7f92a1eee9add9658cbb8e14605ee2452ec007389b9744bc","nodeType":"YulIdentifier","src":"2303:88:4"},"nodeType":"YulFunctionCall","src":"2303:93:4"},"nodeType":"YulExpressionStatement","src":"2303:93:4"},{"nodeType":"YulAssignment","src":"2405:19:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2416:3:4"},{"kind":"number","nodeType":"YulLiteral","src":"2421:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2412:3:4"},"nodeType":"YulFunctionCall","src":"2412:12:4"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"2405:3:4"}]}]},"name":"abi_encode_t_stringliteral_45e3d26e36c3151c7f92a1eee9add9658cbb8e14605ee2452ec007389b9744bc_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"2198:3:4","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"2206:3:4","type":""}],"src":"2064:366:4"},{"body":{"nodeType":"YulBlock","src":"2582:220:4","statements":[{"nodeType":"YulAssignment","src":"2592:74:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2658:3:4"},{"kind":"number","nodeType":"YulLiteral","src":"2663:2:4","type":"","value":"25"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"2599:58:4"},"nodeType":"YulFunctionCall","src":"2599:67:4"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"2592:3:4"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2764:3:4"}],"functionName":{"name":"store_literal_in_memory_4ca3cd75a1831a94a24913bfd2c9b9d35acbb11ac3447f65bb0682cf14f63f5c","nodeType":"YulIdentifier","src":"2675:88:4"},"nodeType":"YulFunctionCall","src":"2675:93:4"},"nodeType":"YulExpressionStatement","src":"2675:93:4"},{"nodeType":"YulAssignment","src":"2777:19:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2788:3:4"},{"kind":"number","nodeType":"YulLiteral","src":"2793:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2784:3:4"},"nodeType":"YulFunctionCall","src":"2784:12:4"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"2777:3:4"}]}]},"name":"abi_encode_t_stringliteral_4ca3cd75a1831a94a24913bfd2c9b9d35acbb11ac3447f65bb0682cf14f63f5c_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"2570:3:4","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"2578:3:4","type":""}],"src":"2436:366:4"},{"body":{"nodeType":"YulBlock","src":"2873:53:4","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2890:3:4"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2913:5:4"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"2895:17:4"},"nodeType":"YulFunctionCall","src":"2895:24:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2883:6:4"},"nodeType":"YulFunctionCall","src":"2883:37:4"},"nodeType":"YulExpressionStatement","src":"2883:37:4"}]},"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"2861:5:4","type":""},{"name":"pos","nodeType":"YulTypedName","src":"2868:3:4","type":""}],"src":"2808:118:4"},{"body":{"nodeType":"YulBlock","src":"3024:118:4","statements":[{"nodeType":"YulAssignment","src":"3034:26:4","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3046:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"3057:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3042:3:4"},"nodeType":"YulFunctionCall","src":"3042:18:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3034:4:4"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3108:6:4"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3121:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"3132:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3117:3:4"},"nodeType":"YulFunctionCall","src":"3117:17:4"}],"functionName":{"name":"abi_encode_t_bool_to_t_bool_fromStack","nodeType":"YulIdentifier","src":"3070:37:4"},"nodeType":"YulFunctionCall","src":"3070:65:4"},"nodeType":"YulExpressionStatement","src":"3070:65:4"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2996:9:4","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3008:6:4","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3019:4:4","type":""}],"src":"2932:210:4"},{"body":{"nodeType":"YulBlock","src":"3319:248:4","statements":[{"nodeType":"YulAssignment","src":"3329:26:4","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3341:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"3352:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3337:3:4"},"nodeType":"YulFunctionCall","src":"3337:18:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3329:4:4"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3376:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"3387:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3372:3:4"},"nodeType":"YulFunctionCall","src":"3372:17:4"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"3395:4:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"3401:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3391:3:4"},"nodeType":"YulFunctionCall","src":"3391:20:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3365:6:4"},"nodeType":"YulFunctionCall","src":"3365:47:4"},"nodeType":"YulExpressionStatement","src":"3365:47:4"},{"nodeType":"YulAssignment","src":"3421:139:4","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"3555:4:4"}],"functionName":{"name":"abi_encode_t_stringliteral_45e3d26e36c3151c7f92a1eee9add9658cbb8e14605ee2452ec007389b9744bc_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"3429:124:4"},"nodeType":"YulFunctionCall","src":"3429:131:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3421:4:4"}]}]},"name":"abi_encode_tuple_t_stringliteral_45e3d26e36c3151c7f92a1eee9add9658cbb8e14605ee2452ec007389b9744bc__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3299:9:4","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3314:4:4","type":""}],"src":"3148:419:4"},{"body":{"nodeType":"YulBlock","src":"3744:248:4","statements":[{"nodeType":"YulAssignment","src":"3754:26:4","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3766:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"3777:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3762:3:4"},"nodeType":"YulFunctionCall","src":"3762:18:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3754:4:4"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3801:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"3812:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3797:3:4"},"nodeType":"YulFunctionCall","src":"3797:17:4"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"3820:4:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"3826:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3816:3:4"},"nodeType":"YulFunctionCall","src":"3816:20:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3790:6:4"},"nodeType":"YulFunctionCall","src":"3790:47:4"},"nodeType":"YulExpressionStatement","src":"3790:47:4"},{"nodeType":"YulAssignment","src":"3846:139:4","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"3980:4:4"}],"functionName":{"name":"abi_encode_t_stringliteral_4ca3cd75a1831a94a24913bfd2c9b9d35acbb11ac3447f65bb0682cf14f63f5c_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"3854:124:4"},"nodeType":"YulFunctionCall","src":"3854:131:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3846:4:4"}]}]},"name":"abi_encode_tuple_t_stringliteral_4ca3cd75a1831a94a24913bfd2c9b9d35acbb11ac3447f65bb0682cf14f63f5c__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3724:9:4","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3739:4:4","type":""}],"src":"3573:419:4"},{"body":{"nodeType":"YulBlock","src":"4096:124:4","statements":[{"nodeType":"YulAssignment","src":"4106:26:4","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4118:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"4129:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4114:3:4"},"nodeType":"YulFunctionCall","src":"4114:18:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4106:4:4"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4186:6:4"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4199:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"4210:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4195:3:4"},"nodeType":"YulFunctionCall","src":"4195:17:4"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"4142:43:4"},"nodeType":"YulFunctionCall","src":"4142:71:4"},"nodeType":"YulExpressionStatement","src":"4142:71:4"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4068:9:4","type":""},{"name":"value0","nodeType":"YulTypedName","src":"4080:6:4","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4091:4:4","type":""}],"src":"3998:222:4"},{"body":{"nodeType":"YulBlock","src":"4322:73:4","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4339:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"4344:6:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4332:6:4"},"nodeType":"YulFunctionCall","src":"4332:19:4"},"nodeType":"YulExpressionStatement","src":"4332:19:4"},{"nodeType":"YulAssignment","src":"4360:29:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4379:3:4"},{"kind":"number","nodeType":"YulLiteral","src":"4384:4:4","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4375:3:4"},"nodeType":"YulFunctionCall","src":"4375:14:4"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"4360:11:4"}]}]},"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"4294:3:4","type":""},{"name":"length","nodeType":"YulTypedName","src":"4299:6:4","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"4310:11:4","type":""}],"src":"4226:169:4"},{"body":{"nodeType":"YulBlock","src":"4445:261:4","statements":[{"nodeType":"YulAssignment","src":"4455:25:4","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"4478:1:4"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"4460:17:4"},"nodeType":"YulFunctionCall","src":"4460:20:4"},"variableNames":[{"name":"x","nodeType":"YulIdentifier","src":"4455:1:4"}]},{"nodeType":"YulAssignment","src":"4489:25:4","value":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"4512:1:4"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"4494:17:4"},"nodeType":"YulFunctionCall","src":"4494:20:4"},"variableNames":[{"name":"y","nodeType":"YulIdentifier","src":"4489:1:4"}]},{"body":{"nodeType":"YulBlock","src":"4652:22:4","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"4654:16:4"},"nodeType":"YulFunctionCall","src":"4654:18:4"},"nodeType":"YulExpressionStatement","src":"4654:18:4"}]},"condition":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"4573:1:4"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4580:66:4","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"},{"name":"y","nodeType":"YulIdentifier","src":"4648:1:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4576:3:4"},"nodeType":"YulFunctionCall","src":"4576:74:4"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4570:2:4"},"nodeType":"YulFunctionCall","src":"4570:81:4"},"nodeType":"YulIf","src":"4567:2:4"},{"nodeType":"YulAssignment","src":"4684:16:4","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"4695:1:4"},{"name":"y","nodeType":"YulIdentifier","src":"4698:1:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4691:3:4"},"nodeType":"YulFunctionCall","src":"4691:9:4"},"variableNames":[{"name":"sum","nodeType":"YulIdentifier","src":"4684:3:4"}]}]},"name":"checked_add_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"4432:1:4","type":""},{"name":"y","nodeType":"YulTypedName","src":"4435:1:4","type":""}],"returnVariables":[{"name":"sum","nodeType":"YulTypedName","src":"4441:3:4","type":""}],"src":"4401:305:4"},{"body":{"nodeType":"YulBlock","src":"4757:146:4","statements":[{"nodeType":"YulAssignment","src":"4767:25:4","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"4790:1:4"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"4772:17:4"},"nodeType":"YulFunctionCall","src":"4772:20:4"},"variableNames":[{"name":"x","nodeType":"YulIdentifier","src":"4767:1:4"}]},{"nodeType":"YulAssignment","src":"4801:25:4","value":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"4824:1:4"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"4806:17:4"},"nodeType":"YulFunctionCall","src":"4806:20:4"},"variableNames":[{"name":"y","nodeType":"YulIdentifier","src":"4801:1:4"}]},{"body":{"nodeType":"YulBlock","src":"4848:22:4","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"4850:16:4"},"nodeType":"YulFunctionCall","src":"4850:18:4"},"nodeType":"YulExpressionStatement","src":"4850:18:4"}]},"condition":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"4842:1:4"},{"name":"y","nodeType":"YulIdentifier","src":"4845:1:4"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"4839:2:4"},"nodeType":"YulFunctionCall","src":"4839:8:4"},"nodeType":"YulIf","src":"4836:2:4"},{"nodeType":"YulAssignment","src":"4880:17:4","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"4892:1:4"},{"name":"y","nodeType":"YulIdentifier","src":"4895:1:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4888:3:4"},"nodeType":"YulFunctionCall","src":"4888:9:4"},"variableNames":[{"name":"diff","nodeType":"YulIdentifier","src":"4880:4:4"}]}]},"name":"checked_sub_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"4743:1:4","type":""},{"name":"y","nodeType":"YulTypedName","src":"4746:1:4","type":""}],"returnVariables":[{"name":"diff","nodeType":"YulTypedName","src":"4752:4:4","type":""}],"src":"4712:191:4"},{"body":{"nodeType":"YulBlock","src":"4954:51:4","statements":[{"nodeType":"YulAssignment","src":"4964:35:4","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4993:5:4"}],"functionName":{"name":"cleanup_t_uint160","nodeType":"YulIdentifier","src":"4975:17:4"},"nodeType":"YulFunctionCall","src":"4975:24:4"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"4964:7:4"}]}]},"name":"cleanup_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"4936:5:4","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"4946:7:4","type":""}],"src":"4909:96:4"},{"body":{"nodeType":"YulBlock","src":"5053:48:4","statements":[{"nodeType":"YulAssignment","src":"5063:32:4","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5088:5:4"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"5081:6:4"},"nodeType":"YulFunctionCall","src":"5081:13:4"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"5074:6:4"},"nodeType":"YulFunctionCall","src":"5074:21:4"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"5063:7:4"}]}]},"name":"cleanup_t_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"5035:5:4","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"5045:7:4","type":""}],"src":"5011:90:4"},{"body":{"nodeType":"YulBlock","src":"5152:81:4","statements":[{"nodeType":"YulAssignment","src":"5162:65:4","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5177:5:4"},{"kind":"number","nodeType":"YulLiteral","src":"5184:42:4","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5173:3:4"},"nodeType":"YulFunctionCall","src":"5173:54:4"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"5162:7:4"}]}]},"name":"cleanup_t_uint160","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"5134:5:4","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"5144:7:4","type":""}],"src":"5107:126:4"},{"body":{"nodeType":"YulBlock","src":"5284:32:4","statements":[{"nodeType":"YulAssignment","src":"5294:16:4","value":{"name":"value","nodeType":"YulIdentifier","src":"5305:5:4"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"5294:7:4"}]}]},"name":"cleanup_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"5266:5:4","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"5276:7:4","type":""}],"src":"5239:77:4"},{"body":{"nodeType":"YulBlock","src":"5350:152:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5367:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5370:77:4","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5360:6:4"},"nodeType":"YulFunctionCall","src":"5360:88:4"},"nodeType":"YulExpressionStatement","src":"5360:88:4"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5464:1:4","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"5467:4:4","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5457:6:4"},"nodeType":"YulFunctionCall","src":"5457:15:4"},"nodeType":"YulExpressionStatement","src":"5457:15:4"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5488:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5491:4:4","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5481:6:4"},"nodeType":"YulFunctionCall","src":"5481:15:4"},"nodeType":"YulExpressionStatement","src":"5481:15:4"}]},"name":"panic_error_0x11","nodeType":"YulFunctionDefinition","src":"5322:180:4"},{"body":{"nodeType":"YulBlock","src":"5614:66:4","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"5636:6:4"},{"kind":"number","nodeType":"YulLiteral","src":"5644:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5632:3:4"},"nodeType":"YulFunctionCall","src":"5632:14:4"},{"kind":"string","nodeType":"YulLiteral","src":"5648:24:4","type":"","value":"Insufficient allowance"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5625:6:4"},"nodeType":"YulFunctionCall","src":"5625:48:4"},"nodeType":"YulExpressionStatement","src":"5625:48:4"}]},"name":"store_literal_in_memory_45e3d26e36c3151c7f92a1eee9add9658cbb8e14605ee2452ec007389b9744bc","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"5606:6:4","type":""}],"src":"5508:172:4"},{"body":{"nodeType":"YulBlock","src":"5792:69:4","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"5814:6:4"},{"kind":"number","nodeType":"YulLiteral","src":"5822:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5810:3:4"},"nodeType":"YulFunctionCall","src":"5810:14:4"},{"kind":"string","nodeType":"YulLiteral","src":"5826:27:4","type":"","value":"Transferred value is zero"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5803:6:4"},"nodeType":"YulFunctionCall","src":"5803:51:4"},"nodeType":"YulExpressionStatement","src":"5803:51:4"}]},"name":"store_literal_in_memory_4ca3cd75a1831a94a24913bfd2c9b9d35acbb11ac3447f65bb0682cf14f63f5c","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"5784:6:4","type":""}],"src":"5686:175:4"},{"body":{"nodeType":"YulBlock","src":"5910:79:4","statements":[{"body":{"nodeType":"YulBlock","src":"5967:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5976:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5979:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5969:6:4"},"nodeType":"YulFunctionCall","src":"5969:12:4"},"nodeType":"YulExpressionStatement","src":"5969:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5933:5:4"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5958:5:4"}],"functionName":{"name":"cleanup_t_address","nodeType":"YulIdentifier","src":"5940:17:4"},"nodeType":"YulFunctionCall","src":"5940:24:4"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"5930:2:4"},"nodeType":"YulFunctionCall","src":"5930:35:4"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"5923:6:4"},"nodeType":"YulFunctionCall","src":"5923:43:4"},"nodeType":"YulIf","src":"5920:2:4"}]},"name":"validator_revert_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"5903:5:4","type":""}],"src":"5867:122:4"},{"body":{"nodeType":"YulBlock","src":"6038:79:4","statements":[{"body":{"nodeType":"YulBlock","src":"6095:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6104:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6107:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6097:6:4"},"nodeType":"YulFunctionCall","src":"6097:12:4"},"nodeType":"YulExpressionStatement","src":"6097:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6061:5:4"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6086:5:4"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"6068:17:4"},"nodeType":"YulFunctionCall","src":"6068:24:4"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"6058:2:4"},"nodeType":"YulFunctionCall","src":"6058:35:4"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"6051:6:4"},"nodeType":"YulFunctionCall","src":"6051:43:4"},"nodeType":"YulIf","src":"6048:2:4"}]},"name":"validator_revert_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"6031:5:4","type":""}],"src":"5995:122:4"}]},"contents":"{\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_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_addresst_address(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(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2 {\n if slt(sub(dataEnd, headStart), 96) { 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 let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_addresst_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(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_encode_t_bool_to_t_bool_fromStack(value, pos) {\n mstore(pos, cleanup_t_bool(value))\n }\n\n function abi_encode_t_stringliteral_45e3d26e36c3151c7f92a1eee9add9658cbb8e14605ee2452ec007389b9744bc_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 22)\n store_literal_in_memory_45e3d26e36c3151c7f92a1eee9add9658cbb8e14605ee2452ec007389b9744bc(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_t_stringliteral_4ca3cd75a1831a94a24913bfd2c9b9d35acbb11ac3447f65bb0682cf14f63f5c_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 25)\n store_literal_in_memory_4ca3cd75a1831a94a24913bfd2c9b9d35acbb11ac3447f65bb0682cf14f63f5c(pos)\n end := add(pos, 32)\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_bool__to_t_bool__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_bool_to_t_bool_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_encode_tuple_t_stringliteral_45e3d26e36c3151c7f92a1eee9add9658cbb8e14605ee2452ec007389b9744bc__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_45e3d26e36c3151c7f92a1eee9add9658cbb8e14605ee2452ec007389b9744bc_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function abi_encode_tuple_t_stringliteral_4ca3cd75a1831a94a24913bfd2c9b9d35acbb11ac3447f65bb0682cf14f63f5c__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_4ca3cd75a1831a94a24913bfd2c9b9d35acbb11ac3447f65bb0682cf14f63f5c_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 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_bool(value) -> cleaned {\n cleaned := iszero(iszero(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 panic_error_0x11() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n\n function store_literal_in_memory_45e3d26e36c3151c7f92a1eee9add9658cbb8e14605ee2452ec007389b9744bc(memPtr) {\n\n mstore(add(memPtr, 0), \"Insufficient allowance\")\n\n }\n\n function store_literal_in_memory_4ca3cd75a1831a94a24913bfd2c9b9d35acbb11ac3447f65bb0682cf14f63f5c(memPtr) {\n\n mstore(add(memPtr, 0), \"Transferred value is zero\")\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_uint256(value) {\n if iszero(eq(value, cleanup_t_uint256(value))) { revert(0, 0) }\n }\n\n}\n","id":4,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b506004361061007d5760003560e01c8063313ce5671161005b578063313ce5671461010057806370a082311461011e578063a9059cbb1461014e578063dd62ed3e1461017e5761007d565b8063095ea7b31461008257806318160ddd146100b257806323b872dd146100d0575b600080fd5b61009c60048036038101906100979190610656565b6101ae565b6040516100a991906106f6565b60405180910390f35b6100ba61023b565b6040516100c79190610751565b60405180910390f35b6100ea60048036038101906100e59190610607565b610241565b6040516100f791906106f6565b60405180910390f35b6101086103d9565b6040516101159190610751565b60405180910390f35b610138600480360381019061013391906105a2565b6103df565b6040516101459190610751565b60405180910390f35b61016860048036038101906101639190610656565b6103f7565b60405161017591906106f6565b60405180910390f35b610198600480360381019061019391906105cb565b6104f1565b6040516101a59190610751565b60405180910390f35b600081600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001905092915050565b60015481565b60008161024e85336104f1565b101561028f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161028690610711565b60405180910390fd5b81600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461031b91906107d3565b9250508190555081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461037191906107d3565b9250508190555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546103c7919061077d565b92505081905550600190509392505050565b60005481565b60026020528060005260406000206000915090505481565b600080821161043b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043290610731565b60405180910390fd5b81600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461048a91906107d3565b9250508190555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546104e0919061077d565b925050819055506001905092915050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600081359050610587816108d0565b92915050565b60008135905061059c816108e7565b92915050565b6000602082840312156105b457600080fd5b60006105c284828501610578565b91505092915050565b600080604083850312156105de57600080fd5b60006105ec85828601610578565b92505060206105fd85828601610578565b9150509250929050565b60008060006060848603121561061c57600080fd5b600061062a86828701610578565b935050602061063b86828701610578565b925050604061064c8682870161058d565b9150509250925092565b6000806040838503121561066957600080fd5b600061067785828601610578565b92505060206106888582860161058d565b9150509250929050565b61069b81610819565b82525050565b60006106ae60168361076c565b91506106b98261087e565b602082019050919050565b60006106d160198361076c565b91506106dc826108a7565b602082019050919050565b6106f081610845565b82525050565b600060208201905061070b6000830184610692565b92915050565b6000602082019050818103600083015261072a816106a1565b9050919050565b6000602082019050818103600083015261074a816106c4565b9050919050565b600060208201905061076660008301846106e7565b92915050565b600082825260208201905092915050565b600061078882610845565b915061079383610845565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156107c8576107c761084f565b5b828201905092915050565b60006107de82610845565b91506107e983610845565b9250828210156107fc576107fb61084f565b5b828203905092915050565b600061081282610825565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f496e73756666696369656e7420616c6c6f77616e636500000000000000000000600082015250565b7f5472616e736665727265642076616c7565206973207a65726f00000000000000600082015250565b6108d981610807565b81146108e457600080fd5b50565b6108f081610845565b81146108fb57600080fd5b5056fea2646970667358221220a8a6918adf2af132e4e49a96a108a2d9c62cfb74de3e267b6c8af323b87f6ec964736f6c63430008040033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x7D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x313CE567 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x100 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x11E JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x14E JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x17E JUMPI PUSH2 0x7D JUMP JUMPDEST DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x82 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0xB2 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0xD0 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9C PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x97 SWAP2 SWAP1 PUSH2 0x656 JUMP JUMPDEST PUSH2 0x1AE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xA9 SWAP2 SWAP1 PUSH2 0x6F6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xBA PUSH2 0x23B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xC7 SWAP2 SWAP1 PUSH2 0x751 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xEA PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xE5 SWAP2 SWAP1 PUSH2 0x607 JUMP JUMPDEST PUSH2 0x241 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xF7 SWAP2 SWAP1 PUSH2 0x6F6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x108 PUSH2 0x3D9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x115 SWAP2 SWAP1 PUSH2 0x751 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x138 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x133 SWAP2 SWAP1 PUSH2 0x5A2 JUMP JUMPDEST PUSH2 0x3DF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x145 SWAP2 SWAP1 PUSH2 0x751 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x168 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x163 SWAP2 SWAP1 PUSH2 0x656 JUMP JUMPDEST PUSH2 0x3F7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x175 SWAP2 SWAP1 PUSH2 0x6F6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x198 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x193 SWAP2 SWAP1 PUSH2 0x5CB JUMP JUMPDEST PUSH2 0x4F1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1A5 SWAP2 SWAP1 PUSH2 0x751 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x3 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 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP PUSH1 0x1 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x24E DUP6 CALLER PUSH2 0x4F1 JUMP JUMPDEST LT ISZERO PUSH2 0x28F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x286 SWAP1 PUSH2 0x711 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 PUSH1 0x3 PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 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 0x31B SWAP2 SWAP1 PUSH2 0x7D3 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x2 PUSH1 0x0 DUP7 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 0x371 SWAP2 SWAP1 PUSH2 0x7D3 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x2 PUSH1 0x0 DUP6 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 0x3C7 SWAP2 SWAP1 PUSH2 0x77D JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH1 0x1 SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD 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 DUP3 GT PUSH2 0x43B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x432 SWAP1 PUSH2 0x731 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 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 0x48A SWAP2 SWAP1 PUSH2 0x7D3 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x2 PUSH1 0x0 DUP6 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 0x4E0 SWAP2 SWAP1 PUSH2 0x77D JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH1 0x1 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x3 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x587 DUP2 PUSH2 0x8D0 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x59C DUP2 PUSH2 0x8E7 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x5B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x5C2 DUP5 DUP3 DUP6 ADD PUSH2 0x578 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x5DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x5EC DUP6 DUP3 DUP7 ADD PUSH2 0x578 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x5FD DUP6 DUP3 DUP7 ADD PUSH2 0x578 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x61C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x62A DUP7 DUP3 DUP8 ADD PUSH2 0x578 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x63B DUP7 DUP3 DUP8 ADD PUSH2 0x578 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x64C DUP7 DUP3 DUP8 ADD PUSH2 0x58D JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x669 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x677 DUP6 DUP3 DUP7 ADD PUSH2 0x578 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x688 DUP6 DUP3 DUP7 ADD PUSH2 0x58D JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH2 0x69B DUP2 PUSH2 0x819 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6AE PUSH1 0x16 DUP4 PUSH2 0x76C JUMP JUMPDEST SWAP2 POP PUSH2 0x6B9 DUP3 PUSH2 0x87E JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6D1 PUSH1 0x19 DUP4 PUSH2 0x76C JUMP JUMPDEST SWAP2 POP PUSH2 0x6DC DUP3 PUSH2 0x8A7 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x6F0 DUP2 PUSH2 0x845 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x70B PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x692 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 0x72A DUP2 PUSH2 0x6A1 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 0x74A DUP2 PUSH2 0x6C4 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x766 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x6E7 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x788 DUP3 PUSH2 0x845 JUMP JUMPDEST SWAP2 POP PUSH2 0x793 DUP4 PUSH2 0x845 JUMP JUMPDEST SWAP3 POP DUP3 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SUB DUP3 GT ISZERO PUSH2 0x7C8 JUMPI PUSH2 0x7C7 PUSH2 0x84F JUMP JUMPDEST JUMPDEST DUP3 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7DE DUP3 PUSH2 0x845 JUMP JUMPDEST SWAP2 POP PUSH2 0x7E9 DUP4 PUSH2 0x845 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 LT ISZERO PUSH2 0x7FC JUMPI PUSH2 0x7FB PUSH2 0x84F JUMP JUMPDEST JUMPDEST DUP3 DUP3 SUB SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x812 DUP3 PUSH2 0x825 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO ISZERO 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 PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x496E73756666696369656E7420616C6C6F77616E636500000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH32 0x5472616E736665727265642076616C7565206973207A65726F00000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH2 0x8D9 DUP2 PUSH2 0x807 JUMP JUMPDEST DUP2 EQ PUSH2 0x8E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x8F0 DUP2 PUSH2 0x845 JUMP JUMPDEST DUP2 EQ PUSH2 0x8FB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xA8 0xA6 SWAP2 DUP11 0xDF 0x2A CALL ORIGIN 0xE4 0xE4 SWAP11 SWAP7 LOG1 ADDMOD LOG2 0xD9 0xC6 0x2C 0xFB PUSH21 0xDE3E267B6C8AF323B87F6EC964736F6C6343000804 STOP CALLER ","sourceMap":"57:1085:3:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;703:146;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;125:23;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;853:287;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;96:24;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;152:41;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;355:205;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;564:135;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;703:146;768:12;822:5;788:10;:22;799:10;788:22;;;;;;;;;;;;;;;:31;811:7;788:31;;;;;;;;;;;;;;;:39;;;;840:4;833:11;;703:146;;;;:::o;125:23::-;;;;:::o;853:287::-;932:4;983:5;952:27;962:4;968:10;952:9;:27::i;:::-;:36;;944:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;1054:5;1022:10;:16;1033:4;1022:16;;;;;;;;;;;;;;;:28;1039:10;1022:28;;;;;;;;;;;;;;;;:37;;;;;;;:::i;:::-;;;;;;;;1084:5;1065:9;:15;1075:4;1065:15;;;;;;;;;;;;;;;;:24;;;;;;;:::i;:::-;;;;;;;;1112:5;1095:9;:13;1105:2;1095:13;;;;;;;;;;;;;;;;:22;;;;;;;:::i;:::-;;;;;;;;1131:4;1124:11;;853:287;;;;;:::o;96:24::-;;;;:::o;152:41::-;;;;;;;;;;;;;;;;;:::o;355:205::-;413:4;441:1;433:5;:9;425:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;504:5;479:9;:21;489:10;479:21;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;532:5;515:9;:13;525:2;515:13;;;;;;;;;;;;;;;;:22;;;;;;;:::i;:::-;;;;;;;;551:4;544:11;;355:205;;;;:::o;564:135::-;636:17;668:10;:17;679:5;668:17;;;;;;;;;;;;;;;:26;686:7;668:26;;;;;;;;;;;;;;;;661:33;;564:135;;;;:::o;7:139:4:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:139::-;198:5;236:6;223:20;214:29;;252:33;279:5;252:33;:::i;:::-;204:87;;;;:::o;297:262::-;356:6;405:2;393:9;384:7;380:23;376:32;373:2;;;421:1;418;411:12;373:2;464:1;489:53;534:7;525:6;514:9;510:22;489:53;:::i;:::-;479:63;;435:117;363:196;;;;:::o;565:407::-;633:6;641;690:2;678:9;669:7;665:23;661:32;658:2;;;706:1;703;696:12;658:2;749:1;774:53;819:7;810:6;799:9;795:22;774:53;:::i;:::-;764:63;;720:117;876:2;902:53;947:7;938:6;927:9;923:22;902:53;:::i;:::-;892:63;;847:118;648:324;;;;;:::o;978:552::-;1055:6;1063;1071;1120:2;1108:9;1099:7;1095:23;1091:32;1088:2;;;1136:1;1133;1126:12;1088:2;1179:1;1204:53;1249:7;1240:6;1229:9;1225:22;1204:53;:::i;:::-;1194:63;;1150:117;1306:2;1332:53;1377:7;1368:6;1357:9;1353:22;1332:53;:::i;:::-;1322:63;;1277:118;1434:2;1460:53;1505:7;1496:6;1485:9;1481:22;1460:53;:::i;:::-;1450:63;;1405:118;1078:452;;;;;:::o;1536:407::-;1604:6;1612;1661:2;1649:9;1640:7;1636:23;1632:32;1629:2;;;1677:1;1674;1667:12;1629:2;1720:1;1745:53;1790:7;1781:6;1770:9;1766:22;1745:53;:::i;:::-;1735:63;;1691:117;1847:2;1873:53;1918:7;1909:6;1898:9;1894:22;1873:53;:::i;:::-;1863:63;;1818:118;1619:324;;;;;:::o;1949:109::-;2030:21;2045:5;2030:21;:::i;:::-;2025:3;2018:34;2008:50;;:::o;2064:366::-;2206:3;2227:67;2291:2;2286:3;2227:67;:::i;:::-;2220:74;;2303:93;2392:3;2303:93;:::i;:::-;2421:2;2416:3;2412:12;2405:19;;2210:220;;;:::o;2436:366::-;2578:3;2599:67;2663:2;2658:3;2599:67;:::i;:::-;2592:74;;2675:93;2764:3;2675:93;:::i;:::-;2793:2;2788:3;2784:12;2777:19;;2582:220;;;:::o;2808:118::-;2895:24;2913:5;2895:24;:::i;:::-;2890:3;2883:37;2873:53;;:::o;2932:210::-;3019:4;3057:2;3046:9;3042:18;3034:26;;3070:65;3132:1;3121:9;3117:17;3108:6;3070:65;:::i;:::-;3024:118;;;;:::o;3148:419::-;3314:4;3352:2;3341:9;3337:18;3329:26;;3401:9;3395:4;3391:20;3387:1;3376:9;3372:17;3365:47;3429:131;3555:4;3429:131;:::i;:::-;3421:139;;3319:248;;;:::o;3573:419::-;3739:4;3777:2;3766:9;3762:18;3754:26;;3826:9;3820:4;3816:20;3812:1;3801:9;3797:17;3790:47;3854:131;3980:4;3854:131;:::i;:::-;3846:139;;3744:248;;;:::o;3998:222::-;4091:4;4129:2;4118:9;4114:18;4106:26;;4142:71;4210:1;4199:9;4195:17;4186:6;4142:71;:::i;:::-;4096:124;;;;:::o;4226:169::-;4310:11;4344:6;4339:3;4332:19;4384:4;4379:3;4375:14;4360:29;;4322:73;;;;:::o;4401:305::-;4441:3;4460:20;4478:1;4460:20;:::i;:::-;4455:25;;4494:20;4512:1;4494:20;:::i;:::-;4489:25;;4648:1;4580:66;4576:74;4573:1;4570:81;4567:2;;;4654:18;;:::i;:::-;4567:2;4698:1;4695;4691:9;4684:16;;4445:261;;;;:::o;4712:191::-;4752:4;4772:20;4790:1;4772:20;:::i;:::-;4767:25;;4806:20;4824:1;4806:20;:::i;:::-;4801:25;;4845:1;4842;4839:8;4836:2;;;4850:18;;:::i;:::-;4836:2;4895:1;4892;4888:9;4880:17;;4757:146;;;;:::o;4909:96::-;4946:7;4975:24;4993:5;4975:24;:::i;:::-;4964:35;;4954:51;;;:::o;5011:90::-;5045:7;5088:5;5081:13;5074:21;5063:32;;5053:48;;;:::o;5107:126::-;5144:7;5184:42;5177:5;5173:54;5162:65;;5152:81;;;:::o;5239:77::-;5276:7;5305:5;5294:16;;5284:32;;;:::o;5322:180::-;5370:77;5367:1;5360:88;5467:4;5464:1;5457:15;5491:4;5488:1;5481:15;5508:172;5648:24;5644:1;5636:6;5632:14;5625:48;5614:66;:::o;5686:175::-;5826:27;5822:1;5814:6;5810:14;5803:51;5792:69;:::o;5867:122::-;5940:24;5958:5;5940:24;:::i;:::-;5933:5;5930:35;5920:2;;5979:1;5976;5969:12;5920:2;5910:79;:::o;5995:122::-;6068:24;6086:5;6068:24;:::i;:::-;6061:5;6058:35;6048:2;;6107:1;6104;6097:12;6048:2;6038:79;:::o"},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.4+commit.c7e474f2\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"remaining\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/Token.sol\":\"TokenWithoutNameNorSymbol\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/Token.sol\":{\"keccak256\":\"0x3c98df2a7295115a107e950c40733f37ce5384cf18a0b5efb948ccf6d1acaa59\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://21c0d9ad7fee4c50e057a477ec0c151985566e51e1df46d3dc42f4320eceeccf\",\"dweb:/ipfs/QmSVvnCWd9MH3F93atgJGuwbHMJpifnoMLSosQsZUKUrZ8\"]}},\"version\":1}"}}}}} \ No newline at end of file diff --git a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/ChangeEtherBalance.sol/ChangeEtherBalance.dbg.json b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/ChangeEtherBalance.sol/ChangeEtherBalance.dbg.json new file mode 100644 index 0000000000..224dfafc9c --- /dev/null +++ b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/ChangeEtherBalance.sol/ChangeEtherBalance.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../build-info/16efa488de3a0283218beddfadbd1423.json" +} diff --git a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/ChangeEtherBalance.sol/ChangeEtherBalance.json b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/ChangeEtherBalance.sol/ChangeEtherBalance.json new file mode 100644 index 0000000000..b533ba35a4 --- /dev/null +++ b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/ChangeEtherBalance.sol/ChangeEtherBalance.json @@ -0,0 +1,35 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "ChangeEtherBalance", + "sourceName": "contracts/ChangeEtherBalance.sol", + "abi": [ + { + "inputs": [], + "name": "returnHalf", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "addr", + "type": "address" + } + ], + "name": "transferTo", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "stateMutability": "payable", + "type": "receive" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b50610225806100206000396000f3fe60806040526004361061002d5760003560e01c8063a03fa7e314610039578063b019946e1461005557610034565b3661003457005b600080fd5b610053600480360381019061004e9190610113565b61005f565b005b61005d6100a9565b005b8073ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f193505050501580156100a5573d6000803e3d6000fd5b5050565b3373ffffffffffffffffffffffffffffffffffffffff166108fc6002346100d0919061013c565b9081150290604051600060405180830381858888f193505050501580156100fb573d6000803e3d6000fd5b50565b60008135905061010d816101d8565b92915050565b60006020828403121561012557600080fd5b6000610133848285016100fe565b91505092915050565b60006101478261019f565b91506101528361019f565b925082610162576101616101a9565b5b828204905092915050565b60006101788261017f565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6101e18161016d565b81146101ec57600080fd5b5056fea26469706673582212208e553461507bae731d37afa0d5a2a7dae74de7a6eab682733425a78884ed60b364736f6c63430008040033", + "deployedBytecode": "0x60806040526004361061002d5760003560e01c8063a03fa7e314610039578063b019946e1461005557610034565b3661003457005b600080fd5b610053600480360381019061004e9190610113565b61005f565b005b61005d6100a9565b005b8073ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f193505050501580156100a5573d6000803e3d6000fd5b5050565b3373ffffffffffffffffffffffffffffffffffffffff166108fc6002346100d0919061013c565b9081150290604051600060405180830381858888f193505050501580156100fb573d6000803e3d6000fd5b50565b60008135905061010d816101d8565b92915050565b60006020828403121561012557600080fd5b6000610133848285016100fe565b91505092915050565b60006101478261019f565b91506101528361019f565b925082610162576101616101a9565b5b828204905092915050565b60006101788261017f565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6101e18161016d565b81146101ec57600080fd5b5056fea26469706673582212208e553461507bae731d37afa0d5a2a7dae74de7a6eab682733425a78884ed60b364736f6c63430008040033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Events.sol/AnotherContract.dbg.json b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Events.sol/AnotherContract.dbg.json new file mode 100644 index 0000000000..224dfafc9c --- /dev/null +++ b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Events.sol/AnotherContract.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../build-info/16efa488de3a0283218beddfadbd1423.json" +} diff --git a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Events.sol/AnotherContract.json b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Events.sol/AnotherContract.json new file mode 100644 index 0000000000..495cf4c9ed --- /dev/null +++ b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Events.sol/AnotherContract.json @@ -0,0 +1,37 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "AnotherContract", + "sourceName": "contracts/Events.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "u", + "type": "uint256" + } + ], + "name": "WithUintArg", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "u", + "type": "uint256" + } + ], + "name": "emitUint", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b50610130806100206000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c80639194024414602d575b600080fd5b60436004803603810190603f91906090565b6045565b005b7f97535d4b4270d3f1a499c85ae918ba6798cbdcc83a26529331a25dcd2194cfce816040516072919060c3565b60405180910390a150565b600081359050608a8160e6565b92915050565b60006020828403121560a157600080fd5b600060ad84828501607d565b91505092915050565b60bd8160dc565b82525050565b600060208201905060d6600083018460b6565b92915050565b6000819050919050565b60ed8160dc565b811460f757600080fd5b5056fea264697066735822122083cb9b1ec00d6d1ec78d28771d3bf4778c5ba00b0532a2448d42cbab653355a064736f6c63430008040033", + "deployedBytecode": "0x6080604052348015600f57600080fd5b506004361060285760003560e01c80639194024414602d575b600080fd5b60436004803603810190603f91906090565b6045565b005b7f97535d4b4270d3f1a499c85ae918ba6798cbdcc83a26529331a25dcd2194cfce816040516072919060c3565b60405180910390a150565b600081359050608a8160e6565b92915050565b60006020828403121560a157600080fd5b600060ad84828501607d565b91505092915050565b60bd8160dc565b82525050565b600060208201905060d6600083018460b6565b92915050565b6000819050919050565b60ed8160dc565b811460f757600080fd5b5056fea264697066735822122083cb9b1ec00d6d1ec78d28771d3bf4778c5ba00b0532a2448d42cbab653355a064736f6c63430008040033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Events.sol/Events.dbg.json b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Events.sol/Events.dbg.json new file mode 100644 index 0000000000..224dfafc9c --- /dev/null +++ b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Events.sol/Events.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../build-info/16efa488de3a0283218beddfadbd1423.json" +} diff --git a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Events.sol/Events.json b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Events.sol/Events.json new file mode 100644 index 0000000000..965dcb8d99 --- /dev/null +++ b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Events.sol/Events.json @@ -0,0 +1,527 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "Events", + "sourceName": "contracts/Events.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "contract AnotherContract", + "name": "c", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "a", + "type": "address" + } + ], + "name": "WithAddressArg", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes32", + "name": "b", + "type": "bytes32" + } + ], + "name": "WithBytes32Arg", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes32[2]", + "name": "a", + "type": "bytes32[2]" + } + ], + "name": "WithBytes32Array", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes", + "name": "b", + "type": "bytes" + } + ], + "name": "WithBytesArg", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "b", + "type": "bytes32" + } + ], + "name": "WithIndexedBytes32Arg", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes", + "name": "b", + "type": "bytes" + } + ], + "name": "WithIndexedBytesArg", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "string", + "name": "s", + "type": "string" + } + ], + "name": "WithIndexedStringArg", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "int256", + "name": "i", + "type": "int256" + } + ], + "name": "WithIntArg", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "string", + "name": "s", + "type": "string" + } + ], + "name": "WithStringArg", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "components": [ + { + "internalType": "uint256", + "name": "u", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "v", + "type": "uint256" + } + ], + "indexed": false, + "internalType": "struct Events.Struct", + "name": "s", + "type": "tuple" + } + ], + "name": "WithStructArg", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "string", + "name": "s", + "type": "string" + }, + { + "indexed": false, + "internalType": "string", + "name": "t", + "type": "string" + } + ], + "name": "WithTwoStringArgs", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "u", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "v", + "type": "uint256" + } + ], + "name": "WithTwoUintArgs", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "u", + "type": "uint256" + } + ], + "name": "WithUintArg", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256[2]", + "name": "a", + "type": "uint256[2]" + } + ], + "name": "WithUintArray", + "type": "event" + }, + { + "anonymous": false, + "inputs": [], + "name": "WithoutArgs", + "type": "event" + }, + { + "inputs": [], + "name": "doNotEmit", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "a", + "type": "address" + } + ], + "name": "emitAddress", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "b", + "type": "bytes" + } + ], + "name": "emitBytes", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "b", + "type": "bytes32" + } + ], + "name": "emitBytes32", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "b", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "c", + "type": "bytes32" + } + ], + "name": "emitBytes32Array", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "b", + "type": "bytes" + } + ], + "name": "emitIndexedBytes", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "b", + "type": "bytes32" + } + ], + "name": "emitIndexedBytes32", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "s", + "type": "string" + } + ], + "name": "emitIndexedString", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "int256", + "name": "i", + "type": "int256" + } + ], + "name": "emitInt", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "u", + "type": "uint256" + } + ], + "name": "emitNestedUintFromAnotherContract", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "u", + "type": "uint256" + } + ], + "name": "emitNestedUintFromSameContract", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "s", + "type": "string" + } + ], + "name": "emitString", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "u", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "v", + "type": "uint256" + } + ], + "name": "emitStruct", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "u", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "v", + "type": "uint256" + } + ], + "name": "emitTwoUints", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "u", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "v", + "type": "uint256" + }, + { + "internalType": "string", + "name": "s", + "type": "string" + }, + { + "internalType": "string", + "name": "t", + "type": "string" + } + ], + "name": "emitTwoUintsAndTwoStrings", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "u", + "type": "uint256" + } + ], + "name": "emitUint", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "u", + "type": "uint256" + }, + { + "internalType": "string", + "name": "s", + "type": "string" + } + ], + "name": "emitUintAndString", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "u", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "v", + "type": "uint256" + } + ], + "name": "emitUintArray", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "u", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "v", + "type": "uint256" + } + ], + "name": "emitUintTwice", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "emitWithoutArgs", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x60806040523480156200001157600080fd5b506040516200140d3803806200140d833981810160405281019062000037919062000095565b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505062000123565b6000815190506200008f8162000109565b92915050565b600060208284031215620000a857600080fd5b6000620000b8848285016200007e565b91505092915050565b6000620000ce82620000e9565b9050919050565b6000620000e282620000c1565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6200011481620000d5565b81146200012057600080fd5b50565b6112da80620001336000396000f3fe608060405234801561001057600080fd5b506004361061012c5760003560e01c80638a618191116100ad578063c76f063511610071578063c76f0635146102c3578063cc07e605146102df578063d3931e57146102fb578063db6cdf6814610317578063ec5c3ede146103215761012c565b80638a6181911461024957806390b37ea214610265578063919402441461026f5780639f31a2231461028b578063c0cd80e6146102a75761012c565b806333311ef3116100f457806333311ef3146101bd57806338393646146101d9578063443690a0146101f5578063532b9cce14610211578063813a8cf51461022d5761012c565b8063048858e5146101315780630c0c941a1461014d57806317aba537146101695780632536f127146101855780632785f8d6146101a1575b600080fd5b61014b600480360381019061014691906109f0565b61033d565b005b61016760048036038101906101629190610b7d565b61036d565b005b610183600480360381019061017e9190610b7d565b6103df565b005b61019f600480360381019061019a9190610abf565b61042e565b005b6101bb60048036038101906101b69190610b29565b610468565b005b6101d760048036038101906101d291906109f0565b6104da565b005b6101f360048036038101906101ee9190610b7d565b610514565b005b61020f600480360381019061020a9190610abf565b610551565b005b61022b60048036038101906102269190610bb9565b610596565b005b61024760048036038101906102429190610b00565b61060e565b005b610263600480360381019061025e9190610a96565b61061a565b005b61026d610654565b005b61028960048036038101906102849190610b00565b610682565b005b6102a560048036038101906102a09190610b7d565b6106bc565b005b6102c160048036038101906102bc9190610a19565b61070b565b005b6102dd60048036038101906102d89190610a55565b61075a565b005b6102f960048036038101906102f49190610a55565b610794565b005b61031560048036038101906103109190610b00565b6107d9565b005b61031f610867565b005b61033b600480360381019061033691906109c7565b610869565b005b807fb421ad092cfce88844bfbfaa9654e824ba0ee5b6b0a220f822406b62c05364c060405160405180910390a250565b7f97535d4b4270d3f1a499c85ae918ba6798cbdcc83a26529331a25dcd2194cfce8260405161039c9190610fd2565b60405180910390a17f97535d4b4270d3f1a499c85ae918ba6798cbdcc83a26529331a25dcd2194cfce816040516103d39190610fd2565b60405180910390a15050565b7f73e687a2685d698f7acf934b4929a29ae783a4bcb640d71c5d6994d74e2380ca6040518060400160405280848152602001838152506040516104229190610eeb565b60405180910390a15050565b7f9b7ddcbde8dac280e036f87acafec72f9eee31a640c08087e8439139c7e5b52a8160405161045d9190610f5e565b60405180910390a150565b7f9b7ddcbde8dac280e036f87acafec72f9eee31a640c08087e8439139c7e5b52a816040516104979190610f5e565b60405180910390a17f97535d4b4270d3f1a499c85ae918ba6798cbdcc83a26529331a25dcd2194cfce826040516104ce9190610fd2565b60405180910390a15050565b7f425517d2678bbca3c0d9d8d9fdbec34c81194e7935ed48a6a19f97db93bcef6a816040516105099190610f06565b60405180910390a150565b7f8b268bb46a33a55bece084a8b6858719c9f2985c860fa06c155a341df0b73c0e8282604051610545929190610fed565b60405180910390a15050565b8060405161055f9190610e9e565b60405180910390207fd9ca28363e2d8739e0e9c4fea1d2df98d1bd7d9d915d00e5fccbf78c0fddcdb060405160405180910390a250565b7f8b268bb46a33a55bece084a8b6858719c9f2985c860fa06c155a341df0b73c0e84846040516105c7929190610fed565b60405180910390a17f1f1a2c748505fcd8f16a719fa88d517b1b41111c4f5e07bb28311cdc4d1515388282604051610600929190610f80565b60405180910390a150505050565b61061781610682565b50565b7f39feab747bb4f579008aea963d7ebac85ad410bb83ee663a42af01464654e93f816040516106499190610f43565b60405180910390a150565b7f917b7bf7ab24d61500cb699921a3a1cc22b8833da6484fea20f262b2610604af60405160405180910390a1565b7f97535d4b4270d3f1a499c85ae918ba6798cbdcc83a26529331a25dcd2194cfce816040516106b19190610fd2565b60405180910390a150565b7fd59ab87bf64b9d737998f3dc70c649d16b135f085029c1666ca0634beb75a7736040518060400160405280848152602001838152506040516106ff9190610fb7565b60405180910390a15050565b7f15100859f3ffe92910dc3f11ed3db4e9cf32ff657c05066e44be4e69b2b488bc60405180604001604052808481526020018381525060405161074e9190610ed0565b60405180910390a15050565b7f433470edcdd53b50238be4d8e048e2baa269af5be2a4e29515c138883c745aa8816040516107899190610f21565b60405180910390a150565b806040516107a29190610e87565b60405180910390207f160e4655df40987951accf7c731d5c504f77d20c139bd73032821b91a426dd9860405160405180910390a250565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166391940244826040518263ffffffff1660e01b81526004016108329190610fd2565b600060405180830381600087803b15801561084c57600080fd5b505af1158015610860573d6000803e3d6000fd5b5050505050565b565b7f336bcd960d2e5a52cef6094ba33727f309dc2c675eebefc6d9b6b6d79abac877816040516108989190610eb5565b60405180910390a150565b60006108b66108b18461103b565b611016565b9050828152602081018484840111156108ce57600080fd5b6108d9848285611195565b509392505050565b60006108f46108ef8461106c565b611016565b90508281526020810184848401111561090c57600080fd5b610917848285611195565b509392505050565b60008135905061092e81611248565b92915050565b6000813590506109438161125f565b92915050565b600082601f83011261095a57600080fd5b813561096a8482602086016108a3565b91505092915050565b60008135905061098281611276565b92915050565b600082601f83011261099957600080fd5b81356109a98482602086016108e1565b91505092915050565b6000813590506109c18161128d565b92915050565b6000602082840312156109d957600080fd5b60006109e78482850161091f565b91505092915050565b600060208284031215610a0257600080fd5b6000610a1084828501610934565b91505092915050565b60008060408385031215610a2c57600080fd5b6000610a3a85828601610934565b9250506020610a4b85828601610934565b9150509250929050565b600060208284031215610a6757600080fd5b600082013567ffffffffffffffff811115610a8157600080fd5b610a8d84828501610949565b91505092915050565b600060208284031215610aa857600080fd5b6000610ab684828501610973565b91505092915050565b600060208284031215610ad157600080fd5b600082013567ffffffffffffffff811115610aeb57600080fd5b610af784828501610988565b91505092915050565b600060208284031215610b1257600080fd5b6000610b20848285016109b2565b91505092915050565b60008060408385031215610b3c57600080fd5b6000610b4a858286016109b2565b925050602083013567ffffffffffffffff811115610b6757600080fd5b610b7385828601610988565b9150509250929050565b60008060408385031215610b9057600080fd5b6000610b9e858286016109b2565b9250506020610baf858286016109b2565b9150509250929050565b60008060008060808587031215610bcf57600080fd5b6000610bdd878288016109b2565b9450506020610bee878288016109b2565b935050604085013567ffffffffffffffff811115610c0b57600080fd5b610c1787828801610988565b925050606085013567ffffffffffffffff811115610c3457600080fd5b610c4087828801610988565b91505092959194509250565b6000610c588383610d39565b60208301905092915050565b6000610c708383610e69565b60208301905092915050565b610c8581611145565b82525050565b610c94816110b1565b610c9e81846110f7565b9250610ca98261109d565b8060005b83811015610cda578151610cc18782610c4c565b9650610ccc836110dd565b925050600181019050610cad565b505050505050565b610ceb816110bc565b610cf58184611102565b9250610d00826110a7565b8060005b83811015610d31578151610d188782610c64565b9650610d23836110ea565b925050600181019050610d04565b505050505050565b610d4281611157565b82525050565b610d5181611157565b82525050565b6000610d62826110c7565b610d6c818561110d565b9350610d7c8185602086016111a4565b610d8581611237565b840191505092915050565b6000610d9b826110c7565b610da5818561111e565b9350610db58185602086016111a4565b80840191505092915050565b610dca81611161565b82525050565b6000610ddb826110d2565b610de58185611129565b9350610df58185602086016111a4565b610dfe81611237565b840191505092915050565b6000610e14826110d2565b610e1e818561113a565b9350610e2e8185602086016111a4565b80840191505092915050565b604082016000820151610e506000850182610e69565b506020820151610e636020850182610e69565b50505050565b610e728161118b565b82525050565b610e818161118b565b82525050565b6000610e938284610d90565b915081905092915050565b6000610eaa8284610e09565b915081905092915050565b6000602082019050610eca6000830184610c7c565b92915050565b6000604082019050610ee56000830184610c8b565b92915050565b6000604082019050610f006000830184610ce2565b92915050565b6000602082019050610f1b6000830184610d48565b92915050565b60006020820190508181036000830152610f3b8184610d57565b905092915050565b6000602082019050610f586000830184610dc1565b92915050565b60006020820190508181036000830152610f788184610dd0565b905092915050565b60006040820190508181036000830152610f9a8185610dd0565b90508181036020830152610fae8184610dd0565b90509392505050565b6000604082019050610fcc6000830184610e3a565b92915050565b6000602082019050610fe76000830184610e78565b92915050565b60006040820190506110026000830185610e78565b61100f6020830184610e78565b9392505050565b6000611020611031565b905061102c82826111d7565b919050565b6000604051905090565b600067ffffffffffffffff82111561105657611055611208565b5b61105f82611237565b9050602081019050919050565b600067ffffffffffffffff82111561108757611086611208565b5b61109082611237565b9050602081019050919050565b6000819050919050565b6000819050919050565b600060029050919050565b600060029050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b600081905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b60006111508261116b565b9050919050565b6000819050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b838110156111c25780820151818401526020810190506111a7565b838111156111d1576000848401525b50505050565b6111e082611237565b810181811067ffffffffffffffff821117156111ff576111fe611208565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b61125181611145565b811461125c57600080fd5b50565b61126881611157565b811461127357600080fd5b50565b61127f81611161565b811461128a57600080fd5b50565b6112968161118b565b81146112a157600080fd5b5056fea264697066735822122073a91a740c0de3883c5213c5981d98d2396a8b60b3cf2fb364d7e4cc826a841e64736f6c63430008040033", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061012c5760003560e01c80638a618191116100ad578063c76f063511610071578063c76f0635146102c3578063cc07e605146102df578063d3931e57146102fb578063db6cdf6814610317578063ec5c3ede146103215761012c565b80638a6181911461024957806390b37ea214610265578063919402441461026f5780639f31a2231461028b578063c0cd80e6146102a75761012c565b806333311ef3116100f457806333311ef3146101bd57806338393646146101d9578063443690a0146101f5578063532b9cce14610211578063813a8cf51461022d5761012c565b8063048858e5146101315780630c0c941a1461014d57806317aba537146101695780632536f127146101855780632785f8d6146101a1575b600080fd5b61014b600480360381019061014691906109f0565b61033d565b005b61016760048036038101906101629190610b7d565b61036d565b005b610183600480360381019061017e9190610b7d565b6103df565b005b61019f600480360381019061019a9190610abf565b61042e565b005b6101bb60048036038101906101b69190610b29565b610468565b005b6101d760048036038101906101d291906109f0565b6104da565b005b6101f360048036038101906101ee9190610b7d565b610514565b005b61020f600480360381019061020a9190610abf565b610551565b005b61022b60048036038101906102269190610bb9565b610596565b005b61024760048036038101906102429190610b00565b61060e565b005b610263600480360381019061025e9190610a96565b61061a565b005b61026d610654565b005b61028960048036038101906102849190610b00565b610682565b005b6102a560048036038101906102a09190610b7d565b6106bc565b005b6102c160048036038101906102bc9190610a19565b61070b565b005b6102dd60048036038101906102d89190610a55565b61075a565b005b6102f960048036038101906102f49190610a55565b610794565b005b61031560048036038101906103109190610b00565b6107d9565b005b61031f610867565b005b61033b600480360381019061033691906109c7565b610869565b005b807fb421ad092cfce88844bfbfaa9654e824ba0ee5b6b0a220f822406b62c05364c060405160405180910390a250565b7f97535d4b4270d3f1a499c85ae918ba6798cbdcc83a26529331a25dcd2194cfce8260405161039c9190610fd2565b60405180910390a17f97535d4b4270d3f1a499c85ae918ba6798cbdcc83a26529331a25dcd2194cfce816040516103d39190610fd2565b60405180910390a15050565b7f73e687a2685d698f7acf934b4929a29ae783a4bcb640d71c5d6994d74e2380ca6040518060400160405280848152602001838152506040516104229190610eeb565b60405180910390a15050565b7f9b7ddcbde8dac280e036f87acafec72f9eee31a640c08087e8439139c7e5b52a8160405161045d9190610f5e565b60405180910390a150565b7f9b7ddcbde8dac280e036f87acafec72f9eee31a640c08087e8439139c7e5b52a816040516104979190610f5e565b60405180910390a17f97535d4b4270d3f1a499c85ae918ba6798cbdcc83a26529331a25dcd2194cfce826040516104ce9190610fd2565b60405180910390a15050565b7f425517d2678bbca3c0d9d8d9fdbec34c81194e7935ed48a6a19f97db93bcef6a816040516105099190610f06565b60405180910390a150565b7f8b268bb46a33a55bece084a8b6858719c9f2985c860fa06c155a341df0b73c0e8282604051610545929190610fed565b60405180910390a15050565b8060405161055f9190610e9e565b60405180910390207fd9ca28363e2d8739e0e9c4fea1d2df98d1bd7d9d915d00e5fccbf78c0fddcdb060405160405180910390a250565b7f8b268bb46a33a55bece084a8b6858719c9f2985c860fa06c155a341df0b73c0e84846040516105c7929190610fed565b60405180910390a17f1f1a2c748505fcd8f16a719fa88d517b1b41111c4f5e07bb28311cdc4d1515388282604051610600929190610f80565b60405180910390a150505050565b61061781610682565b50565b7f39feab747bb4f579008aea963d7ebac85ad410bb83ee663a42af01464654e93f816040516106499190610f43565b60405180910390a150565b7f917b7bf7ab24d61500cb699921a3a1cc22b8833da6484fea20f262b2610604af60405160405180910390a1565b7f97535d4b4270d3f1a499c85ae918ba6798cbdcc83a26529331a25dcd2194cfce816040516106b19190610fd2565b60405180910390a150565b7fd59ab87bf64b9d737998f3dc70c649d16b135f085029c1666ca0634beb75a7736040518060400160405280848152602001838152506040516106ff9190610fb7565b60405180910390a15050565b7f15100859f3ffe92910dc3f11ed3db4e9cf32ff657c05066e44be4e69b2b488bc60405180604001604052808481526020018381525060405161074e9190610ed0565b60405180910390a15050565b7f433470edcdd53b50238be4d8e048e2baa269af5be2a4e29515c138883c745aa8816040516107899190610f21565b60405180910390a150565b806040516107a29190610e87565b60405180910390207f160e4655df40987951accf7c731d5c504f77d20c139bd73032821b91a426dd9860405160405180910390a250565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166391940244826040518263ffffffff1660e01b81526004016108329190610fd2565b600060405180830381600087803b15801561084c57600080fd5b505af1158015610860573d6000803e3d6000fd5b5050505050565b565b7f336bcd960d2e5a52cef6094ba33727f309dc2c675eebefc6d9b6b6d79abac877816040516108989190610eb5565b60405180910390a150565b60006108b66108b18461103b565b611016565b9050828152602081018484840111156108ce57600080fd5b6108d9848285611195565b509392505050565b60006108f46108ef8461106c565b611016565b90508281526020810184848401111561090c57600080fd5b610917848285611195565b509392505050565b60008135905061092e81611248565b92915050565b6000813590506109438161125f565b92915050565b600082601f83011261095a57600080fd5b813561096a8482602086016108a3565b91505092915050565b60008135905061098281611276565b92915050565b600082601f83011261099957600080fd5b81356109a98482602086016108e1565b91505092915050565b6000813590506109c18161128d565b92915050565b6000602082840312156109d957600080fd5b60006109e78482850161091f565b91505092915050565b600060208284031215610a0257600080fd5b6000610a1084828501610934565b91505092915050565b60008060408385031215610a2c57600080fd5b6000610a3a85828601610934565b9250506020610a4b85828601610934565b9150509250929050565b600060208284031215610a6757600080fd5b600082013567ffffffffffffffff811115610a8157600080fd5b610a8d84828501610949565b91505092915050565b600060208284031215610aa857600080fd5b6000610ab684828501610973565b91505092915050565b600060208284031215610ad157600080fd5b600082013567ffffffffffffffff811115610aeb57600080fd5b610af784828501610988565b91505092915050565b600060208284031215610b1257600080fd5b6000610b20848285016109b2565b91505092915050565b60008060408385031215610b3c57600080fd5b6000610b4a858286016109b2565b925050602083013567ffffffffffffffff811115610b6757600080fd5b610b7385828601610988565b9150509250929050565b60008060408385031215610b9057600080fd5b6000610b9e858286016109b2565b9250506020610baf858286016109b2565b9150509250929050565b60008060008060808587031215610bcf57600080fd5b6000610bdd878288016109b2565b9450506020610bee878288016109b2565b935050604085013567ffffffffffffffff811115610c0b57600080fd5b610c1787828801610988565b925050606085013567ffffffffffffffff811115610c3457600080fd5b610c4087828801610988565b91505092959194509250565b6000610c588383610d39565b60208301905092915050565b6000610c708383610e69565b60208301905092915050565b610c8581611145565b82525050565b610c94816110b1565b610c9e81846110f7565b9250610ca98261109d565b8060005b83811015610cda578151610cc18782610c4c565b9650610ccc836110dd565b925050600181019050610cad565b505050505050565b610ceb816110bc565b610cf58184611102565b9250610d00826110a7565b8060005b83811015610d31578151610d188782610c64565b9650610d23836110ea565b925050600181019050610d04565b505050505050565b610d4281611157565b82525050565b610d5181611157565b82525050565b6000610d62826110c7565b610d6c818561110d565b9350610d7c8185602086016111a4565b610d8581611237565b840191505092915050565b6000610d9b826110c7565b610da5818561111e565b9350610db58185602086016111a4565b80840191505092915050565b610dca81611161565b82525050565b6000610ddb826110d2565b610de58185611129565b9350610df58185602086016111a4565b610dfe81611237565b840191505092915050565b6000610e14826110d2565b610e1e818561113a565b9350610e2e8185602086016111a4565b80840191505092915050565b604082016000820151610e506000850182610e69565b506020820151610e636020850182610e69565b50505050565b610e728161118b565b82525050565b610e818161118b565b82525050565b6000610e938284610d90565b915081905092915050565b6000610eaa8284610e09565b915081905092915050565b6000602082019050610eca6000830184610c7c565b92915050565b6000604082019050610ee56000830184610c8b565b92915050565b6000604082019050610f006000830184610ce2565b92915050565b6000602082019050610f1b6000830184610d48565b92915050565b60006020820190508181036000830152610f3b8184610d57565b905092915050565b6000602082019050610f586000830184610dc1565b92915050565b60006020820190508181036000830152610f788184610dd0565b905092915050565b60006040820190508181036000830152610f9a8185610dd0565b90508181036020830152610fae8184610dd0565b90509392505050565b6000604082019050610fcc6000830184610e3a565b92915050565b6000602082019050610fe76000830184610e78565b92915050565b60006040820190506110026000830185610e78565b61100f6020830184610e78565b9392505050565b6000611020611031565b905061102c82826111d7565b919050565b6000604051905090565b600067ffffffffffffffff82111561105657611055611208565b5b61105f82611237565b9050602081019050919050565b600067ffffffffffffffff82111561108757611086611208565b5b61109082611237565b9050602081019050919050565b6000819050919050565b6000819050919050565b600060029050919050565b600060029050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b600081905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b60006111508261116b565b9050919050565b6000819050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b838110156111c25780820151818401526020810190506111a7565b838111156111d1576000848401525b50505050565b6111e082611237565b810181811067ffffffffffffffff821117156111ff576111fe611208565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b61125181611145565b811461125c57600080fd5b50565b61126881611157565b811461127357600080fd5b50565b61127f81611161565b811461128a57600080fd5b50565b6112968161118b565b81146112a157600080fd5b5056fea264697066735822122073a91a740c0de3883c5213c5981d98d2396a8b60b3cf2fb364d7e4cc826a841e64736f6c63430008040033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Events.sol/OverrideEventContract.dbg.json b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Events.sol/OverrideEventContract.dbg.json new file mode 100644 index 0000000000..224dfafc9c --- /dev/null +++ b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Events.sol/OverrideEventContract.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../build-info/16efa488de3a0283218beddfadbd1423.json" +} diff --git a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Events.sol/OverrideEventContract.json b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Events.sol/OverrideEventContract.json new file mode 100644 index 0000000000..8400a4909c --- /dev/null +++ b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Events.sol/OverrideEventContract.json @@ -0,0 +1,50 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "OverrideEventContract", + "sourceName": "contracts/Events.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "u", + "type": "uint256" + } + ], + "name": "simpleEvent", + "type": "event" + }, + { + "anonymous": false, + "inputs": [], + "name": "simpleEvent", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "u", + "type": "uint256" + } + ], + "name": "emitSimpleEventWithUintArg", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "emitSimpleEventWithoutArg", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b50610188806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80632ce136d91461003b5780638e1c72bb14610057575b600080fd5b610055600480360381019061005091906100de565b610061565b005b61005f61009b565b005b7fb2dc4835200bc382210c109031e47d05b37c9244807898f5910a43f961e6719a816040516100909190610116565b60405180910390a150565b7f8922a6ca0f59f137d8e739a3dca968247fca890d147a5006a57da5bc782f6ae960405160405180910390a1565b6000813590506100d88161013b565b92915050565b6000602082840312156100f057600080fd5b60006100fe848285016100c9565b91505092915050565b61011081610131565b82525050565b600060208201905061012b6000830184610107565b92915050565b6000819050919050565b61014481610131565b811461014f57600080fd5b5056fea264697066735822122016232a4f6ea73657adfebd142c8d15f5593e419f600cb1983aba440defd27a5064736f6c63430008040033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100365760003560e01c80632ce136d91461003b5780638e1c72bb14610057575b600080fd5b610055600480360381019061005091906100de565b610061565b005b61005f61009b565b005b7fb2dc4835200bc382210c109031e47d05b37c9244807898f5910a43f961e6719a816040516100909190610116565b60405180910390a150565b7f8922a6ca0f59f137d8e739a3dca968247fca890d147a5006a57da5bc782f6ae960405160405180910390a1565b6000813590506100d88161013b565b92915050565b6000602082840312156100f057600080fd5b60006100fe848285016100c9565b91505092915050565b61011081610131565b82525050565b600060208201905061012b6000830184610107565b92915050565b6000819050919050565b61014481610131565b811461014f57600080fd5b5056fea264697066735822122016232a4f6ea73657adfebd142c8d15f5593e419f600cb1983aba440defd27a5064736f6c63430008040033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Matchers.sol/AnotherMatchersContract.dbg.json b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Matchers.sol/AnotherMatchersContract.dbg.json new file mode 100644 index 0000000000..224dfafc9c --- /dev/null +++ b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Matchers.sol/AnotherMatchersContract.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../build-info/16efa488de3a0283218beddfadbd1423.json" +} diff --git a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Matchers.sol/AnotherMatchersContract.json b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Matchers.sol/AnotherMatchersContract.json new file mode 100644 index 0000000000..6774821378 --- /dev/null +++ b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Matchers.sol/AnotherMatchersContract.json @@ -0,0 +1,30 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "AnotherMatchersContract", + "sourceName": "contracts/Matchers.sol", + "abi": [ + { + "inputs": [], + "name": "YetAnotherCustomError", + "type": "error" + }, + { + "inputs": [], + "name": "revertWithYetAnotherCustomError", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "revertWithYetAnotherCustomErrorView", + "outputs": [], + "stateMutability": "pure", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b50610182806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c806340d83b241461003b5780634b2bd7e914610045575b600080fd5b61004361004f565b005b61004d610081565b005b6040517fff05e87500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080815480929190610093906100d4565b91905055506040517fff05e87500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000819050919050565b60006100df826100ca565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156101125761011161011d565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea2646970667358221220188b4117d3c1f35f2fcbff7fbf51ee28f08c8abd18e3796ccd1d2fbc8c862e3f64736f6c63430008040033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100365760003560e01c806340d83b241461003b5780634b2bd7e914610045575b600080fd5b61004361004f565b005b61004d610081565b005b6040517fff05e87500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080815480929190610093906100d4565b91905055506040517fff05e87500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000819050919050565b60006100df826100ca565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156101125761011161011d565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea2646970667358221220188b4117d3c1f35f2fcbff7fbf51ee28f08c8abd18e3796ccd1d2fbc8c862e3f64736f6c63430008040033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Matchers.sol/Matchers.dbg.json b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Matchers.sol/Matchers.dbg.json new file mode 100644 index 0000000000..224dfafc9c --- /dev/null +++ b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Matchers.sol/Matchers.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../build-info/16efa488de3a0283218beddfadbd1423.json" +} diff --git a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Matchers.sol/Matchers.json b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Matchers.sol/Matchers.json new file mode 100644 index 0000000000..5a4f85691d --- /dev/null +++ b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Matchers.sol/Matchers.json @@ -0,0 +1,333 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "Matchers", + "sourceName": "contracts/Matchers.sol", + "abi": [ + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "AnotherCustomError", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "int256", + "name": "", + "type": "int256" + } + ], + "name": "CustomErrorWithInt", + "type": "error" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "uint256", + "name": "a", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "b", + "type": "uint256" + } + ], + "internalType": "struct Matchers.Pair", + "name": "", + "type": "tuple" + } + ], + "name": "CustomErrorWithPair", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "nameToForceEthersToUseAnArrayLikeWithNamedProperties", + "type": "uint256" + } + ], + "name": "CustomErrorWithUint", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "name": "CustomErrorWithUintAndString", + "type": "error" + }, + { + "inputs": [], + "name": "SomeCustomError", + "type": "error" + }, + { + "anonymous": false, + "inputs": [], + "name": "SomeEvent", + "type": "event" + }, + { + "inputs": [], + "name": "panicAssert", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "panicAssertView", + "outputs": [], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "revertWithAnotherContractCustomError", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "revertWithAnotherContractCustomErrorView", + "outputs": [], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "revertWithAnotherCustomError", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "revertWithAnotherCustomErrorView", + "outputs": [], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "int256", + "name": "i", + "type": "int256" + } + ], + "name": "revertWithCustomErrorWithInt", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "int256", + "name": "i", + "type": "int256" + } + ], + "name": "revertWithCustomErrorWithIntView", + "outputs": [], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "a", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "b", + "type": "uint256" + } + ], + "name": "revertWithCustomErrorWithPair", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "a", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "b", + "type": "uint256" + } + ], + "name": "revertWithCustomErrorWithPairView", + "outputs": [], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "n", + "type": "uint256" + } + ], + "name": "revertWithCustomErrorWithUint", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "n", + "type": "uint256" + }, + { + "internalType": "string", + "name": "s", + "type": "string" + } + ], + "name": "revertWithCustomErrorWithUintAndString", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "n", + "type": "uint256" + }, + { + "internalType": "string", + "name": "s", + "type": "string" + } + ], + "name": "revertWithCustomErrorWithUintAndStringView", + "outputs": [], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "n", + "type": "uint256" + } + ], + "name": "revertWithCustomErrorWithUintView", + "outputs": [], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "revertWithSomeCustomError", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "revertWithSomeCustomErrorView", + "outputs": [], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "reason", + "type": "string" + } + ], + "name": "revertsWith", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "reason", + "type": "string" + } + ], + "name": "revertsWithView", + "outputs": [], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "revertsWithoutReason", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "revertsWithoutReasonView", + "outputs": [], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "succeeds", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "succeedsView", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b5060405161001d9061007f565b604051809103906000f080158015610039573d6000803e3d6000fd5b50600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061008c565b6101a280610e8a83390190565b610def8061009b6000396000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c806373d2ea85116100b8578063aac014e01161007c578063aac014e01461028b578063b6bbe06114610295578063bad92aa91461029f578063e0a03812146102a9578063fe276a34146102c5578063ffb4746b146102e157610142565b806373d2ea851461022357806374afd4521461023f578063772f243a146102495780637c3cb0af146102535780638f9330301461026f57610142565b80634b5bbf6a1161010a5780634b5bbf6a146101c157806358a1d1ed146101cb5780635b94e31e146101d5578063622051f1146101df5780636f1fdc31146101e95780636fc588d21461020557610142565b80631b4f3f3d146101475780631f542cf3146101515780633ba4178b1461016d578063467e3d371461018957806347c56769146101a5575b600080fd5b61014f6102eb565b005b61016b60048036038101906101669190610a66565b61030f565b005b61018760048036038101906101829190610a12565b610360565b005b6101a3600480360381019061019e91906109a8565b61039f565b005b6101bf60048036038101906101ba919061097f565b6103e7565b005b6101c9610424565b005b6101d361046d565b005b6101dd61047a565b005b6101e76104b1565b005b61020360048036038101906101fe91906109a8565b610533565b005b61020d610592565b60405161021a9190610b8f565b60405180910390f35b61023d600480360381019061023891906109e9565b61059b565b005b6102476105ef565b005b610251610608565b005b61026d600480360381019061026891906109e9565b6106a3565b005b6102896004803603810190610284919061097f565b6106e0565b005b610293610734565b005b61029d610766565b005b6102a76107b4565b005b6102c360048036038101906102be9190610a66565b6107fd565b005b6102df60048036038101906102da9190610a12565b610865565b005b6102e96108bb565b005b6000808154809291906102fd90610cd3565b9190505550600061030d57600080fd5b565b6040518060400160405280838152602001828152506040517fdecab0e70000000000000000000000000000000000000000000000000000000081526004016103579190610b74565b60405180910390fd5b81816040517fa92ee8e3000000000000000000000000000000000000000000000000000000008152600401610396929190610baa565b60405180910390fd5b600081906103e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103da9190610b52565b60405180910390fd5b5050565b806040517fcdd7a0cc00000000000000000000000000000000000000000000000000000000815260040161041b9190610b37565b60405180910390fd5b60008081548092919061043690610cd3565b91905055506040517fd2c097a600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061047857600080fd5b565b60006104af577f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340d83b246040518163ffffffff1660e01b815260040160006040518083038186803b15801561051957600080fd5b505afa15801561052d573d6000803e3d6000fd5b50505050565b60008081548092919061054590610cd3565b91905055506000819061058e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105859190610b52565b60405180910390fd5b5050565b60008054905090565b6000808154809291906105ad90610cd3565b9190505550806040517f01f4d5d20000000000000000000000000000000000000000000000000000000081526004016105e69190610b8f565b60405180910390fd5b60008081548092919061060190610cd3565b9190505550565b60008081548092919061061a90610cd3565b9190505550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634b2bd7e96040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561068957600080fd5b505af115801561069d573d6000803e3d6000fd5b50505050565b806040517f01f4d5d20000000000000000000000000000000000000000000000000000000081526004016106d79190610b8f565b60405180910390fd5b6000808154809291906106f290610cd3565b9190505550806040517fcdd7a0cc00000000000000000000000000000000000000000000000000000000815260040161072b9190610b37565b60405180910390fd5b6040517fd2c097a600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008081548092919061077890610cd3565b919050555060006107b2577f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b565b6000808154809291906107c690610cd3565b91905055506040517f0bd3d39c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008081548092919061080f90610cd3565b91905055506040518060400160405280838152602001828152506040517fdecab0e700000000000000000000000000000000000000000000000000000000815260040161085c9190610b74565b60405180910390fd5b60008081548092919061087790610cd3565b919050555081816040517fa92ee8e30000000000000000000000000000000000000000000000000000000081526004016108b2929190610baa565b60405180910390fd5b6040517f0bd3d39c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006109006108fb84610bff565b610bda565b90508281526020810184848401111561091857600080fd5b610923848285610c60565b509392505050565b60008135905061093a81610d8b565b92915050565b600082601f83011261095157600080fd5b81356109618482602086016108ed565b91505092915050565b60008135905061097981610da2565b92915050565b60006020828403121561099157600080fd5b600061099f8482850161092b565b91505092915050565b6000602082840312156109ba57600080fd5b600082013567ffffffffffffffff8111156109d457600080fd5b6109e084828501610940565b91505092915050565b6000602082840312156109fb57600080fd5b6000610a098482850161096a565b91505092915050565b60008060408385031215610a2557600080fd5b6000610a338582860161096a565b925050602083013567ffffffffffffffff811115610a5057600080fd5b610a5c85828601610940565b9150509250929050565b60008060408385031215610a7957600080fd5b6000610a878582860161096a565b9250506020610a988582860161096a565b9150509250929050565b610aab81610c4c565b82525050565b6000610abc82610c30565b610ac68185610c3b565b9350610ad6818560208601610c6f565b610adf81610d7a565b840191505092915050565b604082016000820151610b006000850182610b19565b506020820151610b136020850182610b19565b50505050565b610b2281610c56565b82525050565b610b3181610c56565b82525050565b6000602082019050610b4c6000830184610aa2565b92915050565b60006020820190508181036000830152610b6c8184610ab1565b905092915050565b6000604082019050610b896000830184610aea565b92915050565b6000602082019050610ba46000830184610b28565b92915050565b6000604082019050610bbf6000830185610b28565b8181036020830152610bd18184610ab1565b90509392505050565b6000610be4610bf5565b9050610bf08282610ca2565b919050565b6000604051905090565b600067ffffffffffffffff821115610c1a57610c19610d4b565b5b610c2382610d7a565b9050602081019050919050565b600081519050919050565b600082825260208201905092915050565b6000819050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015610c8d578082015181840152602081019050610c72565b83811115610c9c576000848401525b50505050565b610cab82610d7a565b810181811067ffffffffffffffff82111715610cca57610cc9610d4b565b5b80604052505050565b6000610cde82610c56565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415610d1157610d10610d1c565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b610d9481610c4c565b8114610d9f57600080fd5b50565b610dab81610c56565b8114610db657600080fd5b5056fea264697066735822122025e4c9eca28af81eeb16cfbb3832355e24c64c7eae221a5034159a671d61281464736f6c63430008040033608060405234801561001057600080fd5b50610182806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c806340d83b241461003b5780634b2bd7e914610045575b600080fd5b61004361004f565b005b61004d610081565b005b6040517fff05e87500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080815480929190610093906100d4565b91905055506040517fff05e87500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000819050919050565b60006100df826100ca565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156101125761011161011d565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea2646970667358221220188b4117d3c1f35f2fcbff7fbf51ee28f08c8abd18e3796ccd1d2fbc8c862e3f64736f6c63430008040033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101425760003560e01c806373d2ea85116100b8578063aac014e01161007c578063aac014e01461028b578063b6bbe06114610295578063bad92aa91461029f578063e0a03812146102a9578063fe276a34146102c5578063ffb4746b146102e157610142565b806373d2ea851461022357806374afd4521461023f578063772f243a146102495780637c3cb0af146102535780638f9330301461026f57610142565b80634b5bbf6a1161010a5780634b5bbf6a146101c157806358a1d1ed146101cb5780635b94e31e146101d5578063622051f1146101df5780636f1fdc31146101e95780636fc588d21461020557610142565b80631b4f3f3d146101475780631f542cf3146101515780633ba4178b1461016d578063467e3d371461018957806347c56769146101a5575b600080fd5b61014f6102eb565b005b61016b60048036038101906101669190610a66565b61030f565b005b61018760048036038101906101829190610a12565b610360565b005b6101a3600480360381019061019e91906109a8565b61039f565b005b6101bf60048036038101906101ba919061097f565b6103e7565b005b6101c9610424565b005b6101d361046d565b005b6101dd61047a565b005b6101e76104b1565b005b61020360048036038101906101fe91906109a8565b610533565b005b61020d610592565b60405161021a9190610b8f565b60405180910390f35b61023d600480360381019061023891906109e9565b61059b565b005b6102476105ef565b005b610251610608565b005b61026d600480360381019061026891906109e9565b6106a3565b005b6102896004803603810190610284919061097f565b6106e0565b005b610293610734565b005b61029d610766565b005b6102a76107b4565b005b6102c360048036038101906102be9190610a66565b6107fd565b005b6102df60048036038101906102da9190610a12565b610865565b005b6102e96108bb565b005b6000808154809291906102fd90610cd3565b9190505550600061030d57600080fd5b565b6040518060400160405280838152602001828152506040517fdecab0e70000000000000000000000000000000000000000000000000000000081526004016103579190610b74565b60405180910390fd5b81816040517fa92ee8e3000000000000000000000000000000000000000000000000000000008152600401610396929190610baa565b60405180910390fd5b600081906103e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103da9190610b52565b60405180910390fd5b5050565b806040517fcdd7a0cc00000000000000000000000000000000000000000000000000000000815260040161041b9190610b37565b60405180910390fd5b60008081548092919061043690610cd3565b91905055506040517fd2c097a600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061047857600080fd5b565b60006104af577f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340d83b246040518163ffffffff1660e01b815260040160006040518083038186803b15801561051957600080fd5b505afa15801561052d573d6000803e3d6000fd5b50505050565b60008081548092919061054590610cd3565b91905055506000819061058e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105859190610b52565b60405180910390fd5b5050565b60008054905090565b6000808154809291906105ad90610cd3565b9190505550806040517f01f4d5d20000000000000000000000000000000000000000000000000000000081526004016105e69190610b8f565b60405180910390fd5b60008081548092919061060190610cd3565b9190505550565b60008081548092919061061a90610cd3565b9190505550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634b2bd7e96040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561068957600080fd5b505af115801561069d573d6000803e3d6000fd5b50505050565b806040517f01f4d5d20000000000000000000000000000000000000000000000000000000081526004016106d79190610b8f565b60405180910390fd5b6000808154809291906106f290610cd3565b9190505550806040517fcdd7a0cc00000000000000000000000000000000000000000000000000000000815260040161072b9190610b37565b60405180910390fd5b6040517fd2c097a600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008081548092919061077890610cd3565b919050555060006107b2577f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b565b6000808154809291906107c690610cd3565b91905055506040517f0bd3d39c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008081548092919061080f90610cd3565b91905055506040518060400160405280838152602001828152506040517fdecab0e700000000000000000000000000000000000000000000000000000000815260040161085c9190610b74565b60405180910390fd5b60008081548092919061087790610cd3565b919050555081816040517fa92ee8e30000000000000000000000000000000000000000000000000000000081526004016108b2929190610baa565b60405180910390fd5b6040517f0bd3d39c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006109006108fb84610bff565b610bda565b90508281526020810184848401111561091857600080fd5b610923848285610c60565b509392505050565b60008135905061093a81610d8b565b92915050565b600082601f83011261095157600080fd5b81356109618482602086016108ed565b91505092915050565b60008135905061097981610da2565b92915050565b60006020828403121561099157600080fd5b600061099f8482850161092b565b91505092915050565b6000602082840312156109ba57600080fd5b600082013567ffffffffffffffff8111156109d457600080fd5b6109e084828501610940565b91505092915050565b6000602082840312156109fb57600080fd5b6000610a098482850161096a565b91505092915050565b60008060408385031215610a2557600080fd5b6000610a338582860161096a565b925050602083013567ffffffffffffffff811115610a5057600080fd5b610a5c85828601610940565b9150509250929050565b60008060408385031215610a7957600080fd5b6000610a878582860161096a565b9250506020610a988582860161096a565b9150509250929050565b610aab81610c4c565b82525050565b6000610abc82610c30565b610ac68185610c3b565b9350610ad6818560208601610c6f565b610adf81610d7a565b840191505092915050565b604082016000820151610b006000850182610b19565b506020820151610b136020850182610b19565b50505050565b610b2281610c56565b82525050565b610b3181610c56565b82525050565b6000602082019050610b4c6000830184610aa2565b92915050565b60006020820190508181036000830152610b6c8184610ab1565b905092915050565b6000604082019050610b896000830184610aea565b92915050565b6000602082019050610ba46000830184610b28565b92915050565b6000604082019050610bbf6000830185610b28565b8181036020830152610bd18184610ab1565b90509392505050565b6000610be4610bf5565b9050610bf08282610ca2565b919050565b6000604051905090565b600067ffffffffffffffff821115610c1a57610c19610d4b565b5b610c2382610d7a565b9050602081019050919050565b600081519050919050565b600082825260208201905092915050565b6000819050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015610c8d578082015181840152602081019050610c72565b83811115610c9c576000848401525b50505050565b610cab82610d7a565b810181811067ffffffffffffffff82111715610cca57610cc9610d4b565b5b80604052505050565b6000610cde82610c56565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415610d1157610d10610d1c565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b610d9481610c4c565b8114610d9f57600080fd5b50565b610dab81610c56565b8114610db657600080fd5b5056fea264697066735822122025e4c9eca28af81eeb16cfbb3832355e24c64c7eae221a5034159a671d61281464736f6c63430008040033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Token.sol/MockToken.dbg.json b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Token.sol/MockToken.dbg.json new file mode 100644 index 0000000000..224dfafc9c --- /dev/null +++ b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Token.sol/MockToken.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../build-info/16efa488de3a0283218beddfadbd1423.json" +} diff --git a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Token.sol/MockToken.json b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Token.sol/MockToken.json new file mode 100644 index 0000000000..20f3bfa19b --- /dev/null +++ b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Token.sol/MockToken.json @@ -0,0 +1,183 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "MockToken", + "sourceName": "contracts/Token.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "remaining", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "success", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x608060405260016000556040518060400160405280600981526020017f4d6f636b546f6b656e000000000000000000000000000000000000000000000081525060049080519060200190620000569291906200010a565b506040518060400160405280600381526020017f4d434b000000000000000000000000000000000000000000000000000000000081525060059080519060200190620000a49291906200010a565b50348015620000b257600080fd5b50633b9aca00600181905550600154600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506200021f565b8280546200011890620001ba565b90600052602060002090601f0160209004810192826200013c576000855562000188565b82601f106200015757805160ff191683800117855562000188565b8280016001018555821562000188579182015b82811115620001875782518255916020019190600101906200016a565b5b5090506200019791906200019b565b5090565b5b80821115620001b65760008160009055506001016200019c565b5090565b60006002820490506001821680620001d357607f821691505b60208210811415620001ea57620001e9620001f0565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b610bad806200022f6000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c8063313ce56711610066578063313ce5671461013457806370a082311461015257806395d89b4114610182578063a9059cbb146101a0578063dd62ed3e146101d057610093565b806306fdde0314610098578063095ea7b3146100b657806318160ddd146100e657806323b872dd14610104575b600080fd5b6100a0610200565b6040516100ad91906108b8565b60405180910390f35b6100d060048036038101906100cb91906107c4565b61028e565b6040516100dd919061089d565b60405180910390f35b6100ee61031b565b6040516100fb919061091a565b60405180910390f35b61011e60048036038101906101199190610775565b610321565b60405161012b919061089d565b60405180910390f35b61013c6104b9565b604051610149919061091a565b60405180910390f35b61016c60048036038101906101679190610710565b6104bf565b604051610179919061091a565b60405180910390f35b61018a6104d7565b60405161019791906108b8565b60405180910390f35b6101ba60048036038101906101b591906107c4565b610565565b6040516101c7919061089d565b60405180910390f35b6101ea60048036038101906101e59190610739565b61065f565b6040516101f7919061091a565b60405180910390f35b6004805461020d90610a56565b80601f016020809104026020016040519081016040528092919081815260200182805461023990610a56565b80156102865780601f1061025b57610100808354040283529160200191610286565b820191906000526020600020905b81548152906001019060200180831161026957829003601f168201915b505050505081565b600081600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001905092915050565b60015481565b60008161032e853361065f565b101561036f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610366906108da565b60405180910390fd5b81600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546103fb91906109a7565b9250508190555081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461045191906109a7565b9250508190555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546104a79190610951565b92505081905550600190509392505050565b60005481565b60026020528060005260406000206000915090505481565b600580546104e490610a56565b80601f016020809104026020016040519081016040528092919081815260200182805461051090610a56565b801561055d5780601f106105325761010080835404028352916020019161055d565b820191906000526020600020905b81548152906001019060200180831161054057829003601f168201915b505050505081565b60008082116105a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105a0906108fa565b60405180910390fd5b81600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546105f891906109a7565b9250508190555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461064e9190610951565b925050819055506001905092915050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000813590506106f581610b49565b92915050565b60008135905061070a81610b60565b92915050565b60006020828403121561072257600080fd5b6000610730848285016106e6565b91505092915050565b6000806040838503121561074c57600080fd5b600061075a858286016106e6565b925050602061076b858286016106e6565b9150509250929050565b60008060006060848603121561078a57600080fd5b6000610798868287016106e6565b93505060206107a9868287016106e6565b92505060406107ba868287016106fb565b9150509250925092565b600080604083850312156107d757600080fd5b60006107e5858286016106e6565b92505060206107f6858286016106fb565b9150509250929050565b610809816109ed565b82525050565b600061081a82610935565b6108248185610940565b9350610834818560208601610a23565b61083d81610ae6565b840191505092915050565b6000610855601683610940565b915061086082610af7565b602082019050919050565b6000610878601983610940565b915061088382610b20565b602082019050919050565b61089781610a19565b82525050565b60006020820190506108b26000830184610800565b92915050565b600060208201905081810360008301526108d2818461080f565b905092915050565b600060208201905081810360008301526108f381610848565b9050919050565b600060208201905081810360008301526109138161086b565b9050919050565b600060208201905061092f600083018461088e565b92915050565b600081519050919050565b600082825260208201905092915050565b600061095c82610a19565b915061096783610a19565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561099c5761099b610a88565b5b828201905092915050565b60006109b282610a19565b91506109bd83610a19565b9250828210156109d0576109cf610a88565b5b828203905092915050565b60006109e6826109f9565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b83811015610a41578082015181840152602081019050610a26565b83811115610a50576000848401525b50505050565b60006002820490506001821680610a6e57607f821691505b60208210811415610a8257610a81610ab7565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f496e73756666696369656e7420616c6c6f77616e636500000000000000000000600082015250565b7f5472616e736665727265642076616c7565206973207a65726f00000000000000600082015250565b610b52816109db565b8114610b5d57600080fd5b50565b610b6981610a19565b8114610b7457600080fd5b5056fea26469706673582212208ce961870c9d6cd505270df5da0c70d49a8f6cb7e04d5a03b16637783be136e764736f6c63430008040033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100935760003560e01c8063313ce56711610066578063313ce5671461013457806370a082311461015257806395d89b4114610182578063a9059cbb146101a0578063dd62ed3e146101d057610093565b806306fdde0314610098578063095ea7b3146100b657806318160ddd146100e657806323b872dd14610104575b600080fd5b6100a0610200565b6040516100ad91906108b8565b60405180910390f35b6100d060048036038101906100cb91906107c4565b61028e565b6040516100dd919061089d565b60405180910390f35b6100ee61031b565b6040516100fb919061091a565b60405180910390f35b61011e60048036038101906101199190610775565b610321565b60405161012b919061089d565b60405180910390f35b61013c6104b9565b604051610149919061091a565b60405180910390f35b61016c60048036038101906101679190610710565b6104bf565b604051610179919061091a565b60405180910390f35b61018a6104d7565b60405161019791906108b8565b60405180910390f35b6101ba60048036038101906101b591906107c4565b610565565b6040516101c7919061089d565b60405180910390f35b6101ea60048036038101906101e59190610739565b61065f565b6040516101f7919061091a565b60405180910390f35b6004805461020d90610a56565b80601f016020809104026020016040519081016040528092919081815260200182805461023990610a56565b80156102865780601f1061025b57610100808354040283529160200191610286565b820191906000526020600020905b81548152906001019060200180831161026957829003601f168201915b505050505081565b600081600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001905092915050565b60015481565b60008161032e853361065f565b101561036f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610366906108da565b60405180910390fd5b81600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546103fb91906109a7565b9250508190555081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461045191906109a7565b9250508190555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546104a79190610951565b92505081905550600190509392505050565b60005481565b60026020528060005260406000206000915090505481565b600580546104e490610a56565b80601f016020809104026020016040519081016040528092919081815260200182805461051090610a56565b801561055d5780601f106105325761010080835404028352916020019161055d565b820191906000526020600020905b81548152906001019060200180831161054057829003601f168201915b505050505081565b60008082116105a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105a0906108fa565b60405180910390fd5b81600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546105f891906109a7565b9250508190555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461064e9190610951565b925050819055506001905092915050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000813590506106f581610b49565b92915050565b60008135905061070a81610b60565b92915050565b60006020828403121561072257600080fd5b6000610730848285016106e6565b91505092915050565b6000806040838503121561074c57600080fd5b600061075a858286016106e6565b925050602061076b858286016106e6565b9150509250929050565b60008060006060848603121561078a57600080fd5b6000610798868287016106e6565b93505060206107a9868287016106e6565b92505060406107ba868287016106fb565b9150509250925092565b600080604083850312156107d757600080fd5b60006107e5858286016106e6565b92505060206107f6858286016106fb565b9150509250929050565b610809816109ed565b82525050565b600061081a82610935565b6108248185610940565b9350610834818560208601610a23565b61083d81610ae6565b840191505092915050565b6000610855601683610940565b915061086082610af7565b602082019050919050565b6000610878601983610940565b915061088382610b20565b602082019050919050565b61089781610a19565b82525050565b60006020820190506108b26000830184610800565b92915050565b600060208201905081810360008301526108d2818461080f565b905092915050565b600060208201905081810360008301526108f381610848565b9050919050565b600060208201905081810360008301526109138161086b565b9050919050565b600060208201905061092f600083018461088e565b92915050565b600081519050919050565b600082825260208201905092915050565b600061095c82610a19565b915061096783610a19565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561099c5761099b610a88565b5b828201905092915050565b60006109b282610a19565b91506109bd83610a19565b9250828210156109d0576109cf610a88565b5b828203905092915050565b60006109e6826109f9565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b83811015610a41578082015181840152602081019050610a26565b83811115610a50576000848401525b50505050565b60006002820490506001821680610a6e57607f821691505b60208210811415610a8257610a81610ab7565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f496e73756666696369656e7420616c6c6f77616e636500000000000000000000600082015250565b7f5472616e736665727265642076616c7565206973207a65726f00000000000000600082015250565b610b52816109db565b8114610b5d57600080fd5b50565b610b6981610a19565b8114610b7457600080fd5b5056fea26469706673582212208ce961870c9d6cd505270df5da0c70d49a8f6cb7e04d5a03b16637783be136e764736f6c63430008040033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Token.sol/NotAToken.dbg.json b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Token.sol/NotAToken.dbg.json new file mode 100644 index 0000000000..224dfafc9c --- /dev/null +++ b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Token.sol/NotAToken.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../build-info/16efa488de3a0283218beddfadbd1423.json" +} diff --git a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Token.sol/NotAToken.json b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Token.sol/NotAToken.json new file mode 100644 index 0000000000..e50d9826d8 --- /dev/null +++ b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Token.sol/NotAToken.json @@ -0,0 +1,10 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "NotAToken", + "sourceName": "contracts/Token.sol", + "abi": [], + "bytecode": "0x6080604052348015600f57600080fd5b50603f80601d6000396000f3fe6080604052600080fdfea26469706673582212209449725821c33b87347a40f451b2c6483bf5505349fe39bcd25604669e50f33364736f6c63430008040033", + "deployedBytecode": "0x6080604052600080fdfea26469706673582212209449725821c33b87347a40f451b2c6483bf5505349fe39bcd25604669e50f33364736f6c63430008040033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Token.sol/TokenWithOnlyName.dbg.json b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Token.sol/TokenWithOnlyName.dbg.json new file mode 100644 index 0000000000..224dfafc9c --- /dev/null +++ b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Token.sol/TokenWithOnlyName.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../build-info/16efa488de3a0283218beddfadbd1423.json" +} diff --git a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Token.sol/TokenWithOnlyName.json b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Token.sol/TokenWithOnlyName.json new file mode 100644 index 0000000000..65eb5c812c --- /dev/null +++ b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Token.sol/TokenWithOnlyName.json @@ -0,0 +1,170 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "TokenWithOnlyName", + "sourceName": "contracts/Token.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "remaining", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "success", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x608060405260016000556040518060400160405280600981526020017f4d6f636b546f6b656e0000000000000000000000000000000000000000000000815250600490805190602001906100549291906100b8565b5034801561006157600080fd5b50633b9aca00600181905550600154600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506101bc565b8280546100c49061015b565b90600052602060002090601f0160209004810192826100e6576000855561012d565b82601f106100ff57805160ff191683800117855561012d565b8280016001018555821561012d579182015b8281111561012c578251825591602001919060010190610111565b5b50905061013a919061013e565b5090565b5b8082111561015757600081600090555060010161013f565b5090565b6000600282049050600182168061017357607f821691505b602082108114156101875761018661018d565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b610af6806101cb6000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063313ce5671161005b578063313ce5671461012957806370a0823114610147578063a9059cbb14610177578063dd62ed3e146101a757610088565b806306fdde031461008d578063095ea7b3146100ab57806318160ddd146100db57806323b872dd146100f9575b600080fd5b6100956101d7565b6040516100a29190610801565b60405180910390f35b6100c560048036038101906100c0919061070d565b610265565b6040516100d291906107e6565b60405180910390f35b6100e36102f2565b6040516100f09190610863565b60405180910390f35b610113600480360381019061010e91906106be565b6102f8565b60405161012091906107e6565b60405180910390f35b610131610490565b60405161013e9190610863565b60405180910390f35b610161600480360381019061015c9190610659565b610496565b60405161016e9190610863565b60405180910390f35b610191600480360381019061018c919061070d565b6104ae565b60405161019e91906107e6565b60405180910390f35b6101c160048036038101906101bc9190610682565b6105a8565b6040516101ce9190610863565b60405180910390f35b600480546101e49061099f565b80601f01602080910402602001604051908101604052809291908181526020018280546102109061099f565b801561025d5780601f106102325761010080835404028352916020019161025d565b820191906000526020600020905b81548152906001019060200180831161024057829003601f168201915b505050505081565b600081600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001905092915050565b60015481565b60008161030585336105a8565b1015610346576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161033d90610823565b60405180910390fd5b81600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546103d291906108f0565b9250508190555081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461042891906108f0565b9250508190555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461047e919061089a565b92505081905550600190509392505050565b60005481565b60026020528060005260406000206000915090505481565b60008082116104f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104e990610843565b60405180910390fd5b81600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461054191906108f0565b9250508190555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610597919061089a565b925050819055506001905092915050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008135905061063e81610a92565b92915050565b60008135905061065381610aa9565b92915050565b60006020828403121561066b57600080fd5b60006106798482850161062f565b91505092915050565b6000806040838503121561069557600080fd5b60006106a38582860161062f565b92505060206106b48582860161062f565b9150509250929050565b6000806000606084860312156106d357600080fd5b60006106e18682870161062f565b93505060206106f28682870161062f565b925050604061070386828701610644565b9150509250925092565b6000806040838503121561072057600080fd5b600061072e8582860161062f565b925050602061073f85828601610644565b9150509250929050565b61075281610936565b82525050565b60006107638261087e565b61076d8185610889565b935061077d81856020860161096c565b61078681610a2f565b840191505092915050565b600061079e601683610889565b91506107a982610a40565b602082019050919050565b60006107c1601983610889565b91506107cc82610a69565b602082019050919050565b6107e081610962565b82525050565b60006020820190506107fb6000830184610749565b92915050565b6000602082019050818103600083015261081b8184610758565b905092915050565b6000602082019050818103600083015261083c81610791565b9050919050565b6000602082019050818103600083015261085c816107b4565b9050919050565b600060208201905061087860008301846107d7565b92915050565b600081519050919050565b600082825260208201905092915050565b60006108a582610962565b91506108b083610962565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156108e5576108e46109d1565b5b828201905092915050565b60006108fb82610962565b915061090683610962565b925082821015610919576109186109d1565b5b828203905092915050565b600061092f82610942565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b8381101561098a57808201518184015260208101905061096f565b83811115610999576000848401525b50505050565b600060028204905060018216806109b757607f821691505b602082108114156109cb576109ca610a00565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f496e73756666696369656e7420616c6c6f77616e636500000000000000000000600082015250565b7f5472616e736665727265642076616c7565206973207a65726f00000000000000600082015250565b610a9b81610924565b8114610aa657600080fd5b50565b610ab281610962565b8114610abd57600080fd5b5056fea2646970667358221220a6fcd04aa893368d0e3e9a004a848844c520623183d6b2111fbc6f837204d0fa64736f6c63430008040033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100885760003560e01c8063313ce5671161005b578063313ce5671461012957806370a0823114610147578063a9059cbb14610177578063dd62ed3e146101a757610088565b806306fdde031461008d578063095ea7b3146100ab57806318160ddd146100db57806323b872dd146100f9575b600080fd5b6100956101d7565b6040516100a29190610801565b60405180910390f35b6100c560048036038101906100c0919061070d565b610265565b6040516100d291906107e6565b60405180910390f35b6100e36102f2565b6040516100f09190610863565b60405180910390f35b610113600480360381019061010e91906106be565b6102f8565b60405161012091906107e6565b60405180910390f35b610131610490565b60405161013e9190610863565b60405180910390f35b610161600480360381019061015c9190610659565b610496565b60405161016e9190610863565b60405180910390f35b610191600480360381019061018c919061070d565b6104ae565b60405161019e91906107e6565b60405180910390f35b6101c160048036038101906101bc9190610682565b6105a8565b6040516101ce9190610863565b60405180910390f35b600480546101e49061099f565b80601f01602080910402602001604051908101604052809291908181526020018280546102109061099f565b801561025d5780601f106102325761010080835404028352916020019161025d565b820191906000526020600020905b81548152906001019060200180831161024057829003601f168201915b505050505081565b600081600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001905092915050565b60015481565b60008161030585336105a8565b1015610346576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161033d90610823565b60405180910390fd5b81600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546103d291906108f0565b9250508190555081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461042891906108f0565b9250508190555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461047e919061089a565b92505081905550600190509392505050565b60005481565b60026020528060005260406000206000915090505481565b60008082116104f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104e990610843565b60405180910390fd5b81600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461054191906108f0565b9250508190555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610597919061089a565b925050819055506001905092915050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008135905061063e81610a92565b92915050565b60008135905061065381610aa9565b92915050565b60006020828403121561066b57600080fd5b60006106798482850161062f565b91505092915050565b6000806040838503121561069557600080fd5b60006106a38582860161062f565b92505060206106b48582860161062f565b9150509250929050565b6000806000606084860312156106d357600080fd5b60006106e18682870161062f565b93505060206106f28682870161062f565b925050604061070386828701610644565b9150509250925092565b6000806040838503121561072057600080fd5b600061072e8582860161062f565b925050602061073f85828601610644565b9150509250929050565b61075281610936565b82525050565b60006107638261087e565b61076d8185610889565b935061077d81856020860161096c565b61078681610a2f565b840191505092915050565b600061079e601683610889565b91506107a982610a40565b602082019050919050565b60006107c1601983610889565b91506107cc82610a69565b602082019050919050565b6107e081610962565b82525050565b60006020820190506107fb6000830184610749565b92915050565b6000602082019050818103600083015261081b8184610758565b905092915050565b6000602082019050818103600083015261083c81610791565b9050919050565b6000602082019050818103600083015261085c816107b4565b9050919050565b600060208201905061087860008301846107d7565b92915050565b600081519050919050565b600082825260208201905092915050565b60006108a582610962565b91506108b083610962565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156108e5576108e46109d1565b5b828201905092915050565b60006108fb82610962565b915061090683610962565b925082821015610919576109186109d1565b5b828203905092915050565b600061092f82610942565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b8381101561098a57808201518184015260208101905061096f565b83811115610999576000848401525b50505050565b600060028204905060018216806109b757607f821691505b602082108114156109cb576109ca610a00565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f496e73756666696369656e7420616c6c6f77616e636500000000000000000000600082015250565b7f5472616e736665727265642076616c7565206973207a65726f00000000000000600082015250565b610a9b81610924565b8114610aa657600080fd5b50565b610ab281610962565b8114610abd57600080fd5b5056fea2646970667358221220a6fcd04aa893368d0e3e9a004a848844c520623183d6b2111fbc6f837204d0fa64736f6c63430008040033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Token.sol/TokenWithoutNameNorSymbol.dbg.json b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Token.sol/TokenWithoutNameNorSymbol.dbg.json new file mode 100644 index 0000000000..224dfafc9c --- /dev/null +++ b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Token.sol/TokenWithoutNameNorSymbol.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../build-info/16efa488de3a0283218beddfadbd1423.json" +} diff --git a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Token.sol/TokenWithoutNameNorSymbol.json b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Token.sol/TokenWithoutNameNorSymbol.json new file mode 100644 index 0000000000..14e0511214 --- /dev/null +++ b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Token.sol/TokenWithoutNameNorSymbol.json @@ -0,0 +1,162 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "TokenWithoutNameNorSymbol", + "sourceName": "contracts/Token.sol", + "abi": [ + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "remaining", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "success", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x6080604052600160005534801561001557600080fd5b50633b9aca00600181905550600154600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610934806100766000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c8063313ce5671161005b578063313ce5671461010057806370a082311461011e578063a9059cbb1461014e578063dd62ed3e1461017e5761007d565b8063095ea7b31461008257806318160ddd146100b257806323b872dd146100d0575b600080fd5b61009c60048036038101906100979190610656565b6101ae565b6040516100a991906106f6565b60405180910390f35b6100ba61023b565b6040516100c79190610751565b60405180910390f35b6100ea60048036038101906100e59190610607565b610241565b6040516100f791906106f6565b60405180910390f35b6101086103d9565b6040516101159190610751565b60405180910390f35b610138600480360381019061013391906105a2565b6103df565b6040516101459190610751565b60405180910390f35b61016860048036038101906101639190610656565b6103f7565b60405161017591906106f6565b60405180910390f35b610198600480360381019061019391906105cb565b6104f1565b6040516101a59190610751565b60405180910390f35b600081600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001905092915050565b60015481565b60008161024e85336104f1565b101561028f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161028690610711565b60405180910390fd5b81600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461031b91906107d3565b9250508190555081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461037191906107d3565b9250508190555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546103c7919061077d565b92505081905550600190509392505050565b60005481565b60026020528060005260406000206000915090505481565b600080821161043b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043290610731565b60405180910390fd5b81600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461048a91906107d3565b9250508190555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546104e0919061077d565b925050819055506001905092915050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600081359050610587816108d0565b92915050565b60008135905061059c816108e7565b92915050565b6000602082840312156105b457600080fd5b60006105c284828501610578565b91505092915050565b600080604083850312156105de57600080fd5b60006105ec85828601610578565b92505060206105fd85828601610578565b9150509250929050565b60008060006060848603121561061c57600080fd5b600061062a86828701610578565b935050602061063b86828701610578565b925050604061064c8682870161058d565b9150509250925092565b6000806040838503121561066957600080fd5b600061067785828601610578565b92505060206106888582860161058d565b9150509250929050565b61069b81610819565b82525050565b60006106ae60168361076c565b91506106b98261087e565b602082019050919050565b60006106d160198361076c565b91506106dc826108a7565b602082019050919050565b6106f081610845565b82525050565b600060208201905061070b6000830184610692565b92915050565b6000602082019050818103600083015261072a816106a1565b9050919050565b6000602082019050818103600083015261074a816106c4565b9050919050565b600060208201905061076660008301846106e7565b92915050565b600082825260208201905092915050565b600061078882610845565b915061079383610845565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156107c8576107c761084f565b5b828201905092915050565b60006107de82610845565b91506107e983610845565b9250828210156107fc576107fb61084f565b5b828203905092915050565b600061081282610825565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f496e73756666696369656e7420616c6c6f77616e636500000000000000000000600082015250565b7f5472616e736665727265642076616c7565206973207a65726f00000000000000600082015250565b6108d981610807565b81146108e457600080fd5b50565b6108f081610845565b81146108fb57600080fd5b5056fea2646970667358221220a8a6918adf2af132e4e49a96a108a2d9c62cfb74de3e267b6c8af323b87f6ec964736f6c63430008040033", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061007d5760003560e01c8063313ce5671161005b578063313ce5671461010057806370a082311461011e578063a9059cbb1461014e578063dd62ed3e1461017e5761007d565b8063095ea7b31461008257806318160ddd146100b257806323b872dd146100d0575b600080fd5b61009c60048036038101906100979190610656565b6101ae565b6040516100a991906106f6565b60405180910390f35b6100ba61023b565b6040516100c79190610751565b60405180910390f35b6100ea60048036038101906100e59190610607565b610241565b6040516100f791906106f6565b60405180910390f35b6101086103d9565b6040516101159190610751565b60405180910390f35b610138600480360381019061013391906105a2565b6103df565b6040516101459190610751565b60405180910390f35b61016860048036038101906101639190610656565b6103f7565b60405161017591906106f6565b60405180910390f35b610198600480360381019061019391906105cb565b6104f1565b6040516101a59190610751565b60405180910390f35b600081600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001905092915050565b60015481565b60008161024e85336104f1565b101561028f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161028690610711565b60405180910390fd5b81600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461031b91906107d3565b9250508190555081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461037191906107d3565b9250508190555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546103c7919061077d565b92505081905550600190509392505050565b60005481565b60026020528060005260406000206000915090505481565b600080821161043b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043290610731565b60405180910390fd5b81600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461048a91906107d3565b9250508190555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546104e0919061077d565b925050819055506001905092915050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600081359050610587816108d0565b92915050565b60008135905061059c816108e7565b92915050565b6000602082840312156105b457600080fd5b60006105c284828501610578565b91505092915050565b600080604083850312156105de57600080fd5b60006105ec85828601610578565b92505060206105fd85828601610578565b9150509250929050565b60008060006060848603121561061c57600080fd5b600061062a86828701610578565b935050602061063b86828701610578565b925050604061064c8682870161058d565b9150509250925092565b6000806040838503121561066957600080fd5b600061067785828601610578565b92505060206106888582860161058d565b9150509250929050565b61069b81610819565b82525050565b60006106ae60168361076c565b91506106b98261087e565b602082019050919050565b60006106d160198361076c565b91506106dc826108a7565b602082019050919050565b6106f081610845565b82525050565b600060208201905061070b6000830184610692565b92915050565b6000602082019050818103600083015261072a816106a1565b9050919050565b6000602082019050818103600083015261074a816106c4565b9050919050565b600060208201905061076660008301846106e7565b92915050565b600082825260208201905092915050565b600061078882610845565b915061079383610845565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156107c8576107c761084f565b5b828201905092915050565b60006107de82610845565b91506107e983610845565b9250828210156107fc576107fb61084f565b5b828203905092915050565b600061081282610825565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f496e73756666696369656e7420616c6c6f77616e636500000000000000000000600082015250565b7f5472616e736665727265642076616c7565206973207a65726f00000000000000600082015250565b6108d981610807565b81146108e457600080fd5b50565b6108f081610845565b81146108fb57600080fd5b5056fea2646970667358221220a8a6918adf2af132e4e49a96a108a2d9c62cfb74de3e267b6c8af323b87f6ec964736f6c63430008040033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/v-next/hardhat-chai-matchers/test/helpers/helpers.ts b/v-next/hardhat-chai-matchers/test/helpers/helpers.ts index 1245a0571d..f915e8b8fd 100644 --- a/v-next/hardhat-chai-matchers/test/helpers/helpers.ts +++ b/v-next/hardhat-chai-matchers/test/helpers/helpers.ts @@ -3,23 +3,19 @@ import type { EthereumProvider } from "@ignored/hardhat-vnext/types/providers"; import type { HardhatEthers } from "@ignored/hardhat-vnext-ethers/types"; import type { ContractTransactionResponse } from "ethers/contract"; -import path from "node:path"; - import { createHardhatRuntimeEnvironment } from "@ignored/hardhat-vnext/hre"; import { AssertionError, expect } from "chai"; -export async function initEnvironment(artifactsPath: string): Promise<{ +export async function initEnvironment(_artifactsPath: string): Promise<{ provider: EthereumProvider; ethers: HardhatEthers; }> { const config = (await import(`${process.cwd()}/hardhat.config.ts`)).default; // TODO: remove this when compilation in V3 is executed only when files are not compiled already (when cache is available) - config.paths.artifacts = path.join(".", "artifacts", artifactsPath); - + // config.paths.artifacts = path.join(".", "artifacts", artifactsPath); const hre = await createHardhatRuntimeEnvironment(config); - - await hre.tasks.getTask("compile").run({}); + // await hre.tasks.getTask("compile").run({}); const { ethers, provider } = await hre.network.connect(); diff --git a/v-next/hardhat-chai-matchers/test/matchers/reverted/reverted.ts b/v-next/hardhat-chai-matchers/test/matchers/reverted/reverted.ts index 3c0ca8a8e3..9652ad37e1 100644 --- a/v-next/hardhat-chai-matchers/test/matchers/reverted/reverted.ts +++ b/v-next/hardhat-chai-matchers/test/matchers/reverted/reverted.ts @@ -452,7 +452,7 @@ describe("INTEGRATION: Reverted", { timeout: 60000 }, () => { }), ).to.not.be.reverted(ethers), ).to.be.eventually.rejectedWith( - "Sender doesn't have enough funds to send tx. The max upfront cost is: 1007359608000000 and the sender's balance is: 0.", + /^Sender doesn't have enough funds to send tx\. The max upfront cost is: (\d+) and the sender's balance is: (\d+)\.$/, ); }); }); diff --git a/v-next/hardhat-chai-matchers/test/matchers/reverted/revertedWith.ts b/v-next/hardhat-chai-matchers/test/matchers/reverted/revertedWith.ts index 0c58cc749b..c65d7f46a4 100644 --- a/v-next/hardhat-chai-matchers/test/matchers/reverted/revertedWith.ts +++ b/v-next/hardhat-chai-matchers/test/matchers/reverted/revertedWith.ts @@ -247,7 +247,7 @@ describe("INTEGRATION: Reverted with", { timeout: 60000 }, () => { }), ).to.not.be.revertedWith("some reason"), ).to.be.eventually.rejectedWith( - "Sender doesn't have enough funds to send tx. The max upfront cost is: 1218222876000000 and the sender's balance is: 0.", + /^Sender doesn't have enough funds to send tx\. The max upfront cost is: (\d+) and the sender's balance is: (\d+)\.$/, ); }); }); From b214c846b28cda2e2db1902269f994707d88cfb3 Mon Sep 17 00:00:00 2001 From: ChrisD <18092467+ChristopherDedominici@users.noreply.github.com> Date: Fri, 22 Nov 2024 17:04:02 +0100 Subject: [PATCH 34/61] replace missing chdir with useFixture --- v-next/hardhat-chai-matchers/test/matchers/events.ts | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/v-next/hardhat-chai-matchers/test/matchers/events.ts b/v-next/hardhat-chai-matchers/test/matchers/events.ts index 87eebf704b..973cd98b39 100644 --- a/v-next/hardhat-chai-matchers/test/matchers/events.ts +++ b/v-next/hardhat-chai-matchers/test/matchers/events.ts @@ -9,7 +9,10 @@ import type { HardhatEthers } from "@ignored/hardhat-vnext-ethers/types"; import { before, beforeEach, describe, it } from "node:test"; import { HardhatError } from "@ignored/hardhat-vnext-errors"; -import { assertRejectsWithHardhatError } from "@nomicfoundation/hardhat-test-utils"; +import { + assertRejectsWithHardhatError, + useFixtureProject, +} from "@nomicfoundation/hardhat-test-utils"; import { expect, AssertionError } from "chai"; import { id } from "ethers/hash"; import { hexlify, toUtf8Bytes, zeroPadValue } from "ethers/utils"; @@ -28,7 +31,7 @@ describe(".to.emit (contract events)", { timeout: 60000 }, () => { let matchers: MatchersContract; describe("with the in-process hardhat network", () => { - process.chdir(process.cwd() + "/test/fixture-projects/hardhat-project"); + useFixtureProject("hardhat-project"); runTests(); }); From 6fc68aa3fbff10766f1808b61452a42a49e937fa Mon Sep 17 00:00:00 2001 From: ChrisD <18092467+ChristopherDedominici@users.noreply.github.com> Date: Fri, 22 Nov 2024 17:09:11 +0100 Subject: [PATCH 35/61] remove unused artifact --- .../artifacts/build-info/16efa488de3a0283218beddfadbd1423.json | 1 - 1 file changed, 1 deletion(-) delete mode 100644 v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/build-info/16efa488de3a0283218beddfadbd1423.json diff --git a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/build-info/16efa488de3a0283218beddfadbd1423.json b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/build-info/16efa488de3a0283218beddfadbd1423.json deleted file mode 100644 index 2a1c7ecac1..0000000000 --- a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/build-info/16efa488de3a0283218beddfadbd1423.json +++ /dev/null @@ -1 +0,0 @@ -{"id":"16efa488de3a0283218beddfadbd1423","_format":"hh-sol-build-info-1","solcVersion":"0.8.4","solcLongVersion":"0.8.4+commit.c7e474f2","input":{"language":"Solidity","sources":{"contracts/ChangeEtherBalance.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\ncontract ChangeEtherBalance {\n function returnHalf() public payable {\n payable(msg.sender).transfer(msg.value / 2);\n }\n\n function transferTo(address addr) public payable {\n payable(addr).transfer(msg.value);\n }\n\n receive() external payable {}\n}"},"contracts/Events.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\ncontract Events {\n AnotherContract anotherContract;\n\n struct Struct {\n uint u;\n uint v;\n }\n\n event WithoutArgs();\n event WithUintArg(uint u);\n event WithIntArg(int i);\n event WithAddressArg(address a);\n event WithTwoUintArgs(uint u, uint v);\n event WithStringArg(string s);\n event WithTwoStringArgs(string s, string t);\n event WithIndexedStringArg(string indexed s);\n event WithBytesArg(bytes b);\n event WithIndexedBytesArg(bytes indexed b);\n event WithBytes32Arg(bytes32 b);\n event WithStructArg(Struct s);\n event WithIndexedBytes32Arg(bytes32 indexed b);\n event WithUintArray(uint[2] a);\n event WithBytes32Array(bytes32[2] a);\n\n constructor (AnotherContract c) {\n anotherContract = c;\n }\n\n function doNotEmit() public {}\n\n function emitWithoutArgs() public {\n emit WithoutArgs();\n }\n\n function emitUint(uint u) public {\n emit WithUintArg(u);\n }\n\n function emitInt(int i) public {\n emit WithIntArg(i);\n }\n\n function emitAddress(address a) public {\n emit WithAddressArg(a);\n }\n\n function emitUintTwice(uint u, uint v) public {\n emit WithUintArg(u);\n emit WithUintArg(v);\n }\n\n function emitTwoUints(uint u, uint v) public {\n emit WithTwoUintArgs(u, v);\n }\n\n function emitString(string memory s) public {\n emit WithStringArg(s);\n }\n\n function emitIndexedString(string memory s) public {\n emit WithIndexedStringArg(s);\n }\n\n function emitBytes(bytes memory b) public {\n emit WithBytesArg(b);\n }\n\n function emitIndexedBytes(bytes memory b) public {\n emit WithIndexedBytesArg(b);\n }\n\n function emitBytes32(bytes32 b) public {\n emit WithBytes32Arg(b);\n }\n\n function emitIndexedBytes32(bytes32 b) public {\n emit WithIndexedBytes32Arg(b);\n }\n\n function emitUintAndString(uint u, string memory s) public {\n emit WithStringArg(s);\n emit WithUintArg(u);\n }\n\n function emitTwoUintsAndTwoStrings(uint u, uint v, string memory s, string memory t) public {\n emit WithTwoUintArgs(u, v);\n emit WithTwoStringArgs(s, t);\n }\n\n function emitStruct(uint u, uint v) public {\n emit WithStructArg(Struct(u, v));\n }\n\n function emitUintArray(uint u, uint v) public {\n emit WithUintArray([u, v]);\n }\n\n function emitBytes32Array(bytes32 b, bytes32 c) public {\n emit WithBytes32Array([b, c]);\n }\n\n function emitNestedUintFromSameContract(uint u) public {\n emitUint(u);\n }\n\n function emitNestedUintFromAnotherContract(uint u) public {\n anotherContract.emitUint(u);\n }\n}\n\ncontract AnotherContract {\n event WithUintArg(uint u);\n\n function emitUint(uint u) public {\n emit WithUintArg(u);\n }\n}\n\ncontract OverrideEventContract {\n event simpleEvent(uint u);\n event simpleEvent();\n\n function emitSimpleEventWithUintArg(uint u) public {\n emit simpleEvent(u);\n }\n\n function emitSimpleEventWithoutArg() public {\n emit simpleEvent();\n }\n}\n"},"contracts/Matchers.sol":{"content":"// SPDX-License-Identifier: UNLICENSED\n\npragma solidity ^0.8.0;\n\ncontract Matchers {\n uint x;\n\n event SomeEvent();\n\n AnotherMatchersContract anotherContract;\n\n struct Pair { uint a; uint b; }\n\n error SomeCustomError();\n error AnotherCustomError();\n error CustomErrorWithInt(int);\n error CustomErrorWithUint(uint nameToForceEthersToUseAnArrayLikeWithNamedProperties);\n error CustomErrorWithUintAndString(uint, string);\n error CustomErrorWithPair(Pair);\n\n constructor () {\n anotherContract = new AnotherMatchersContract();\n }\n\n function succeeds() public {\n x++; // just to avoid compiler warnings\n }\n\n function succeedsView() public view returns (uint) {\n return x;\n }\n\n function revertsWith(string memory reason) public {\n x++;\n require(false, reason);\n }\n\n function revertsWithView(string memory reason) public pure {\n require(false, reason);\n }\n\n function revertsWithoutReason() public {\n x++;\n require(false);\n }\n\n function revertsWithoutReasonView() public pure {\n require(false);\n }\n\n function panicAssert() public {\n x++;\n assert(false);\n }\n\n function panicAssertView() public pure {\n assert(false);\n }\n\n function revertWithSomeCustomError() public {\n x++;\n revert SomeCustomError();\n }\n\n function revertWithSomeCustomErrorView() public pure {\n revert SomeCustomError();\n }\n\n function revertWithAnotherCustomError() public {\n x++;\n revert AnotherCustomError();\n }\n\n function revertWithAnotherCustomErrorView() public pure {\n revert AnotherCustomError();\n }\n\n function revertWithAnotherContractCustomError() public {\n x++;\n anotherContract.revertWithYetAnotherCustomError();\n }\n\n function revertWithAnotherContractCustomErrorView() public view {\n anotherContract.revertWithYetAnotherCustomErrorView();\n }\n\n function revertWithCustomErrorWithUint(uint n) public {\n x++;\n revert CustomErrorWithUint(n);\n }\n\n function revertWithCustomErrorWithUintView(uint n) public pure {\n revert CustomErrorWithUint(n);\n }\n\n function revertWithCustomErrorWithInt(int i) public {\n x++;\n revert CustomErrorWithInt(i);\n }\n\n function revertWithCustomErrorWithIntView(int i) public pure {\n revert CustomErrorWithInt(i);\n }\n\n function revertWithCustomErrorWithUintAndString(uint n, string memory s) public {\n x++;\n revert CustomErrorWithUintAndString(n, s);\n }\n\n function revertWithCustomErrorWithUintAndStringView(uint n, string memory s) public pure {\n revert CustomErrorWithUintAndString(n, s);\n }\n\n function revertWithCustomErrorWithPair(uint a, uint b) public {\n x++;\n revert CustomErrorWithPair(Pair(a, b));\n }\n\n function revertWithCustomErrorWithPairView(uint a, uint b) public pure {\n revert CustomErrorWithPair(Pair(a, b));\n }\n}\n\ncontract AnotherMatchersContract {\n uint x;\n\n error YetAnotherCustomError();\n\n function revertWithYetAnotherCustomError() public {\n x++;\n revert YetAnotherCustomError();\n }\n\n function revertWithYetAnotherCustomErrorView() public pure {\n revert YetAnotherCustomError();\n }\n}\n"},"contracts/Token.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\ncontract TokenWithoutNameNorSymbol {\n uint public decimals = 1;\n\n uint public totalSupply;\n mapping(address => uint) public balanceOf;\n mapping(address => mapping(address => uint)) allowances;\n\n constructor () {\n totalSupply = 1_000_000_000;\n balanceOf[msg.sender] = totalSupply;\n }\n\n function transfer(address to, uint value) public returns (bool) {\n require(value > 0, \"Transferred value is zero\");\n\n balanceOf[msg.sender] -= value;\n balanceOf[to] += value;\n\n return true;\n }\n\n function allowance(address owner, address spender) public view returns (uint256 remaining) {\n return allowances[owner][spender];\n }\n\n function approve(address spender, uint256 value) public returns (bool success) {\n allowances[msg.sender][spender] = value;\n return true;\n }\n\n function transferFrom(address from, address to, uint256 value) public returns (bool) {\n require(allowance(from, msg.sender) >= value, \"Insufficient allowance\");\n\n allowances[from][msg.sender] -= value;\n balanceOf[from] -= value;\n balanceOf[to] += value;\n\n return true;\n }\n}\n\ncontract TokenWithOnlyName is TokenWithoutNameNorSymbol {\n string public name = \"MockToken\";\n}\n\ncontract MockToken is TokenWithoutNameNorSymbol {\n string public name = \"MockToken\";\n string public symbol = \"MCK\";\n}\n\ncontract NotAToken {}\n"}},"settings":{"optimizer":{"enabled":false,"runs":200},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"],"":["ast"]}}}},"output":{"sources":{"contracts/ChangeEtherBalance.sol":{"ast":{"absolutePath":"contracts/ChangeEtherBalance.sol","exportedSymbols":{"ChangeEtherBalance":[37]},"id":38,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"32:23:0"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":37,"linearizedBaseContracts":[37],"name":"ChangeEtherBalance","nameLocation":"66:18:0","nodeType":"ContractDefinition","nodes":[{"body":{"id":16,"nodeType":"Block","src":"126:54:0","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":10,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"161:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":11,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"value","nodeType":"MemberAccess","src":"161:9:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"32","id":12,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"173:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"161:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"expression":{"id":6,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"140:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":7,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"140:10:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":5,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"132:8:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_payable_$","typeString":"type(address payable)"},"typeName":{"id":4,"name":"address","nodeType":"ElementaryTypeName","src":"132:8:0","stateMutability":"payable","typeDescriptions":{}}},"id":8,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"132:19:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":9,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"transfer","nodeType":"MemberAccess","src":"132:28:0","typeDescriptions":{"typeIdentifier":"t_function_transfer_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":14,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"132:43:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15,"nodeType":"ExpressionStatement","src":"132:43:0"}]},"functionSelector":"b019946e","id":17,"implemented":true,"kind":"function","modifiers":[],"name":"returnHalf","nameLocation":"98:10:0","nodeType":"FunctionDefinition","parameters":{"id":2,"nodeType":"ParameterList","parameters":[],"src":"108:2:0"},"returnParameters":{"id":3,"nodeType":"ParameterList","parameters":[],"src":"126:0:0"},"scope":37,"src":"89:91:0","stateMutability":"payable","virtual":false,"visibility":"public"},{"body":{"id":31,"nodeType":"Block","src":"233:44:0","statements":[{"expression":{"arguments":[{"expression":{"id":27,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"262:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":28,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"value","nodeType":"MemberAccess","src":"262:9:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":24,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19,"src":"247:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":23,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"239:8:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_payable_$","typeString":"type(address payable)"},"typeName":{"id":22,"name":"address","nodeType":"ElementaryTypeName","src":"239:8:0","stateMutability":"payable","typeDescriptions":{}}},"id":25,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"239:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":26,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"transfer","nodeType":"MemberAccess","src":"239:22:0","typeDescriptions":{"typeIdentifier":"t_function_transfer_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":29,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"239:33:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":30,"nodeType":"ExpressionStatement","src":"239:33:0"}]},"functionSelector":"a03fa7e3","id":32,"implemented":true,"kind":"function","modifiers":[],"name":"transferTo","nameLocation":"193:10:0","nodeType":"FunctionDefinition","parameters":{"id":20,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19,"mutability":"mutable","name":"addr","nameLocation":"212:4:0","nodeType":"VariableDeclaration","scope":32,"src":"204:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18,"name":"address","nodeType":"ElementaryTypeName","src":"204:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"203:14:0"},"returnParameters":{"id":21,"nodeType":"ParameterList","parameters":[],"src":"233:0:0"},"scope":37,"src":"184:93:0","stateMutability":"payable","virtual":false,"visibility":"public"},{"body":{"id":35,"nodeType":"Block","src":"308:2:0","statements":[]},"id":36,"implemented":true,"kind":"receive","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":33,"nodeType":"ParameterList","parameters":[],"src":"288:2:0"},"returnParameters":{"id":34,"nodeType":"ParameterList","parameters":[],"src":"308:0:0"},"scope":37,"src":"281:29:0","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":38,"src":"57:255:0","usedErrors":[]}],"src":"32:280:0"},"id":0},"contracts/Events.sol":{"ast":{"absolutePath":"contracts/Events.sol","exportedSymbols":{"AnotherContract":[374],"Events":[359],"OverrideEventContract":[398]},"id":399,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":39,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"32:23:1"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":359,"linearizedBaseContracts":[359],"name":"Events","nameLocation":"66:6:1","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":42,"mutability":"mutable","name":"anotherContract","nameLocation":"93:15:1","nodeType":"VariableDeclaration","scope":359,"src":"77:31:1","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_AnotherContract_$374","typeString":"contract AnotherContract"},"typeName":{"id":41,"nodeType":"UserDefinedTypeName","pathNode":{"id":40,"name":"AnotherContract","nodeType":"IdentifierPath","referencedDeclaration":374,"src":"77:15:1"},"referencedDeclaration":374,"src":"77:15:1","typeDescriptions":{"typeIdentifier":"t_contract$_AnotherContract_$374","typeString":"contract AnotherContract"}},"visibility":"internal"},{"canonicalName":"Events.Struct","id":47,"members":[{"constant":false,"id":44,"mutability":"mutable","name":"u","nameLocation":"138:1:1","nodeType":"VariableDeclaration","scope":47,"src":"133:6:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":43,"name":"uint","nodeType":"ElementaryTypeName","src":"133:4:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":46,"mutability":"mutable","name":"v","nameLocation":"150:1:1","nodeType":"VariableDeclaration","scope":47,"src":"145:6:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":45,"name":"uint","nodeType":"ElementaryTypeName","src":"145:4:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"Struct","nameLocation":"120:6:1","nodeType":"StructDefinition","scope":359,"src":"113:43:1","visibility":"public"},{"anonymous":false,"id":49,"name":"WithoutArgs","nameLocation":"166:11:1","nodeType":"EventDefinition","parameters":{"id":48,"nodeType":"ParameterList","parameters":[],"src":"177:2:1"},"src":"160:20:1"},{"anonymous":false,"id":53,"name":"WithUintArg","nameLocation":"189:11:1","nodeType":"EventDefinition","parameters":{"id":52,"nodeType":"ParameterList","parameters":[{"constant":false,"id":51,"indexed":false,"mutability":"mutable","name":"u","nameLocation":"206:1:1","nodeType":"VariableDeclaration","scope":53,"src":"201:6:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":50,"name":"uint","nodeType":"ElementaryTypeName","src":"201:4:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"200:8:1"},"src":"183:26:1"},{"anonymous":false,"id":57,"name":"WithIntArg","nameLocation":"218:10:1","nodeType":"EventDefinition","parameters":{"id":56,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55,"indexed":false,"mutability":"mutable","name":"i","nameLocation":"233:1:1","nodeType":"VariableDeclaration","scope":57,"src":"229:5:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":54,"name":"int","nodeType":"ElementaryTypeName","src":"229:3:1","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"228:7:1"},"src":"212:24:1"},{"anonymous":false,"id":61,"name":"WithAddressArg","nameLocation":"245:14:1","nodeType":"EventDefinition","parameters":{"id":60,"nodeType":"ParameterList","parameters":[{"constant":false,"id":59,"indexed":false,"mutability":"mutable","name":"a","nameLocation":"268:1:1","nodeType":"VariableDeclaration","scope":61,"src":"260:9:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":58,"name":"address","nodeType":"ElementaryTypeName","src":"260:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"259:11:1"},"src":"239:32:1"},{"anonymous":false,"id":67,"name":"WithTwoUintArgs","nameLocation":"280:15:1","nodeType":"EventDefinition","parameters":{"id":66,"nodeType":"ParameterList","parameters":[{"constant":false,"id":63,"indexed":false,"mutability":"mutable","name":"u","nameLocation":"301:1:1","nodeType":"VariableDeclaration","scope":67,"src":"296:6:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":62,"name":"uint","nodeType":"ElementaryTypeName","src":"296:4:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":65,"indexed":false,"mutability":"mutable","name":"v","nameLocation":"309:1:1","nodeType":"VariableDeclaration","scope":67,"src":"304:6:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":64,"name":"uint","nodeType":"ElementaryTypeName","src":"304:4:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"295:16:1"},"src":"274:38:1"},{"anonymous":false,"id":71,"name":"WithStringArg","nameLocation":"321:13:1","nodeType":"EventDefinition","parameters":{"id":70,"nodeType":"ParameterList","parameters":[{"constant":false,"id":69,"indexed":false,"mutability":"mutable","name":"s","nameLocation":"342:1:1","nodeType":"VariableDeclaration","scope":71,"src":"335:8:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":68,"name":"string","nodeType":"ElementaryTypeName","src":"335:6:1","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"334:10:1"},"src":"315:30:1"},{"anonymous":false,"id":77,"name":"WithTwoStringArgs","nameLocation":"354:17:1","nodeType":"EventDefinition","parameters":{"id":76,"nodeType":"ParameterList","parameters":[{"constant":false,"id":73,"indexed":false,"mutability":"mutable","name":"s","nameLocation":"379:1:1","nodeType":"VariableDeclaration","scope":77,"src":"372:8:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":72,"name":"string","nodeType":"ElementaryTypeName","src":"372:6:1","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":75,"indexed":false,"mutability":"mutable","name":"t","nameLocation":"389:1:1","nodeType":"VariableDeclaration","scope":77,"src":"382:8:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":74,"name":"string","nodeType":"ElementaryTypeName","src":"382:6:1","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"371:20:1"},"src":"348:44:1"},{"anonymous":false,"id":81,"name":"WithIndexedStringArg","nameLocation":"401:20:1","nodeType":"EventDefinition","parameters":{"id":80,"nodeType":"ParameterList","parameters":[{"constant":false,"id":79,"indexed":true,"mutability":"mutable","name":"s","nameLocation":"437:1:1","nodeType":"VariableDeclaration","scope":81,"src":"422:16:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":78,"name":"string","nodeType":"ElementaryTypeName","src":"422:6:1","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"421:18:1"},"src":"395:45:1"},{"anonymous":false,"id":85,"name":"WithBytesArg","nameLocation":"449:12:1","nodeType":"EventDefinition","parameters":{"id":84,"nodeType":"ParameterList","parameters":[{"constant":false,"id":83,"indexed":false,"mutability":"mutable","name":"b","nameLocation":"468:1:1","nodeType":"VariableDeclaration","scope":85,"src":"462:7:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":82,"name":"bytes","nodeType":"ElementaryTypeName","src":"462:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"461:9:1"},"src":"443:28:1"},{"anonymous":false,"id":89,"name":"WithIndexedBytesArg","nameLocation":"480:19:1","nodeType":"EventDefinition","parameters":{"id":88,"nodeType":"ParameterList","parameters":[{"constant":false,"id":87,"indexed":true,"mutability":"mutable","name":"b","nameLocation":"514:1:1","nodeType":"VariableDeclaration","scope":89,"src":"500:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":86,"name":"bytes","nodeType":"ElementaryTypeName","src":"500:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"499:17:1"},"src":"474:43:1"},{"anonymous":false,"id":93,"name":"WithBytes32Arg","nameLocation":"526:14:1","nodeType":"EventDefinition","parameters":{"id":92,"nodeType":"ParameterList","parameters":[{"constant":false,"id":91,"indexed":false,"mutability":"mutable","name":"b","nameLocation":"549:1:1","nodeType":"VariableDeclaration","scope":93,"src":"541:9:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":90,"name":"bytes32","nodeType":"ElementaryTypeName","src":"541:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"540:11:1"},"src":"520:32:1"},{"anonymous":false,"id":98,"name":"WithStructArg","nameLocation":"561:13:1","nodeType":"EventDefinition","parameters":{"id":97,"nodeType":"ParameterList","parameters":[{"constant":false,"id":96,"indexed":false,"mutability":"mutable","name":"s","nameLocation":"582:1:1","nodeType":"VariableDeclaration","scope":98,"src":"575:8:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_Struct_$47_memory_ptr","typeString":"struct Events.Struct"},"typeName":{"id":95,"nodeType":"UserDefinedTypeName","pathNode":{"id":94,"name":"Struct","nodeType":"IdentifierPath","referencedDeclaration":47,"src":"575:6:1"},"referencedDeclaration":47,"src":"575:6:1","typeDescriptions":{"typeIdentifier":"t_struct$_Struct_$47_storage_ptr","typeString":"struct Events.Struct"}},"visibility":"internal"}],"src":"574:10:1"},"src":"555:30:1"},{"anonymous":false,"id":102,"name":"WithIndexedBytes32Arg","nameLocation":"594:21:1","nodeType":"EventDefinition","parameters":{"id":101,"nodeType":"ParameterList","parameters":[{"constant":false,"id":100,"indexed":true,"mutability":"mutable","name":"b","nameLocation":"632:1:1","nodeType":"VariableDeclaration","scope":102,"src":"616:17:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":99,"name":"bytes32","nodeType":"ElementaryTypeName","src":"616:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"615:19:1"},"src":"588:47:1"},{"anonymous":false,"id":108,"name":"WithUintArray","nameLocation":"644:13:1","nodeType":"EventDefinition","parameters":{"id":107,"nodeType":"ParameterList","parameters":[{"constant":false,"id":106,"indexed":false,"mutability":"mutable","name":"a","nameLocation":"666:1:1","nodeType":"VariableDeclaration","scope":108,"src":"658:9:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$2_memory_ptr","typeString":"uint256[2]"},"typeName":{"baseType":{"id":103,"name":"uint","nodeType":"ElementaryTypeName","src":"658:4:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":105,"length":{"hexValue":"32","id":104,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"663:1:1","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"ArrayTypeName","src":"658:7:1","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$2_storage_ptr","typeString":"uint256[2]"}},"visibility":"internal"}],"src":"657:11:1"},"src":"638:31:1"},{"anonymous":false,"id":114,"name":"WithBytes32Array","nameLocation":"678:16:1","nodeType":"EventDefinition","parameters":{"id":113,"nodeType":"ParameterList","parameters":[{"constant":false,"id":112,"indexed":false,"mutability":"mutable","name":"a","nameLocation":"706:1:1","nodeType":"VariableDeclaration","scope":114,"src":"695:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$2_memory_ptr","typeString":"bytes32[2]"},"typeName":{"baseType":{"id":109,"name":"bytes32","nodeType":"ElementaryTypeName","src":"695:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":111,"length":{"hexValue":"32","id":110,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"703:1:1","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"ArrayTypeName","src":"695:10:1","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$2_storage_ptr","typeString":"bytes32[2]"}},"visibility":"internal"}],"src":"694:14:1"},"src":"672:37:1"},{"body":{"id":124,"nodeType":"Block","src":"745:30:1","statements":[{"expression":{"id":122,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":120,"name":"anotherContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42,"src":"751:15:1","typeDescriptions":{"typeIdentifier":"t_contract$_AnotherContract_$374","typeString":"contract AnotherContract"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":121,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":117,"src":"769:1:1","typeDescriptions":{"typeIdentifier":"t_contract$_AnotherContract_$374","typeString":"contract AnotherContract"}},"src":"751:19:1","typeDescriptions":{"typeIdentifier":"t_contract$_AnotherContract_$374","typeString":"contract AnotherContract"}},"id":123,"nodeType":"ExpressionStatement","src":"751:19:1"}]},"id":125,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":118,"nodeType":"ParameterList","parameters":[{"constant":false,"id":117,"mutability":"mutable","name":"c","nameLocation":"742:1:1","nodeType":"VariableDeclaration","scope":125,"src":"726:17:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_AnotherContract_$374","typeString":"contract AnotherContract"},"typeName":{"id":116,"nodeType":"UserDefinedTypeName","pathNode":{"id":115,"name":"AnotherContract","nodeType":"IdentifierPath","referencedDeclaration":374,"src":"726:15:1"},"referencedDeclaration":374,"src":"726:15:1","typeDescriptions":{"typeIdentifier":"t_contract$_AnotherContract_$374","typeString":"contract AnotherContract"}},"visibility":"internal"}],"src":"725:19:1"},"returnParameters":{"id":119,"nodeType":"ParameterList","parameters":[],"src":"745:0:1"},"scope":359,"src":"713:62:1","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":128,"nodeType":"Block","src":"807:2:1","statements":[]},"functionSelector":"db6cdf68","id":129,"implemented":true,"kind":"function","modifiers":[],"name":"doNotEmit","nameLocation":"788:9:1","nodeType":"FunctionDefinition","parameters":{"id":126,"nodeType":"ParameterList","parameters":[],"src":"797:2:1"},"returnParameters":{"id":127,"nodeType":"ParameterList","parameters":[],"src":"807:0:1"},"scope":359,"src":"779:30:1","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":135,"nodeType":"Block","src":"847:29:1","statements":[{"eventCall":{"arguments":[],"expression":{"argumentTypes":[],"id":132,"name":"WithoutArgs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":49,"src":"858:11:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$__$returns$__$","typeString":"function ()"}},"id":133,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"858:13:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":134,"nodeType":"EmitStatement","src":"853:18:1"}]},"functionSelector":"90b37ea2","id":136,"implemented":true,"kind":"function","modifiers":[],"name":"emitWithoutArgs","nameLocation":"822:15:1","nodeType":"FunctionDefinition","parameters":{"id":130,"nodeType":"ParameterList","parameters":[],"src":"837:2:1"},"returnParameters":{"id":131,"nodeType":"ParameterList","parameters":[],"src":"847:0:1"},"scope":359,"src":"813:63:1","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":145,"nodeType":"Block","src":"913:30:1","statements":[{"eventCall":{"arguments":[{"id":142,"name":"u","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":138,"src":"936:1:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":141,"name":"WithUintArg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53,"src":"924:11:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":143,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"924:14:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":144,"nodeType":"EmitStatement","src":"919:19:1"}]},"functionSelector":"91940244","id":146,"implemented":true,"kind":"function","modifiers":[],"name":"emitUint","nameLocation":"889:8:1","nodeType":"FunctionDefinition","parameters":{"id":139,"nodeType":"ParameterList","parameters":[{"constant":false,"id":138,"mutability":"mutable","name":"u","nameLocation":"903:1:1","nodeType":"VariableDeclaration","scope":146,"src":"898:6:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":137,"name":"uint","nodeType":"ElementaryTypeName","src":"898:4:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"897:8:1"},"returnParameters":{"id":140,"nodeType":"ParameterList","parameters":[],"src":"913:0:1"},"scope":359,"src":"880:63:1","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":155,"nodeType":"Block","src":"978:29:1","statements":[{"eventCall":{"arguments":[{"id":152,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":148,"src":"1000:1:1","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":151,"name":"WithIntArg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":57,"src":"989:10:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_int256_$returns$__$","typeString":"function (int256)"}},"id":153,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"989:13:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":154,"nodeType":"EmitStatement","src":"984:18:1"}]},"functionSelector":"8a618191","id":156,"implemented":true,"kind":"function","modifiers":[],"name":"emitInt","nameLocation":"956:7:1","nodeType":"FunctionDefinition","parameters":{"id":149,"nodeType":"ParameterList","parameters":[{"constant":false,"id":148,"mutability":"mutable","name":"i","nameLocation":"968:1:1","nodeType":"VariableDeclaration","scope":156,"src":"964:5:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":147,"name":"int","nodeType":"ElementaryTypeName","src":"964:3:1","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"963:7:1"},"returnParameters":{"id":150,"nodeType":"ParameterList","parameters":[],"src":"978:0:1"},"scope":359,"src":"947:60:1","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":165,"nodeType":"Block","src":"1050:33:1","statements":[{"eventCall":{"arguments":[{"id":162,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":158,"src":"1076:1:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":161,"name":"WithAddressArg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61,"src":"1061:14:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":163,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1061:17:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":164,"nodeType":"EmitStatement","src":"1056:22:1"}]},"functionSelector":"ec5c3ede","id":166,"implemented":true,"kind":"function","modifiers":[],"name":"emitAddress","nameLocation":"1020:11:1","nodeType":"FunctionDefinition","parameters":{"id":159,"nodeType":"ParameterList","parameters":[{"constant":false,"id":158,"mutability":"mutable","name":"a","nameLocation":"1040:1:1","nodeType":"VariableDeclaration","scope":166,"src":"1032:9:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":157,"name":"address","nodeType":"ElementaryTypeName","src":"1032:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1031:11:1"},"returnParameters":{"id":160,"nodeType":"ParameterList","parameters":[],"src":"1050:0:1"},"scope":359,"src":"1011:72:1","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":181,"nodeType":"Block","src":"1133:55:1","statements":[{"eventCall":{"arguments":[{"id":174,"name":"u","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":168,"src":"1156:1:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":173,"name":"WithUintArg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53,"src":"1144:11:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":175,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1144:14:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":176,"nodeType":"EmitStatement","src":"1139:19:1"},{"eventCall":{"arguments":[{"id":178,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":170,"src":"1181:1:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":177,"name":"WithUintArg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53,"src":"1169:11:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":179,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1169:14:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":180,"nodeType":"EmitStatement","src":"1164:19:1"}]},"functionSelector":"0c0c941a","id":182,"implemented":true,"kind":"function","modifiers":[],"name":"emitUintTwice","nameLocation":"1096:13:1","nodeType":"FunctionDefinition","parameters":{"id":171,"nodeType":"ParameterList","parameters":[{"constant":false,"id":168,"mutability":"mutable","name":"u","nameLocation":"1115:1:1","nodeType":"VariableDeclaration","scope":182,"src":"1110:6:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":167,"name":"uint","nodeType":"ElementaryTypeName","src":"1110:4:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":170,"mutability":"mutable","name":"v","nameLocation":"1123:1:1","nodeType":"VariableDeclaration","scope":182,"src":"1118:6:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":169,"name":"uint","nodeType":"ElementaryTypeName","src":"1118:4:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1109:16:1"},"returnParameters":{"id":172,"nodeType":"ParameterList","parameters":[],"src":"1133:0:1"},"scope":359,"src":"1087:101:1","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":194,"nodeType":"Block","src":"1237:37:1","statements":[{"eventCall":{"arguments":[{"id":190,"name":"u","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":184,"src":"1264:1:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":191,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":186,"src":"1267:1:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":189,"name":"WithTwoUintArgs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67,"src":"1248:15:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":192,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1248:21:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":193,"nodeType":"EmitStatement","src":"1243:26:1"}]},"functionSelector":"38393646","id":195,"implemented":true,"kind":"function","modifiers":[],"name":"emitTwoUints","nameLocation":"1201:12:1","nodeType":"FunctionDefinition","parameters":{"id":187,"nodeType":"ParameterList","parameters":[{"constant":false,"id":184,"mutability":"mutable","name":"u","nameLocation":"1219:1:1","nodeType":"VariableDeclaration","scope":195,"src":"1214:6:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":183,"name":"uint","nodeType":"ElementaryTypeName","src":"1214:4:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":186,"mutability":"mutable","name":"v","nameLocation":"1227:1:1","nodeType":"VariableDeclaration","scope":195,"src":"1222:6:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":185,"name":"uint","nodeType":"ElementaryTypeName","src":"1222:4:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1213:16:1"},"returnParameters":{"id":188,"nodeType":"ParameterList","parameters":[],"src":"1237:0:1"},"scope":359,"src":"1192:82:1","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":204,"nodeType":"Block","src":"1322:32:1","statements":[{"eventCall":{"arguments":[{"id":201,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":197,"src":"1347:1:1","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":200,"name":"WithStringArg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"1333:13:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory)"}},"id":202,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1333:16:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":203,"nodeType":"EmitStatement","src":"1328:21:1"}]},"functionSelector":"2536f127","id":205,"implemented":true,"kind":"function","modifiers":[],"name":"emitString","nameLocation":"1287:10:1","nodeType":"FunctionDefinition","parameters":{"id":198,"nodeType":"ParameterList","parameters":[{"constant":false,"id":197,"mutability":"mutable","name":"s","nameLocation":"1312:1:1","nodeType":"VariableDeclaration","scope":205,"src":"1298:15:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":196,"name":"string","nodeType":"ElementaryTypeName","src":"1298:6:1","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1297:17:1"},"returnParameters":{"id":199,"nodeType":"ParameterList","parameters":[],"src":"1322:0:1"},"scope":359,"src":"1278:76:1","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":214,"nodeType":"Block","src":"1409:39:1","statements":[{"eventCall":{"arguments":[{"id":211,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":207,"src":"1441:1:1","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":210,"name":"WithIndexedStringArg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81,"src":"1420:20:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory)"}},"id":212,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1420:23:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":213,"nodeType":"EmitStatement","src":"1415:28:1"}]},"functionSelector":"443690a0","id":215,"implemented":true,"kind":"function","modifiers":[],"name":"emitIndexedString","nameLocation":"1367:17:1","nodeType":"FunctionDefinition","parameters":{"id":208,"nodeType":"ParameterList","parameters":[{"constant":false,"id":207,"mutability":"mutable","name":"s","nameLocation":"1399:1:1","nodeType":"VariableDeclaration","scope":215,"src":"1385:15:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":206,"name":"string","nodeType":"ElementaryTypeName","src":"1385:6:1","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1384:17:1"},"returnParameters":{"id":209,"nodeType":"ParameterList","parameters":[],"src":"1409:0:1"},"scope":359,"src":"1358:90:1","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":224,"nodeType":"Block","src":"1494:31:1","statements":[{"eventCall":{"arguments":[{"id":221,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":217,"src":"1518:1:1","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":220,"name":"WithBytesArg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85,"src":"1505:12:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes memory)"}},"id":222,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1505:15:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":223,"nodeType":"EmitStatement","src":"1500:20:1"}]},"functionSelector":"c76f0635","id":225,"implemented":true,"kind":"function","modifiers":[],"name":"emitBytes","nameLocation":"1461:9:1","nodeType":"FunctionDefinition","parameters":{"id":218,"nodeType":"ParameterList","parameters":[{"constant":false,"id":217,"mutability":"mutable","name":"b","nameLocation":"1484:1:1","nodeType":"VariableDeclaration","scope":225,"src":"1471:14:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":216,"name":"bytes","nodeType":"ElementaryTypeName","src":"1471:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1470:16:1"},"returnParameters":{"id":219,"nodeType":"ParameterList","parameters":[],"src":"1494:0:1"},"scope":359,"src":"1452:73:1","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":234,"nodeType":"Block","src":"1578:38:1","statements":[{"eventCall":{"arguments":[{"id":231,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":227,"src":"1609:1:1","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":230,"name":"WithIndexedBytesArg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89,"src":"1589:19:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes memory)"}},"id":232,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1589:22:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":233,"nodeType":"EmitStatement","src":"1584:27:1"}]},"functionSelector":"cc07e605","id":235,"implemented":true,"kind":"function","modifiers":[],"name":"emitIndexedBytes","nameLocation":"1538:16:1","nodeType":"FunctionDefinition","parameters":{"id":228,"nodeType":"ParameterList","parameters":[{"constant":false,"id":227,"mutability":"mutable","name":"b","nameLocation":"1568:1:1","nodeType":"VariableDeclaration","scope":235,"src":"1555:14:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":226,"name":"bytes","nodeType":"ElementaryTypeName","src":"1555:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1554:16:1"},"returnParameters":{"id":229,"nodeType":"ParameterList","parameters":[],"src":"1578:0:1"},"scope":359,"src":"1529:87:1","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":244,"nodeType":"Block","src":"1659:33:1","statements":[{"eventCall":{"arguments":[{"id":241,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":237,"src":"1685:1:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":240,"name":"WithBytes32Arg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":93,"src":"1670:14:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$returns$__$","typeString":"function (bytes32)"}},"id":242,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1670:17:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":243,"nodeType":"EmitStatement","src":"1665:22:1"}]},"functionSelector":"33311ef3","id":245,"implemented":true,"kind":"function","modifiers":[],"name":"emitBytes32","nameLocation":"1629:11:1","nodeType":"FunctionDefinition","parameters":{"id":238,"nodeType":"ParameterList","parameters":[{"constant":false,"id":237,"mutability":"mutable","name":"b","nameLocation":"1649:1:1","nodeType":"VariableDeclaration","scope":245,"src":"1641:9:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":236,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1641:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1640:11:1"},"returnParameters":{"id":239,"nodeType":"ParameterList","parameters":[],"src":"1659:0:1"},"scope":359,"src":"1620:72:1","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":254,"nodeType":"Block","src":"1742:40:1","statements":[{"eventCall":{"arguments":[{"id":251,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":247,"src":"1775:1:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":250,"name":"WithIndexedBytes32Arg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":102,"src":"1753:21:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$returns$__$","typeString":"function (bytes32)"}},"id":252,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1753:24:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":253,"nodeType":"EmitStatement","src":"1748:29:1"}]},"functionSelector":"048858e5","id":255,"implemented":true,"kind":"function","modifiers":[],"name":"emitIndexedBytes32","nameLocation":"1705:18:1","nodeType":"FunctionDefinition","parameters":{"id":248,"nodeType":"ParameterList","parameters":[{"constant":false,"id":247,"mutability":"mutable","name":"b","nameLocation":"1732:1:1","nodeType":"VariableDeclaration","scope":255,"src":"1724:9:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":246,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1724:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1723:11:1"},"returnParameters":{"id":249,"nodeType":"ParameterList","parameters":[],"src":"1742:0:1"},"scope":359,"src":"1696:86:1","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":270,"nodeType":"Block","src":"1845:57:1","statements":[{"eventCall":{"arguments":[{"id":263,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":259,"src":"1870:1:1","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":262,"name":"WithStringArg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"1856:13:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory)"}},"id":264,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1856:16:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":265,"nodeType":"EmitStatement","src":"1851:21:1"},{"eventCall":{"arguments":[{"id":267,"name":"u","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":257,"src":"1895:1:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":266,"name":"WithUintArg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53,"src":"1883:11:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":268,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1883:14:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":269,"nodeType":"EmitStatement","src":"1878:19:1"}]},"functionSelector":"2785f8d6","id":271,"implemented":true,"kind":"function","modifiers":[],"name":"emitUintAndString","nameLocation":"1795:17:1","nodeType":"FunctionDefinition","parameters":{"id":260,"nodeType":"ParameterList","parameters":[{"constant":false,"id":257,"mutability":"mutable","name":"u","nameLocation":"1818:1:1","nodeType":"VariableDeclaration","scope":271,"src":"1813:6:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":256,"name":"uint","nodeType":"ElementaryTypeName","src":"1813:4:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":259,"mutability":"mutable","name":"s","nameLocation":"1835:1:1","nodeType":"VariableDeclaration","scope":271,"src":"1821:15:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":258,"name":"string","nodeType":"ElementaryTypeName","src":"1821:6:1","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1812:25:1"},"returnParameters":{"id":261,"nodeType":"ParameterList","parameters":[],"src":"1845:0:1"},"scope":359,"src":"1786:116:1","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":292,"nodeType":"Block","src":"1998:71:1","statements":[{"eventCall":{"arguments":[{"id":283,"name":"u","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":273,"src":"2025:1:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":284,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":275,"src":"2028:1:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":282,"name":"WithTwoUintArgs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67,"src":"2009:15:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":285,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2009:21:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":286,"nodeType":"EmitStatement","src":"2004:26:1"},{"eventCall":{"arguments":[{"id":288,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":277,"src":"2059:1:1","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":289,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":279,"src":"2062:1:1","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":287,"name":"WithTwoStringArgs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77,"src":"2041:17:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory,string memory)"}},"id":290,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2041:23:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":291,"nodeType":"EmitStatement","src":"2036:28:1"}]},"functionSelector":"532b9cce","id":293,"implemented":true,"kind":"function","modifiers":[],"name":"emitTwoUintsAndTwoStrings","nameLocation":"1915:25:1","nodeType":"FunctionDefinition","parameters":{"id":280,"nodeType":"ParameterList","parameters":[{"constant":false,"id":273,"mutability":"mutable","name":"u","nameLocation":"1946:1:1","nodeType":"VariableDeclaration","scope":293,"src":"1941:6:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":272,"name":"uint","nodeType":"ElementaryTypeName","src":"1941:4:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":275,"mutability":"mutable","name":"v","nameLocation":"1954:1:1","nodeType":"VariableDeclaration","scope":293,"src":"1949:6:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":274,"name":"uint","nodeType":"ElementaryTypeName","src":"1949:4:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":277,"mutability":"mutable","name":"s","nameLocation":"1971:1:1","nodeType":"VariableDeclaration","scope":293,"src":"1957:15:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":276,"name":"string","nodeType":"ElementaryTypeName","src":"1957:6:1","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":279,"mutability":"mutable","name":"t","nameLocation":"1988:1:1","nodeType":"VariableDeclaration","scope":293,"src":"1974:15:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":278,"name":"string","nodeType":"ElementaryTypeName","src":"1974:6:1","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1940:50:1"},"returnParameters":{"id":281,"nodeType":"ParameterList","parameters":[],"src":"1998:0:1"},"scope":359,"src":"1906:163:1","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":307,"nodeType":"Block","src":"2116:43:1","statements":[{"eventCall":{"arguments":[{"arguments":[{"id":302,"name":"u","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":295,"src":"2148:1:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":303,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":297,"src":"2151:1:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":301,"name":"Struct","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":47,"src":"2141:6:1","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Struct_$47_storage_ptr_$","typeString":"type(struct Events.Struct storage pointer)"}},"id":304,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2141:12:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Struct_$47_memory_ptr","typeString":"struct Events.Struct memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Struct_$47_memory_ptr","typeString":"struct Events.Struct memory"}],"id":300,"name":"WithStructArg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":98,"src":"2127:13:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_struct$_Struct_$47_memory_ptr_$returns$__$","typeString":"function (struct Events.Struct memory)"}},"id":305,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2127:27:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":306,"nodeType":"EmitStatement","src":"2122:32:1"}]},"functionSelector":"9f31a223","id":308,"implemented":true,"kind":"function","modifiers":[],"name":"emitStruct","nameLocation":"2082:10:1","nodeType":"FunctionDefinition","parameters":{"id":298,"nodeType":"ParameterList","parameters":[{"constant":false,"id":295,"mutability":"mutable","name":"u","nameLocation":"2098:1:1","nodeType":"VariableDeclaration","scope":308,"src":"2093:6:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":294,"name":"uint","nodeType":"ElementaryTypeName","src":"2093:4:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":297,"mutability":"mutable","name":"v","nameLocation":"2106:1:1","nodeType":"VariableDeclaration","scope":308,"src":"2101:6:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":296,"name":"uint","nodeType":"ElementaryTypeName","src":"2101:4:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2092:16:1"},"returnParameters":{"id":299,"nodeType":"ParameterList","parameters":[],"src":"2116:0:1"},"scope":359,"src":"2073:86:1","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":321,"nodeType":"Block","src":"2209:37:1","statements":[{"eventCall":{"arguments":[{"components":[{"id":316,"name":"u","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":310,"src":"2235:1:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":317,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":312,"src":"2238:1:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":318,"isConstant":false,"isInlineArray":true,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2234:6:1","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$2_memory_ptr","typeString":"uint256[2] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_uint256_$2_memory_ptr","typeString":"uint256[2] memory"}],"id":315,"name":"WithUintArray","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":108,"src":"2220:13:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_array$_t_uint256_$2_memory_ptr_$returns$__$","typeString":"function (uint256[2] memory)"}},"id":319,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2220:21:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":320,"nodeType":"EmitStatement","src":"2215:26:1"}]},"functionSelector":"17aba537","id":322,"implemented":true,"kind":"function","modifiers":[],"name":"emitUintArray","nameLocation":"2172:13:1","nodeType":"FunctionDefinition","parameters":{"id":313,"nodeType":"ParameterList","parameters":[{"constant":false,"id":310,"mutability":"mutable","name":"u","nameLocation":"2191:1:1","nodeType":"VariableDeclaration","scope":322,"src":"2186:6:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":309,"name":"uint","nodeType":"ElementaryTypeName","src":"2186:4:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":312,"mutability":"mutable","name":"v","nameLocation":"2199:1:1","nodeType":"VariableDeclaration","scope":322,"src":"2194:6:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":311,"name":"uint","nodeType":"ElementaryTypeName","src":"2194:4:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2185:16:1"},"returnParameters":{"id":314,"nodeType":"ParameterList","parameters":[],"src":"2209:0:1"},"scope":359,"src":"2163:83:1","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":335,"nodeType":"Block","src":"2305:40:1","statements":[{"eventCall":{"arguments":[{"components":[{"id":330,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":324,"src":"2334:1:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":331,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":326,"src":"2337:1:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":332,"isConstant":false,"isInlineArray":true,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2333:6:1","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$2_memory_ptr","typeString":"bytes32[2] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_bytes32_$2_memory_ptr","typeString":"bytes32[2] memory"}],"id":329,"name":"WithBytes32Array","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":114,"src":"2316:16:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_array$_t_bytes32_$2_memory_ptr_$returns$__$","typeString":"function (bytes32[2] memory)"}},"id":333,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2316:24:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":334,"nodeType":"EmitStatement","src":"2311:29:1"}]},"functionSelector":"c0cd80e6","id":336,"implemented":true,"kind":"function","modifiers":[],"name":"emitBytes32Array","nameLocation":"2259:16:1","nodeType":"FunctionDefinition","parameters":{"id":327,"nodeType":"ParameterList","parameters":[{"constant":false,"id":324,"mutability":"mutable","name":"b","nameLocation":"2284:1:1","nodeType":"VariableDeclaration","scope":336,"src":"2276:9:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":323,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2276:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":326,"mutability":"mutable","name":"c","nameLocation":"2295:1:1","nodeType":"VariableDeclaration","scope":336,"src":"2287:9:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":325,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2287:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2275:22:1"},"returnParameters":{"id":328,"nodeType":"ParameterList","parameters":[],"src":"2305:0:1"},"scope":359,"src":"2250:95:1","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":345,"nodeType":"Block","src":"2404:22:1","statements":[{"expression":{"arguments":[{"id":342,"name":"u","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":338,"src":"2419:1:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":341,"name":"emitUint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":146,"src":"2410:8:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":343,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2410:11:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":344,"nodeType":"ExpressionStatement","src":"2410:11:1"}]},"functionSelector":"813a8cf5","id":346,"implemented":true,"kind":"function","modifiers":[],"name":"emitNestedUintFromSameContract","nameLocation":"2358:30:1","nodeType":"FunctionDefinition","parameters":{"id":339,"nodeType":"ParameterList","parameters":[{"constant":false,"id":338,"mutability":"mutable","name":"u","nameLocation":"2394:1:1","nodeType":"VariableDeclaration","scope":346,"src":"2389:6:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":337,"name":"uint","nodeType":"ElementaryTypeName","src":"2389:4:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2388:8:1"},"returnParameters":{"id":340,"nodeType":"ParameterList","parameters":[],"src":"2404:0:1"},"scope":359,"src":"2349:77:1","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":357,"nodeType":"Block","src":"2488:38:1","statements":[{"expression":{"arguments":[{"id":354,"name":"u","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":348,"src":"2519:1:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":351,"name":"anotherContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42,"src":"2494:15:1","typeDescriptions":{"typeIdentifier":"t_contract$_AnotherContract_$374","typeString":"contract AnotherContract"}},"id":353,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"emitUint","nodeType":"MemberAccess","referencedDeclaration":373,"src":"2494:24:1","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256) external"}},"id":355,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2494:27:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":356,"nodeType":"ExpressionStatement","src":"2494:27:1"}]},"functionSelector":"d3931e57","id":358,"implemented":true,"kind":"function","modifiers":[],"name":"emitNestedUintFromAnotherContract","nameLocation":"2439:33:1","nodeType":"FunctionDefinition","parameters":{"id":349,"nodeType":"ParameterList","parameters":[{"constant":false,"id":348,"mutability":"mutable","name":"u","nameLocation":"2478:1:1","nodeType":"VariableDeclaration","scope":358,"src":"2473:6:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":347,"name":"uint","nodeType":"ElementaryTypeName","src":"2473:4:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2472:8:1"},"returnParameters":{"id":350,"nodeType":"ParameterList","parameters":[],"src":"2488:0:1"},"scope":359,"src":"2430:96:1","stateMutability":"nonpayable","virtual":false,"visibility":"public"}],"scope":399,"src":"57:2471:1","usedErrors":[]},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":374,"linearizedBaseContracts":[374],"name":"AnotherContract","nameLocation":"2539:15:1","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"id":363,"name":"WithUintArg","nameLocation":"2565:11:1","nodeType":"EventDefinition","parameters":{"id":362,"nodeType":"ParameterList","parameters":[{"constant":false,"id":361,"indexed":false,"mutability":"mutable","name":"u","nameLocation":"2582:1:1","nodeType":"VariableDeclaration","scope":363,"src":"2577:6:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":360,"name":"uint","nodeType":"ElementaryTypeName","src":"2577:4:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2576:8:1"},"src":"2559:26:1"},{"body":{"id":372,"nodeType":"Block","src":"2622:30:1","statements":[{"eventCall":{"arguments":[{"id":369,"name":"u","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":365,"src":"2645:1:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":368,"name":"WithUintArg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":363,"src":"2633:11:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":370,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2633:14:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":371,"nodeType":"EmitStatement","src":"2628:19:1"}]},"functionSelector":"91940244","id":373,"implemented":true,"kind":"function","modifiers":[],"name":"emitUint","nameLocation":"2598:8:1","nodeType":"FunctionDefinition","parameters":{"id":366,"nodeType":"ParameterList","parameters":[{"constant":false,"id":365,"mutability":"mutable","name":"u","nameLocation":"2612:1:1","nodeType":"VariableDeclaration","scope":373,"src":"2607:6:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":364,"name":"uint","nodeType":"ElementaryTypeName","src":"2607:4:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2606:8:1"},"returnParameters":{"id":367,"nodeType":"ParameterList","parameters":[],"src":"2622:0:1"},"scope":374,"src":"2589:63:1","stateMutability":"nonpayable","virtual":false,"visibility":"public"}],"scope":399,"src":"2530:124:1","usedErrors":[]},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":398,"linearizedBaseContracts":[398],"name":"OverrideEventContract","nameLocation":"2665:21:1","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"id":378,"name":"simpleEvent","nameLocation":"2697:11:1","nodeType":"EventDefinition","parameters":{"id":377,"nodeType":"ParameterList","parameters":[{"constant":false,"id":376,"indexed":false,"mutability":"mutable","name":"u","nameLocation":"2714:1:1","nodeType":"VariableDeclaration","scope":378,"src":"2709:6:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":375,"name":"uint","nodeType":"ElementaryTypeName","src":"2709:4:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2708:8:1"},"src":"2691:26:1"},{"anonymous":false,"id":380,"name":"simpleEvent","nameLocation":"2726:11:1","nodeType":"EventDefinition","parameters":{"id":379,"nodeType":"ParameterList","parameters":[],"src":"2737:2:1"},"src":"2720:20:1"},{"body":{"id":389,"nodeType":"Block","src":"2795:30:1","statements":[{"eventCall":{"arguments":[{"id":386,"name":"u","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":382,"src":"2818:1:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":385,"name":"simpleEvent","nodeType":"Identifier","overloadedDeclarations":[378,380],"referencedDeclaration":378,"src":"2806:11:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":387,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2806:14:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":388,"nodeType":"EmitStatement","src":"2801:19:1"}]},"functionSelector":"2ce136d9","id":390,"implemented":true,"kind":"function","modifiers":[],"name":"emitSimpleEventWithUintArg","nameLocation":"2753:26:1","nodeType":"FunctionDefinition","parameters":{"id":383,"nodeType":"ParameterList","parameters":[{"constant":false,"id":382,"mutability":"mutable","name":"u","nameLocation":"2785:1:1","nodeType":"VariableDeclaration","scope":390,"src":"2780:6:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":381,"name":"uint","nodeType":"ElementaryTypeName","src":"2780:4:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2779:8:1"},"returnParameters":{"id":384,"nodeType":"ParameterList","parameters":[],"src":"2795:0:1"},"scope":398,"src":"2744:81:1","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":396,"nodeType":"Block","src":"2873:29:1","statements":[{"eventCall":{"arguments":[],"expression":{"argumentTypes":[],"id":393,"name":"simpleEvent","nodeType":"Identifier","overloadedDeclarations":[378,380],"referencedDeclaration":380,"src":"2884:11:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$__$returns$__$","typeString":"function ()"}},"id":394,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2884:13:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":395,"nodeType":"EmitStatement","src":"2879:18:1"}]},"functionSelector":"8e1c72bb","id":397,"implemented":true,"kind":"function","modifiers":[],"name":"emitSimpleEventWithoutArg","nameLocation":"2838:25:1","nodeType":"FunctionDefinition","parameters":{"id":391,"nodeType":"ParameterList","parameters":[],"src":"2863:2:1"},"returnParameters":{"id":392,"nodeType":"ParameterList","parameters":[],"src":"2873:0:1"},"scope":398,"src":"2829:73:1","stateMutability":"nonpayable","virtual":false,"visibility":"public"}],"scope":399,"src":"2656:248:1","usedErrors":[]}],"src":"32:2873:1"},"id":1},"contracts/Matchers.sol":{"ast":{"absolutePath":"contracts/Matchers.sol","exportedSymbols":{"AnotherMatchersContract":[710],"Matchers":[688]},"id":711,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":400,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"40:23:2"},{"abstract":false,"baseContracts":[],"contractDependencies":[710],"contractKind":"contract","fullyImplemented":true,"id":688,"linearizedBaseContracts":[688],"name":"Matchers","nameLocation":"74:8:2","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":402,"mutability":"mutable","name":"x","nameLocation":"92:1:2","nodeType":"VariableDeclaration","scope":688,"src":"87:6:2","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":401,"name":"uint","nodeType":"ElementaryTypeName","src":"87:4:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"anonymous":false,"id":404,"name":"SomeEvent","nameLocation":"104:9:2","nodeType":"EventDefinition","parameters":{"id":403,"nodeType":"ParameterList","parameters":[],"src":"113:2:2"},"src":"98:18:2"},{"constant":false,"id":407,"mutability":"mutable","name":"anotherContract","nameLocation":"144:15:2","nodeType":"VariableDeclaration","scope":688,"src":"120:39:2","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_AnotherMatchersContract_$710","typeString":"contract AnotherMatchersContract"},"typeName":{"id":406,"nodeType":"UserDefinedTypeName","pathNode":{"id":405,"name":"AnotherMatchersContract","nodeType":"IdentifierPath","referencedDeclaration":710,"src":"120:23:2"},"referencedDeclaration":710,"src":"120:23:2","typeDescriptions":{"typeIdentifier":"t_contract$_AnotherMatchersContract_$710","typeString":"contract AnotherMatchersContract"}},"visibility":"internal"},{"canonicalName":"Matchers.Pair","id":412,"members":[{"constant":false,"id":409,"mutability":"mutable","name":"a","nameLocation":"183:1:2","nodeType":"VariableDeclaration","scope":412,"src":"178:6:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":408,"name":"uint","nodeType":"ElementaryTypeName","src":"178:4:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":411,"mutability":"mutable","name":"b","nameLocation":"191:1:2","nodeType":"VariableDeclaration","scope":412,"src":"186:6:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":410,"name":"uint","nodeType":"ElementaryTypeName","src":"186:4:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"Pair","nameLocation":"171:4:2","nodeType":"StructDefinition","scope":688,"src":"164:31:2","visibility":"public"},{"id":414,"name":"SomeCustomError","nameLocation":"205:15:2","nodeType":"ErrorDefinition","parameters":{"id":413,"nodeType":"ParameterList","parameters":[],"src":"220:2:2"},"src":"199:24:2"},{"id":416,"name":"AnotherCustomError","nameLocation":"232:18:2","nodeType":"ErrorDefinition","parameters":{"id":415,"nodeType":"ParameterList","parameters":[],"src":"250:2:2"},"src":"226:27:2"},{"id":420,"name":"CustomErrorWithInt","nameLocation":"262:18:2","nodeType":"ErrorDefinition","parameters":{"id":419,"nodeType":"ParameterList","parameters":[{"constant":false,"id":418,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":420,"src":"281:3:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":417,"name":"int","nodeType":"ElementaryTypeName","src":"281:3:2","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"280:5:2"},"src":"256:30:2"},{"id":424,"name":"CustomErrorWithUint","nameLocation":"295:19:2","nodeType":"ErrorDefinition","parameters":{"id":423,"nodeType":"ParameterList","parameters":[{"constant":false,"id":422,"mutability":"mutable","name":"nameToForceEthersToUseAnArrayLikeWithNamedProperties","nameLocation":"320:52:2","nodeType":"VariableDeclaration","scope":424,"src":"315:57:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":421,"name":"uint","nodeType":"ElementaryTypeName","src":"315:4:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"314:59:2"},"src":"289:85:2"},{"id":430,"name":"CustomErrorWithUintAndString","nameLocation":"383:28:2","nodeType":"ErrorDefinition","parameters":{"id":429,"nodeType":"ParameterList","parameters":[{"constant":false,"id":426,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":430,"src":"412:4:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":425,"name":"uint","nodeType":"ElementaryTypeName","src":"412:4:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":428,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":430,"src":"418:6:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":427,"name":"string","nodeType":"ElementaryTypeName","src":"418:6:2","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"411:14:2"},"src":"377:49:2"},{"id":435,"name":"CustomErrorWithPair","nameLocation":"435:19:2","nodeType":"ErrorDefinition","parameters":{"id":434,"nodeType":"ParameterList","parameters":[{"constant":false,"id":433,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":435,"src":"455:4:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_Pair_$412_memory_ptr","typeString":"struct Matchers.Pair"},"typeName":{"id":432,"nodeType":"UserDefinedTypeName","pathNode":{"id":431,"name":"Pair","nodeType":"IdentifierPath","referencedDeclaration":412,"src":"455:4:2"},"referencedDeclaration":412,"src":"455:4:2","typeDescriptions":{"typeIdentifier":"t_struct$_Pair_$412_storage_ptr","typeString":"struct Matchers.Pair"}},"visibility":"internal"}],"src":"454:6:2"},"src":"429:32:2"},{"body":{"id":445,"nodeType":"Block","src":"480:58:2","statements":[{"expression":{"id":443,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":438,"name":"anotherContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":407,"src":"486:15:2","typeDescriptions":{"typeIdentifier":"t_contract$_AnotherMatchersContract_$710","typeString":"contract AnotherMatchersContract"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"id":441,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"NewExpression","src":"504:27:2","typeDescriptions":{"typeIdentifier":"t_function_creation_nonpayable$__$returns$_t_contract$_AnotherMatchersContract_$710_$","typeString":"function () returns (contract AnotherMatchersContract)"},"typeName":{"id":440,"nodeType":"UserDefinedTypeName","pathNode":{"id":439,"name":"AnotherMatchersContract","nodeType":"IdentifierPath","referencedDeclaration":710,"src":"508:23:2"},"referencedDeclaration":710,"src":"508:23:2","typeDescriptions":{"typeIdentifier":"t_contract$_AnotherMatchersContract_$710","typeString":"contract AnotherMatchersContract"}}},"id":442,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"504:29:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_AnotherMatchersContract_$710","typeString":"contract AnotherMatchersContract"}},"src":"486:47:2","typeDescriptions":{"typeIdentifier":"t_contract$_AnotherMatchersContract_$710","typeString":"contract AnotherMatchersContract"}},"id":444,"nodeType":"ExpressionStatement","src":"486:47:2"}]},"id":446,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":436,"nodeType":"ParameterList","parameters":[],"src":"477:2:2"},"returnParameters":{"id":437,"nodeType":"ParameterList","parameters":[],"src":"480:0:2"},"scope":688,"src":"465:73:2","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":452,"nodeType":"Block","src":"569:49:2","statements":[{"expression":{"id":450,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"575:3:2","subExpression":{"id":449,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":402,"src":"575:1:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":451,"nodeType":"ExpressionStatement","src":"575:3:2"}]},"functionSelector":"74afd452","id":453,"implemented":true,"kind":"function","modifiers":[],"name":"succeeds","nameLocation":"551:8:2","nodeType":"FunctionDefinition","parameters":{"id":447,"nodeType":"ParameterList","parameters":[],"src":"559:2:2"},"returnParameters":{"id":448,"nodeType":"ParameterList","parameters":[],"src":"569:0:2"},"scope":688,"src":"542:76:2","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":460,"nodeType":"Block","src":"673:19:2","statements":[{"expression":{"id":458,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":402,"src":"686:1:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":457,"id":459,"nodeType":"Return","src":"679:8:2"}]},"functionSelector":"6fc588d2","id":461,"implemented":true,"kind":"function","modifiers":[],"name":"succeedsView","nameLocation":"631:12:2","nodeType":"FunctionDefinition","parameters":{"id":454,"nodeType":"ParameterList","parameters":[],"src":"643:2:2"},"returnParameters":{"id":457,"nodeType":"ParameterList","parameters":[{"constant":false,"id":456,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":461,"src":"667:4:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":455,"name":"uint","nodeType":"ElementaryTypeName","src":"667:4:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"666:6:2"},"scope":688,"src":"622:70:2","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":474,"nodeType":"Block","src":"746:42:2","statements":[{"expression":{"id":467,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"752:3:2","subExpression":{"id":466,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":402,"src":"752:1:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":468,"nodeType":"ExpressionStatement","src":"752:3:2"},{"expression":{"arguments":[{"hexValue":"66616c7365","id":470,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"769:5:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"id":471,"name":"reason","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":463,"src":"776:6:2","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":469,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"761:7:2","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":472,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"761:22:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":473,"nodeType":"ExpressionStatement","src":"761:22:2"}]},"functionSelector":"6f1fdc31","id":475,"implemented":true,"kind":"function","modifiers":[],"name":"revertsWith","nameLocation":"705:11:2","nodeType":"FunctionDefinition","parameters":{"id":464,"nodeType":"ParameterList","parameters":[{"constant":false,"id":463,"mutability":"mutable","name":"reason","nameLocation":"731:6:2","nodeType":"VariableDeclaration","scope":475,"src":"717:20:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":462,"name":"string","nodeType":"ElementaryTypeName","src":"717:6:2","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"716:22:2"},"returnParameters":{"id":465,"nodeType":"ParameterList","parameters":[],"src":"746:0:2"},"scope":688,"src":"696:92:2","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":485,"nodeType":"Block","src":"851:33:2","statements":[{"expression":{"arguments":[{"hexValue":"66616c7365","id":481,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"865:5:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"id":482,"name":"reason","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":477,"src":"872:6:2","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":480,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"857:7:2","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":483,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"857:22:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":484,"nodeType":"ExpressionStatement","src":"857:22:2"}]},"functionSelector":"467e3d37","id":486,"implemented":true,"kind":"function","modifiers":[],"name":"revertsWithView","nameLocation":"801:15:2","nodeType":"FunctionDefinition","parameters":{"id":478,"nodeType":"ParameterList","parameters":[{"constant":false,"id":477,"mutability":"mutable","name":"reason","nameLocation":"831:6:2","nodeType":"VariableDeclaration","scope":486,"src":"817:20:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":476,"name":"string","nodeType":"ElementaryTypeName","src":"817:6:2","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"816:22:2"},"returnParameters":{"id":479,"nodeType":"ParameterList","parameters":[],"src":"851:0:2"},"scope":688,"src":"792:92:2","stateMutability":"pure","virtual":false,"visibility":"public"},{"body":{"id":496,"nodeType":"Block","src":"927:34:2","statements":[{"expression":{"id":490,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"933:3:2","subExpression":{"id":489,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":402,"src":"933:1:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":491,"nodeType":"ExpressionStatement","src":"933:3:2"},{"expression":{"arguments":[{"hexValue":"66616c7365","id":493,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"950:5:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":492,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"942:7:2","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":494,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"942:14:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":495,"nodeType":"ExpressionStatement","src":"942:14:2"}]},"functionSelector":"1b4f3f3d","id":497,"implemented":true,"kind":"function","modifiers":[],"name":"revertsWithoutReason","nameLocation":"897:20:2","nodeType":"FunctionDefinition","parameters":{"id":487,"nodeType":"ParameterList","parameters":[],"src":"917:2:2"},"returnParameters":{"id":488,"nodeType":"ParameterList","parameters":[],"src":"927:0:2"},"scope":688,"src":"888:73:2","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":504,"nodeType":"Block","src":"1013:25:2","statements":[{"expression":{"arguments":[{"hexValue":"66616c7365","id":501,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1027:5:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":500,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1019:7:2","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":502,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1019:14:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":503,"nodeType":"ExpressionStatement","src":"1019:14:2"}]},"functionSelector":"58a1d1ed","id":505,"implemented":true,"kind":"function","modifiers":[],"name":"revertsWithoutReasonView","nameLocation":"974:24:2","nodeType":"FunctionDefinition","parameters":{"id":498,"nodeType":"ParameterList","parameters":[],"src":"998:2:2"},"returnParameters":{"id":499,"nodeType":"ParameterList","parameters":[],"src":"1013:0:2"},"scope":688,"src":"965:73:2","stateMutability":"pure","virtual":false,"visibility":"public"},{"body":{"id":515,"nodeType":"Block","src":"1072:33:2","statements":[{"expression":{"id":509,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"1078:3:2","subExpression":{"id":508,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":402,"src":"1078:1:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":510,"nodeType":"ExpressionStatement","src":"1078:3:2"},{"expression":{"arguments":[{"hexValue":"66616c7365","id":512,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1094:5:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":511,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"1087:6:2","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":513,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1087:13:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":514,"nodeType":"ExpressionStatement","src":"1087:13:2"}]},"functionSelector":"b6bbe061","id":516,"implemented":true,"kind":"function","modifiers":[],"name":"panicAssert","nameLocation":"1051:11:2","nodeType":"FunctionDefinition","parameters":{"id":506,"nodeType":"ParameterList","parameters":[],"src":"1062:2:2"},"returnParameters":{"id":507,"nodeType":"ParameterList","parameters":[],"src":"1072:0:2"},"scope":688,"src":"1042:63:2","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":523,"nodeType":"Block","src":"1148:24:2","statements":[{"expression":{"arguments":[{"hexValue":"66616c7365","id":520,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1161:5:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":519,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"1154:6:2","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":521,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1154:13:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":522,"nodeType":"ExpressionStatement","src":"1154:13:2"}]},"functionSelector":"5b94e31e","id":524,"implemented":true,"kind":"function","modifiers":[],"name":"panicAssertView","nameLocation":"1118:15:2","nodeType":"FunctionDefinition","parameters":{"id":517,"nodeType":"ParameterList","parameters":[],"src":"1133:2:2"},"returnParameters":{"id":518,"nodeType":"ParameterList","parameters":[],"src":"1148:0:2"},"scope":688,"src":"1109:63:2","stateMutability":"pure","virtual":false,"visibility":"public"},{"body":{"id":533,"nodeType":"Block","src":"1220:44:2","statements":[{"expression":{"id":528,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"1226:3:2","subExpression":{"id":527,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":402,"src":"1226:1:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":529,"nodeType":"ExpressionStatement","src":"1226:3:2"},{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":530,"name":"SomeCustomError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":414,"src":"1242:15:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":531,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1242:17:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":532,"nodeType":"RevertStatement","src":"1235:24:2"}]},"functionSelector":"bad92aa9","id":534,"implemented":true,"kind":"function","modifiers":[],"name":"revertWithSomeCustomError","nameLocation":"1185:25:2","nodeType":"FunctionDefinition","parameters":{"id":525,"nodeType":"ParameterList","parameters":[],"src":"1210:2:2"},"returnParameters":{"id":526,"nodeType":"ParameterList","parameters":[],"src":"1220:0:2"},"scope":688,"src":"1176:88:2","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":540,"nodeType":"Block","src":"1321:35:2","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":537,"name":"SomeCustomError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":414,"src":"1334:15:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":538,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1334:17:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":539,"nodeType":"RevertStatement","src":"1327:24:2"}]},"functionSelector":"ffb4746b","id":541,"implemented":true,"kind":"function","modifiers":[],"name":"revertWithSomeCustomErrorView","nameLocation":"1277:29:2","nodeType":"FunctionDefinition","parameters":{"id":535,"nodeType":"ParameterList","parameters":[],"src":"1306:2:2"},"returnParameters":{"id":536,"nodeType":"ParameterList","parameters":[],"src":"1321:0:2"},"scope":688,"src":"1268:88:2","stateMutability":"pure","virtual":false,"visibility":"public"},{"body":{"id":550,"nodeType":"Block","src":"1407:47:2","statements":[{"expression":{"id":545,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"1413:3:2","subExpression":{"id":544,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":402,"src":"1413:1:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":546,"nodeType":"ExpressionStatement","src":"1413:3:2"},{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":547,"name":"AnotherCustomError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":416,"src":"1429:18:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":548,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1429:20:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":549,"nodeType":"RevertStatement","src":"1422:27:2"}]},"functionSelector":"4b5bbf6a","id":551,"implemented":true,"kind":"function","modifiers":[],"name":"revertWithAnotherCustomError","nameLocation":"1369:28:2","nodeType":"FunctionDefinition","parameters":{"id":542,"nodeType":"ParameterList","parameters":[],"src":"1397:2:2"},"returnParameters":{"id":543,"nodeType":"ParameterList","parameters":[],"src":"1407:0:2"},"scope":688,"src":"1360:94:2","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":557,"nodeType":"Block","src":"1514:38:2","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":554,"name":"AnotherCustomError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":416,"src":"1527:18:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":555,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1527:20:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":556,"nodeType":"RevertStatement","src":"1520:27:2"}]},"functionSelector":"aac014e0","id":558,"implemented":true,"kind":"function","modifiers":[],"name":"revertWithAnotherCustomErrorView","nameLocation":"1467:32:2","nodeType":"FunctionDefinition","parameters":{"id":552,"nodeType":"ParameterList","parameters":[],"src":"1499:2:2"},"returnParameters":{"id":553,"nodeType":"ParameterList","parameters":[],"src":"1514:0:2"},"scope":688,"src":"1458:94:2","stateMutability":"pure","virtual":false,"visibility":"public"},{"body":{"id":569,"nodeType":"Block","src":"1611:69:2","statements":[{"expression":{"id":562,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"1617:3:2","subExpression":{"id":561,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":402,"src":"1617:1:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":563,"nodeType":"ExpressionStatement","src":"1617:3:2"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":564,"name":"anotherContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":407,"src":"1626:15:2","typeDescriptions":{"typeIdentifier":"t_contract$_AnotherMatchersContract_$710","typeString":"contract AnotherMatchersContract"}},"id":566,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"revertWithYetAnotherCustomError","nodeType":"MemberAccess","referencedDeclaration":702,"src":"1626:47:2","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$__$returns$__$","typeString":"function () external"}},"id":567,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1626:49:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":568,"nodeType":"ExpressionStatement","src":"1626:49:2"}]},"functionSelector":"772f243a","id":570,"implemented":true,"kind":"function","modifiers":[],"name":"revertWithAnotherContractCustomError","nameLocation":"1565:36:2","nodeType":"FunctionDefinition","parameters":{"id":559,"nodeType":"ParameterList","parameters":[],"src":"1601:2:2"},"returnParameters":{"id":560,"nodeType":"ParameterList","parameters":[],"src":"1611:0:2"},"scope":688,"src":"1556:124:2","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":578,"nodeType":"Block","src":"1748:64:2","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":573,"name":"anotherContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":407,"src":"1754:15:2","typeDescriptions":{"typeIdentifier":"t_contract$_AnotherMatchersContract_$710","typeString":"contract AnotherMatchersContract"}},"id":575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"revertWithYetAnotherCustomErrorView","nodeType":"MemberAccess","referencedDeclaration":709,"src":"1754:51:2","typeDescriptions":{"typeIdentifier":"t_function_external_pure$__$returns$__$","typeString":"function () pure external"}},"id":576,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1754:53:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":577,"nodeType":"ExpressionStatement","src":"1754:53:2"}]},"functionSelector":"622051f1","id":579,"implemented":true,"kind":"function","modifiers":[],"name":"revertWithAnotherContractCustomErrorView","nameLocation":"1693:40:2","nodeType":"FunctionDefinition","parameters":{"id":571,"nodeType":"ParameterList","parameters":[],"src":"1733:2:2"},"returnParameters":{"id":572,"nodeType":"ParameterList","parameters":[],"src":"1748:0:2"},"scope":688,"src":"1684:128:2","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":591,"nodeType":"Block","src":"1870:49:2","statements":[{"expression":{"id":585,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"1876:3:2","subExpression":{"id":584,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":402,"src":"1876:1:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":586,"nodeType":"ExpressionStatement","src":"1876:3:2"},{"errorCall":{"arguments":[{"id":588,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":581,"src":"1912:1:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":587,"name":"CustomErrorWithUint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":424,"src":"1892:19:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":589,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1892:22:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":590,"nodeType":"RevertStatement","src":"1885:29:2"}]},"functionSelector":"73d2ea85","id":592,"implemented":true,"kind":"function","modifiers":[],"name":"revertWithCustomErrorWithUint","nameLocation":"1825:29:2","nodeType":"FunctionDefinition","parameters":{"id":582,"nodeType":"ParameterList","parameters":[{"constant":false,"id":581,"mutability":"mutable","name":"n","nameLocation":"1860:1:2","nodeType":"VariableDeclaration","scope":592,"src":"1855:6:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":580,"name":"uint","nodeType":"ElementaryTypeName","src":"1855:4:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1854:8:2"},"returnParameters":{"id":583,"nodeType":"ParameterList","parameters":[],"src":"1870:0:2"},"scope":688,"src":"1816:103:2","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":601,"nodeType":"Block","src":"1986:40:2","statements":[{"errorCall":{"arguments":[{"id":598,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":594,"src":"2019:1:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":597,"name":"CustomErrorWithUint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":424,"src":"1999:19:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":599,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1999:22:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":600,"nodeType":"RevertStatement","src":"1992:29:2"}]},"functionSelector":"7c3cb0af","id":602,"implemented":true,"kind":"function","modifiers":[],"name":"revertWithCustomErrorWithUintView","nameLocation":"1932:33:2","nodeType":"FunctionDefinition","parameters":{"id":595,"nodeType":"ParameterList","parameters":[{"constant":false,"id":594,"mutability":"mutable","name":"n","nameLocation":"1971:1:2","nodeType":"VariableDeclaration","scope":602,"src":"1966:6:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":593,"name":"uint","nodeType":"ElementaryTypeName","src":"1966:4:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1965:8:2"},"returnParameters":{"id":596,"nodeType":"ParameterList","parameters":[],"src":"1986:0:2"},"scope":688,"src":"1923:103:2","stateMutability":"pure","virtual":false,"visibility":"public"},{"body":{"id":614,"nodeType":"Block","src":"2082:48:2","statements":[{"expression":{"id":608,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"2088:3:2","subExpression":{"id":607,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":402,"src":"2088:1:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":609,"nodeType":"ExpressionStatement","src":"2088:3:2"},{"errorCall":{"arguments":[{"id":611,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":604,"src":"2123:1:2","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":610,"name":"CustomErrorWithInt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":420,"src":"2104:18:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_int256_$returns$__$","typeString":"function (int256) pure"}},"id":612,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2104:21:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":613,"nodeType":"RevertStatement","src":"2097:28:2"}]},"functionSelector":"8f933030","id":615,"implemented":true,"kind":"function","modifiers":[],"name":"revertWithCustomErrorWithInt","nameLocation":"2039:28:2","nodeType":"FunctionDefinition","parameters":{"id":605,"nodeType":"ParameterList","parameters":[{"constant":false,"id":604,"mutability":"mutable","name":"i","nameLocation":"2072:1:2","nodeType":"VariableDeclaration","scope":615,"src":"2068:5:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":603,"name":"int","nodeType":"ElementaryTypeName","src":"2068:3:2","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"2067:7:2"},"returnParameters":{"id":606,"nodeType":"ParameterList","parameters":[],"src":"2082:0:2"},"scope":688,"src":"2030:100:2","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":624,"nodeType":"Block","src":"2195:39:2","statements":[{"errorCall":{"arguments":[{"id":621,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":617,"src":"2227:1:2","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":620,"name":"CustomErrorWithInt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":420,"src":"2208:18:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_int256_$returns$__$","typeString":"function (int256) pure"}},"id":622,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2208:21:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":623,"nodeType":"RevertStatement","src":"2201:28:2"}]},"functionSelector":"47c56769","id":625,"implemented":true,"kind":"function","modifiers":[],"name":"revertWithCustomErrorWithIntView","nameLocation":"2143:32:2","nodeType":"FunctionDefinition","parameters":{"id":618,"nodeType":"ParameterList","parameters":[{"constant":false,"id":617,"mutability":"mutable","name":"i","nameLocation":"2180:1:2","nodeType":"VariableDeclaration","scope":625,"src":"2176:5:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":616,"name":"int","nodeType":"ElementaryTypeName","src":"2176:3:2","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"2175:7:2"},"returnParameters":{"id":619,"nodeType":"ParameterList","parameters":[],"src":"2195:0:2"},"scope":688,"src":"2134:100:2","stateMutability":"pure","virtual":false,"visibility":"public"},{"body":{"id":640,"nodeType":"Block","src":"2318:61:2","statements":[{"expression":{"id":633,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"2324:3:2","subExpression":{"id":632,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":402,"src":"2324:1:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":634,"nodeType":"ExpressionStatement","src":"2324:3:2"},{"errorCall":{"arguments":[{"id":636,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":627,"src":"2369:1:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":637,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":629,"src":"2372:1:2","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":635,"name":"CustomErrorWithUintAndString","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":430,"src":"2340:28:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_string_memory_ptr_$returns$__$","typeString":"function (uint256,string memory) pure"}},"id":638,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2340:34:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":639,"nodeType":"RevertStatement","src":"2333:41:2"}]},"functionSelector":"fe276a34","id":641,"implemented":true,"kind":"function","modifiers":[],"name":"revertWithCustomErrorWithUintAndString","nameLocation":"2247:38:2","nodeType":"FunctionDefinition","parameters":{"id":630,"nodeType":"ParameterList","parameters":[{"constant":false,"id":627,"mutability":"mutable","name":"n","nameLocation":"2291:1:2","nodeType":"VariableDeclaration","scope":641,"src":"2286:6:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":626,"name":"uint","nodeType":"ElementaryTypeName","src":"2286:4:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":629,"mutability":"mutable","name":"s","nameLocation":"2308:1:2","nodeType":"VariableDeclaration","scope":641,"src":"2294:15:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":628,"name":"string","nodeType":"ElementaryTypeName","src":"2294:6:2","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2285:25:2"},"returnParameters":{"id":631,"nodeType":"ParameterList","parameters":[],"src":"2318:0:2"},"scope":688,"src":"2238:141:2","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":653,"nodeType":"Block","src":"2472:52:2","statements":[{"errorCall":{"arguments":[{"id":649,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":643,"src":"2514:1:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":650,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":645,"src":"2517:1:2","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":648,"name":"CustomErrorWithUintAndString","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":430,"src":"2485:28:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_string_memory_ptr_$returns$__$","typeString":"function (uint256,string memory) pure"}},"id":651,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2485:34:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":652,"nodeType":"RevertStatement","src":"2478:41:2"}]},"functionSelector":"3ba4178b","id":654,"implemented":true,"kind":"function","modifiers":[],"name":"revertWithCustomErrorWithUintAndStringView","nameLocation":"2392:42:2","nodeType":"FunctionDefinition","parameters":{"id":646,"nodeType":"ParameterList","parameters":[{"constant":false,"id":643,"mutability":"mutable","name":"n","nameLocation":"2440:1:2","nodeType":"VariableDeclaration","scope":654,"src":"2435:6:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":642,"name":"uint","nodeType":"ElementaryTypeName","src":"2435:4:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":645,"mutability":"mutable","name":"s","nameLocation":"2457:1:2","nodeType":"VariableDeclaration","scope":654,"src":"2443:15:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":644,"name":"string","nodeType":"ElementaryTypeName","src":"2443:6:2","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2434:25:2"},"returnParameters":{"id":647,"nodeType":"ParameterList","parameters":[],"src":"2472:0:2"},"scope":688,"src":"2383:141:2","stateMutability":"pure","virtual":false,"visibility":"public"},{"body":{"id":671,"nodeType":"Block","src":"2590:58:2","statements":[{"expression":{"id":662,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"2596:3:2","subExpression":{"id":661,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":402,"src":"2596:1:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":663,"nodeType":"ExpressionStatement","src":"2596:3:2"},{"errorCall":{"arguments":[{"arguments":[{"id":666,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":656,"src":"2637:1:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":667,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":658,"src":"2640:1:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":665,"name":"Pair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":412,"src":"2632:4:2","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Pair_$412_storage_ptr_$","typeString":"type(struct Matchers.Pair storage pointer)"}},"id":668,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2632:10:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Pair_$412_memory_ptr","typeString":"struct Matchers.Pair memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Pair_$412_memory_ptr","typeString":"struct Matchers.Pair memory"}],"id":664,"name":"CustomErrorWithPair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":435,"src":"2612:19:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_struct$_Pair_$412_memory_ptr_$returns$__$","typeString":"function (struct Matchers.Pair memory) pure"}},"id":669,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2612:31:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":670,"nodeType":"RevertStatement","src":"2605:38:2"}]},"functionSelector":"e0a03812","id":672,"implemented":true,"kind":"function","modifiers":[],"name":"revertWithCustomErrorWithPair","nameLocation":"2537:29:2","nodeType":"FunctionDefinition","parameters":{"id":659,"nodeType":"ParameterList","parameters":[{"constant":false,"id":656,"mutability":"mutable","name":"a","nameLocation":"2572:1:2","nodeType":"VariableDeclaration","scope":672,"src":"2567:6:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":655,"name":"uint","nodeType":"ElementaryTypeName","src":"2567:4:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":658,"mutability":"mutable","name":"b","nameLocation":"2580:1:2","nodeType":"VariableDeclaration","scope":672,"src":"2575:6:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":657,"name":"uint","nodeType":"ElementaryTypeName","src":"2575:4:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2566:16:2"},"returnParameters":{"id":660,"nodeType":"ParameterList","parameters":[],"src":"2590:0:2"},"scope":688,"src":"2528:120:2","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":686,"nodeType":"Block","src":"2723:49:2","statements":[{"errorCall":{"arguments":[{"arguments":[{"id":681,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":674,"src":"2761:1:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":682,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":676,"src":"2764:1:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":680,"name":"Pair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":412,"src":"2756:4:2","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Pair_$412_storage_ptr_$","typeString":"type(struct Matchers.Pair storage pointer)"}},"id":683,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2756:10:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Pair_$412_memory_ptr","typeString":"struct Matchers.Pair memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Pair_$412_memory_ptr","typeString":"struct Matchers.Pair memory"}],"id":679,"name":"CustomErrorWithPair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":435,"src":"2736:19:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_struct$_Pair_$412_memory_ptr_$returns$__$","typeString":"function (struct Matchers.Pair memory) pure"}},"id":684,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2736:31:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":685,"nodeType":"RevertStatement","src":"2729:38:2"}]},"functionSelector":"1f542cf3","id":687,"implemented":true,"kind":"function","modifiers":[],"name":"revertWithCustomErrorWithPairView","nameLocation":"2661:33:2","nodeType":"FunctionDefinition","parameters":{"id":677,"nodeType":"ParameterList","parameters":[{"constant":false,"id":674,"mutability":"mutable","name":"a","nameLocation":"2700:1:2","nodeType":"VariableDeclaration","scope":687,"src":"2695:6:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":673,"name":"uint","nodeType":"ElementaryTypeName","src":"2695:4:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":676,"mutability":"mutable","name":"b","nameLocation":"2708:1:2","nodeType":"VariableDeclaration","scope":687,"src":"2703:6:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":675,"name":"uint","nodeType":"ElementaryTypeName","src":"2703:4:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2694:16:2"},"returnParameters":{"id":678,"nodeType":"ParameterList","parameters":[],"src":"2723:0:2"},"scope":688,"src":"2652:120:2","stateMutability":"pure","virtual":false,"visibility":"public"}],"scope":711,"src":"65:2709:2","usedErrors":[414,416,420,424,430,435]},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":710,"linearizedBaseContracts":[710],"name":"AnotherMatchersContract","nameLocation":"2785:23:2","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":690,"mutability":"mutable","name":"x","nameLocation":"2818:1:2","nodeType":"VariableDeclaration","scope":710,"src":"2813:6:2","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":689,"name":"uint","nodeType":"ElementaryTypeName","src":"2813:4:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"id":692,"name":"YetAnotherCustomError","nameLocation":"2830:21:2","nodeType":"ErrorDefinition","parameters":{"id":691,"nodeType":"ParameterList","parameters":[],"src":"2851:2:2"},"src":"2824:30:2"},{"body":{"id":701,"nodeType":"Block","src":"2908:50:2","statements":[{"expression":{"id":696,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"2914:3:2","subExpression":{"id":695,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":690,"src":"2914:1:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":697,"nodeType":"ExpressionStatement","src":"2914:3:2"},{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":698,"name":"YetAnotherCustomError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":692,"src":"2930:21:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":699,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2930:23:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":700,"nodeType":"RevertStatement","src":"2923:30:2"}]},"functionSelector":"4b2bd7e9","id":702,"implemented":true,"kind":"function","modifiers":[],"name":"revertWithYetAnotherCustomError","nameLocation":"2867:31:2","nodeType":"FunctionDefinition","parameters":{"id":693,"nodeType":"ParameterList","parameters":[],"src":"2898:2:2"},"returnParameters":{"id":694,"nodeType":"ParameterList","parameters":[],"src":"2908:0:2"},"scope":710,"src":"2858:100:2","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":708,"nodeType":"Block","src":"3021:41:2","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":705,"name":"YetAnotherCustomError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":692,"src":"3034:21:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":706,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3034:23:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":707,"nodeType":"RevertStatement","src":"3027:30:2"}]},"functionSelector":"40d83b24","id":709,"implemented":true,"kind":"function","modifiers":[],"name":"revertWithYetAnotherCustomErrorView","nameLocation":"2971:35:2","nodeType":"FunctionDefinition","parameters":{"id":703,"nodeType":"ParameterList","parameters":[],"src":"3006:2:2"},"returnParameters":{"id":704,"nodeType":"ParameterList","parameters":[],"src":"3021:0:2"},"scope":710,"src":"2962:100:2","stateMutability":"pure","virtual":false,"visibility":"public"}],"scope":711,"src":"2776:288:2","usedErrors":[692]}],"src":"40:3025:2"},"id":2},"contracts/Token.sol":{"ast":{"absolutePath":"contracts/Token.sol","exportedSymbols":{"MockToken":[873],"NotAToken":[874],"TokenWithOnlyName":[864],"TokenWithoutNameNorSymbol":[858]},"id":875,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":712,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"32:23:3"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":858,"linearizedBaseContracts":[858],"name":"TokenWithoutNameNorSymbol","nameLocation":"66:25:3","nodeType":"ContractDefinition","nodes":[{"constant":false,"functionSelector":"313ce567","id":715,"mutability":"mutable","name":"decimals","nameLocation":"108:8:3","nodeType":"VariableDeclaration","scope":858,"src":"96:24:3","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":713,"name":"uint","nodeType":"ElementaryTypeName","src":"96:4:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"31","id":714,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"119:1:3","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"visibility":"public"},{"constant":false,"functionSelector":"18160ddd","id":717,"mutability":"mutable","name":"totalSupply","nameLocation":"137:11:3","nodeType":"VariableDeclaration","scope":858,"src":"125:23:3","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":716,"name":"uint","nodeType":"ElementaryTypeName","src":"125:4:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"constant":false,"functionSelector":"70a08231","id":721,"mutability":"mutable","name":"balanceOf","nameLocation":"184:9:3","nodeType":"VariableDeclaration","scope":858,"src":"152:41:3","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":720,"keyType":{"id":718,"name":"address","nodeType":"ElementaryTypeName","src":"160:7:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"152:24:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueType":{"id":719,"name":"uint","nodeType":"ElementaryTypeName","src":"171:4:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"public"},{"constant":false,"id":727,"mutability":"mutable","name":"allowances","nameLocation":"242:10:3","nodeType":"VariableDeclaration","scope":858,"src":"197:55:3","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"typeName":{"id":726,"keyType":{"id":722,"name":"address","nodeType":"ElementaryTypeName","src":"205:7:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"197:44:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"valueType":{"id":725,"keyType":{"id":723,"name":"address","nodeType":"ElementaryTypeName","src":"224:7:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"216:24:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueType":{"id":724,"name":"uint","nodeType":"ElementaryTypeName","src":"235:4:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}}},"visibility":"internal"},{"body":{"id":741,"nodeType":"Block","src":"272:79:3","statements":[{"expression":{"id":732,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":730,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":717,"src":"278:11:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"315f3030305f3030305f303030","id":731,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"292:13:3","typeDescriptions":{"typeIdentifier":"t_rational_1000000000_by_1","typeString":"int_const 1000000000"},"value":"1_000_000_000"},"src":"278:27:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":733,"nodeType":"ExpressionStatement","src":"278:27:3"},{"expression":{"id":739,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":734,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":721,"src":"311:9:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":737,"indexExpression":{"expression":{"id":735,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"321:3:3","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":736,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"321:10:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"311:21:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":738,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":717,"src":"335:11:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"311:35:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":740,"nodeType":"ExpressionStatement","src":"311:35:3"}]},"id":742,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":728,"nodeType":"ParameterList","parameters":[],"src":"269:2:3"},"returnParameters":{"id":729,"nodeType":"ParameterList","parameters":[],"src":"272:0:3"},"scope":858,"src":"257:94:3","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":773,"nodeType":"Block","src":"419:141:3","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":754,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":752,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":746,"src":"433:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":753,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"441:1:3","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"433:9:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5472616e736665727265642076616c7565206973207a65726f","id":755,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"444:27:3","typeDescriptions":{"typeIdentifier":"t_stringliteral_4ca3cd75a1831a94a24913bfd2c9b9d35acbb11ac3447f65bb0682cf14f63f5c","typeString":"literal_string \"Transferred value is zero\""},"value":"Transferred value is zero"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_4ca3cd75a1831a94a24913bfd2c9b9d35acbb11ac3447f65bb0682cf14f63f5c","typeString":"literal_string \"Transferred value is zero\""}],"id":751,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"425:7:3","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":756,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"425:47:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":757,"nodeType":"ExpressionStatement","src":"425:47:3"},{"expression":{"id":763,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":758,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":721,"src":"479:9:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":761,"indexExpression":{"expression":{"id":759,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"489:3:3","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":760,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"489:10:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"479:21:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":762,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":746,"src":"504:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"479:30:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":764,"nodeType":"ExpressionStatement","src":"479:30:3"},{"expression":{"id":769,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":765,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":721,"src":"515:9:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":767,"indexExpression":{"id":766,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":744,"src":"525:2:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"515:13:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":768,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":746,"src":"532:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"515:22:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":770,"nodeType":"ExpressionStatement","src":"515:22:3"},{"expression":{"hexValue":"74727565","id":771,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"551:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":750,"id":772,"nodeType":"Return","src":"544:11:3"}]},"functionSelector":"a9059cbb","id":774,"implemented":true,"kind":"function","modifiers":[],"name":"transfer","nameLocation":"364:8:3","nodeType":"FunctionDefinition","parameters":{"id":747,"nodeType":"ParameterList","parameters":[{"constant":false,"id":744,"mutability":"mutable","name":"to","nameLocation":"381:2:3","nodeType":"VariableDeclaration","scope":774,"src":"373:10:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":743,"name":"address","nodeType":"ElementaryTypeName","src":"373:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":746,"mutability":"mutable","name":"value","nameLocation":"390:5:3","nodeType":"VariableDeclaration","scope":774,"src":"385:10:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":745,"name":"uint","nodeType":"ElementaryTypeName","src":"385:4:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"372:24:3"},"returnParameters":{"id":750,"nodeType":"ParameterList","parameters":[{"constant":false,"id":749,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":774,"src":"413:4:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":748,"name":"bool","nodeType":"ElementaryTypeName","src":"413:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"412:6:3"},"scope":858,"src":"355:205:3","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":789,"nodeType":"Block","src":"655:44:3","statements":[{"expression":{"baseExpression":{"baseExpression":{"id":783,"name":"allowances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":727,"src":"668:10:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":785,"indexExpression":{"id":784,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":776,"src":"679:5:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"668:17:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":787,"indexExpression":{"id":786,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":778,"src":"686:7:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"668:26:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":782,"id":788,"nodeType":"Return","src":"661:33:3"}]},"functionSelector":"dd62ed3e","id":790,"implemented":true,"kind":"function","modifiers":[],"name":"allowance","nameLocation":"573:9:3","nodeType":"FunctionDefinition","parameters":{"id":779,"nodeType":"ParameterList","parameters":[{"constant":false,"id":776,"mutability":"mutable","name":"owner","nameLocation":"591:5:3","nodeType":"VariableDeclaration","scope":790,"src":"583:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":775,"name":"address","nodeType":"ElementaryTypeName","src":"583:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":778,"mutability":"mutable","name":"spender","nameLocation":"606:7:3","nodeType":"VariableDeclaration","scope":790,"src":"598:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":777,"name":"address","nodeType":"ElementaryTypeName","src":"598:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"582:32:3"},"returnParameters":{"id":782,"nodeType":"ParameterList","parameters":[{"constant":false,"id":781,"mutability":"mutable","name":"remaining","nameLocation":"644:9:3","nodeType":"VariableDeclaration","scope":790,"src":"636:17:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":780,"name":"uint256","nodeType":"ElementaryTypeName","src":"636:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"635:19:3"},"scope":858,"src":"564:135:3","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":810,"nodeType":"Block","src":"782:67:3","statements":[{"expression":{"id":806,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":799,"name":"allowances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":727,"src":"788:10:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":803,"indexExpression":{"expression":{"id":800,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"799:3:3","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":801,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"799:10:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"788:22:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":804,"indexExpression":{"id":802,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":792,"src":"811:7:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"788:31:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":805,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":794,"src":"822:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"788:39:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":807,"nodeType":"ExpressionStatement","src":"788:39:3"},{"expression":{"hexValue":"74727565","id":808,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"840:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":798,"id":809,"nodeType":"Return","src":"833:11:3"}]},"functionSelector":"095ea7b3","id":811,"implemented":true,"kind":"function","modifiers":[],"name":"approve","nameLocation":"712:7:3","nodeType":"FunctionDefinition","parameters":{"id":795,"nodeType":"ParameterList","parameters":[{"constant":false,"id":792,"mutability":"mutable","name":"spender","nameLocation":"728:7:3","nodeType":"VariableDeclaration","scope":811,"src":"720:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":791,"name":"address","nodeType":"ElementaryTypeName","src":"720:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":794,"mutability":"mutable","name":"value","nameLocation":"745:5:3","nodeType":"VariableDeclaration","scope":811,"src":"737:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":793,"name":"uint256","nodeType":"ElementaryTypeName","src":"737:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"719:32:3"},"returnParameters":{"id":798,"nodeType":"ParameterList","parameters":[{"constant":false,"id":797,"mutability":"mutable","name":"success","nameLocation":"773:7:3","nodeType":"VariableDeclaration","scope":811,"src":"768:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":796,"name":"bool","nodeType":"ElementaryTypeName","src":"768:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"767:14:3"},"scope":858,"src":"703:146:3","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":856,"nodeType":"Block","src":"938:202:3","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":829,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":824,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":813,"src":"962:4:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":825,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"968:3:3","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":826,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"968:10:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":823,"name":"allowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":790,"src":"952:9:3","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view returns (uint256)"}},"id":827,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"952:27:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":828,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":817,"src":"983:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"952:36:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e73756666696369656e7420616c6c6f77616e6365","id":830,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"990:24:3","typeDescriptions":{"typeIdentifier":"t_stringliteral_45e3d26e36c3151c7f92a1eee9add9658cbb8e14605ee2452ec007389b9744bc","typeString":"literal_string \"Insufficient allowance\""},"value":"Insufficient allowance"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_45e3d26e36c3151c7f92a1eee9add9658cbb8e14605ee2452ec007389b9744bc","typeString":"literal_string \"Insufficient allowance\""}],"id":822,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"944:7:3","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":831,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"944:71:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":832,"nodeType":"ExpressionStatement","src":"944:71:3"},{"expression":{"id":840,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":833,"name":"allowances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":727,"src":"1022:10:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":837,"indexExpression":{"id":834,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":813,"src":"1033:4:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1022:16:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":838,"indexExpression":{"expression":{"id":835,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1039:3:3","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":836,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1039:10:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1022:28:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":839,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":817,"src":"1054:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1022:37:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":841,"nodeType":"ExpressionStatement","src":"1022:37:3"},{"expression":{"id":846,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":842,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":721,"src":"1065:9:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":844,"indexExpression":{"id":843,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":813,"src":"1075:4:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1065:15:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":845,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":817,"src":"1084:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1065:24:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":847,"nodeType":"ExpressionStatement","src":"1065:24:3"},{"expression":{"id":852,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":848,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":721,"src":"1095:9:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":850,"indexExpression":{"id":849,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":815,"src":"1105:2:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1095:13:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":851,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":817,"src":"1112:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1095:22:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":853,"nodeType":"ExpressionStatement","src":"1095:22:3"},{"expression":{"hexValue":"74727565","id":854,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1131:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":821,"id":855,"nodeType":"Return","src":"1124:11:3"}]},"functionSelector":"23b872dd","id":857,"implemented":true,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"862:12:3","nodeType":"FunctionDefinition","parameters":{"id":818,"nodeType":"ParameterList","parameters":[{"constant":false,"id":813,"mutability":"mutable","name":"from","nameLocation":"883:4:3","nodeType":"VariableDeclaration","scope":857,"src":"875:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":812,"name":"address","nodeType":"ElementaryTypeName","src":"875:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":815,"mutability":"mutable","name":"to","nameLocation":"897:2:3","nodeType":"VariableDeclaration","scope":857,"src":"889:10:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":814,"name":"address","nodeType":"ElementaryTypeName","src":"889:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":817,"mutability":"mutable","name":"value","nameLocation":"909:5:3","nodeType":"VariableDeclaration","scope":857,"src":"901:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":816,"name":"uint256","nodeType":"ElementaryTypeName","src":"901:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"874:41:3"},"returnParameters":{"id":821,"nodeType":"ParameterList","parameters":[{"constant":false,"id":820,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":857,"src":"932:4:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":819,"name":"bool","nodeType":"ElementaryTypeName","src":"932:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"931:6:3"},"scope":858,"src":"853:287:3","stateMutability":"nonpayable","virtual":false,"visibility":"public"}],"scope":875,"src":"57:1085:3","usedErrors":[]},{"abstract":false,"baseContracts":[{"baseName":{"id":859,"name":"TokenWithoutNameNorSymbol","nodeType":"IdentifierPath","referencedDeclaration":858,"src":"1174:25:3"},"id":860,"nodeType":"InheritanceSpecifier","src":"1174:25:3"}],"contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":864,"linearizedBaseContracts":[864,858],"name":"TokenWithOnlyName","nameLocation":"1153:17:3","nodeType":"ContractDefinition","nodes":[{"constant":false,"functionSelector":"06fdde03","id":863,"mutability":"mutable","name":"name","nameLocation":"1218:4:3","nodeType":"VariableDeclaration","scope":864,"src":"1204:32:3","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":861,"name":"string","nodeType":"ElementaryTypeName","src":"1204:6:3","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"4d6f636b546f6b656e","id":862,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1225:11:3","typeDescriptions":{"typeIdentifier":"t_stringliteral_59d91acf1a517d81ad15edcf2fd578e448883bcd506756a542295cb8c1c1be7e","typeString":"literal_string \"MockToken\""},"value":"MockToken"},"visibility":"public"}],"scope":875,"src":"1144:95:3","usedErrors":[]},{"abstract":false,"baseContracts":[{"baseName":{"id":865,"name":"TokenWithoutNameNorSymbol","nodeType":"IdentifierPath","referencedDeclaration":858,"src":"1263:25:3"},"id":866,"nodeType":"InheritanceSpecifier","src":"1263:25:3"}],"contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":873,"linearizedBaseContracts":[873,858],"name":"MockToken","nameLocation":"1250:9:3","nodeType":"ContractDefinition","nodes":[{"constant":false,"functionSelector":"06fdde03","id":869,"mutability":"mutable","name":"name","nameLocation":"1307:4:3","nodeType":"VariableDeclaration","scope":873,"src":"1293:32:3","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":867,"name":"string","nodeType":"ElementaryTypeName","src":"1293:6:3","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"4d6f636b546f6b656e","id":868,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1314:11:3","typeDescriptions":{"typeIdentifier":"t_stringliteral_59d91acf1a517d81ad15edcf2fd578e448883bcd506756a542295cb8c1c1be7e","typeString":"literal_string \"MockToken\""},"value":"MockToken"},"visibility":"public"},{"constant":false,"functionSelector":"95d89b41","id":872,"mutability":"mutable","name":"symbol","nameLocation":"1343:6:3","nodeType":"VariableDeclaration","scope":873,"src":"1329:28:3","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":870,"name":"string","nodeType":"ElementaryTypeName","src":"1329:6:3","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"4d434b","id":871,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1352:5:3","typeDescriptions":{"typeIdentifier":"t_stringliteral_9c3aa7d11ecb9affb5001de98d930d23db7380c6f51732a92986229c98447bc4","typeString":"literal_string \"MCK\""},"value":"MCK"},"visibility":"public"}],"scope":875,"src":"1241:119:3","usedErrors":[]},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":874,"linearizedBaseContracts":[874],"name":"NotAToken","nameLocation":"1371:9:3","nodeType":"ContractDefinition","nodes":[],"scope":875,"src":"1362:21:3","usedErrors":[]}],"src":"32:1352:3"},"id":3}},"contracts":{"contracts/ChangeEtherBalance.sol":{"ChangeEtherBalance":{"abi":[{"inputs":[],"name":"returnHalf","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"transferTo","outputs":[],"stateMutability":"payable","type":"function"},{"stateMutability":"payable","type":"receive"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"608060405234801561001057600080fd5b50610225806100206000396000f3fe60806040526004361061002d5760003560e01c8063a03fa7e314610039578063b019946e1461005557610034565b3661003457005b600080fd5b610053600480360381019061004e9190610113565b61005f565b005b61005d6100a9565b005b8073ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f193505050501580156100a5573d6000803e3d6000fd5b5050565b3373ffffffffffffffffffffffffffffffffffffffff166108fc6002346100d0919061013c565b9081150290604051600060405180830381858888f193505050501580156100fb573d6000803e3d6000fd5b50565b60008135905061010d816101d8565b92915050565b60006020828403121561012557600080fd5b6000610133848285016100fe565b91505092915050565b60006101478261019f565b91506101528361019f565b925082610162576101616101a9565b5b828204905092915050565b60006101788261017f565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6101e18161016d565b81146101ec57600080fd5b5056fea26469706673582212208e553461507bae731d37afa0d5a2a7dae74de7a6eab682733425a78884ed60b364736f6c63430008040033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x225 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x2D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xA03FA7E3 EQ PUSH2 0x39 JUMPI DUP1 PUSH4 0xB019946E EQ PUSH2 0x55 JUMPI PUSH2 0x34 JUMP JUMPDEST CALLDATASIZE PUSH2 0x34 JUMPI STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x53 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x4E SWAP2 SWAP1 PUSH2 0x113 JUMP JUMPDEST PUSH2 0x5F JUMP JUMPDEST STOP JUMPDEST PUSH2 0x5D PUSH2 0xA9 JUMP JUMPDEST STOP JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8FC CALLVALUE 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 0xA5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8FC PUSH1 0x2 CALLVALUE PUSH2 0xD0 SWAP2 SWAP1 PUSH2 0x13C JUMP JUMPDEST 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 0xFB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x10D DUP2 PUSH2 0x1D8 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x125 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x133 DUP5 DUP3 DUP6 ADD PUSH2 0xFE JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x147 DUP3 PUSH2 0x19F JUMP JUMPDEST SWAP2 POP PUSH2 0x152 DUP4 PUSH2 0x19F JUMP JUMPDEST SWAP3 POP DUP3 PUSH2 0x162 JUMPI PUSH2 0x161 PUSH2 0x1A9 JUMP JUMPDEST JUMPDEST DUP3 DUP3 DIV SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x178 DUP3 PUSH2 0x17F 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 PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH2 0x1E1 DUP2 PUSH2 0x16D JUMP JUMPDEST DUP2 EQ PUSH2 0x1EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP15 SSTORE CALLVALUE PUSH2 0x507B 0xAE PUSH20 0x1D37AFA0D5A2A7DAE74DE7A6EAB682733425A788 DUP5 0xED PUSH1 0xB3 PUSH5 0x736F6C6343 STOP ADDMOD DIV STOP CALLER ","sourceMap":"57:255:0:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:1425:4","statements":[{"body":{"nodeType":"YulBlock","src":"59:87:4","statements":[{"nodeType":"YulAssignment","src":"69:29:4","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"91:6:4"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"78:12:4"},"nodeType":"YulFunctionCall","src":"78:20:4"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"69:5:4"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"134:5:4"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"107:26:4"},"nodeType":"YulFunctionCall","src":"107:33:4"},"nodeType":"YulExpressionStatement","src":"107:33:4"}]},"name":"abi_decode_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"37:6:4","type":""},{"name":"end","nodeType":"YulTypedName","src":"45:3:4","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"53:5:4","type":""}],"src":"7:139:4"},{"body":{"nodeType":"YulBlock","src":"218:196:4","statements":[{"body":{"nodeType":"YulBlock","src":"264:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"273:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"276:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"266:6:4"},"nodeType":"YulFunctionCall","src":"266:12:4"},"nodeType":"YulExpressionStatement","src":"266:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"239:7:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"248:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"235:3:4"},"nodeType":"YulFunctionCall","src":"235:23:4"},{"kind":"number","nodeType":"YulLiteral","src":"260:2:4","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"231:3:4"},"nodeType":"YulFunctionCall","src":"231:32:4"},"nodeType":"YulIf","src":"228:2:4"},{"nodeType":"YulBlock","src":"290:117:4","statements":[{"nodeType":"YulVariableDeclaration","src":"305:15:4","value":{"kind":"number","nodeType":"YulLiteral","src":"319:1:4","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"309:6:4","type":""}]},{"nodeType":"YulAssignment","src":"334:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"369:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"380:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"365:3:4"},"nodeType":"YulFunctionCall","src":"365:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"389:7:4"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"344:20:4"},"nodeType":"YulFunctionCall","src":"344:53:4"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"334:6:4"}]}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"188:9:4","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"199:7:4","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"211:6:4","type":""}],"src":"152:262:4"},{"body":{"nodeType":"YulBlock","src":"462:143:4","statements":[{"nodeType":"YulAssignment","src":"472:25:4","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"495:1:4"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"477:17:4"},"nodeType":"YulFunctionCall","src":"477:20:4"},"variableNames":[{"name":"x","nodeType":"YulIdentifier","src":"472:1:4"}]},{"nodeType":"YulAssignment","src":"506:25:4","value":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"529:1:4"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"511:17:4"},"nodeType":"YulFunctionCall","src":"511:20:4"},"variableNames":[{"name":"y","nodeType":"YulIdentifier","src":"506:1:4"}]},{"body":{"nodeType":"YulBlock","src":"553:22:4","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x12","nodeType":"YulIdentifier","src":"555:16:4"},"nodeType":"YulFunctionCall","src":"555:18:4"},"nodeType":"YulExpressionStatement","src":"555:18:4"}]},"condition":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"550:1:4"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"543:6:4"},"nodeType":"YulFunctionCall","src":"543:9:4"},"nodeType":"YulIf","src":"540:2:4"},{"nodeType":"YulAssignment","src":"585:14:4","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"594:1:4"},{"name":"y","nodeType":"YulIdentifier","src":"597:1:4"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"590:3:4"},"nodeType":"YulFunctionCall","src":"590:9:4"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"585:1:4"}]}]},"name":"checked_div_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"451:1:4","type":""},{"name":"y","nodeType":"YulTypedName","src":"454:1:4","type":""}],"returnVariables":[{"name":"r","nodeType":"YulTypedName","src":"460:1:4","type":""}],"src":"420:185:4"},{"body":{"nodeType":"YulBlock","src":"656:51:4","statements":[{"nodeType":"YulAssignment","src":"666:35:4","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"695:5:4"}],"functionName":{"name":"cleanup_t_uint160","nodeType":"YulIdentifier","src":"677:17:4"},"nodeType":"YulFunctionCall","src":"677:24:4"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"666:7:4"}]}]},"name":"cleanup_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"638:5:4","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"648:7:4","type":""}],"src":"611:96:4"},{"body":{"nodeType":"YulBlock","src":"758:81:4","statements":[{"nodeType":"YulAssignment","src":"768:65:4","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"783:5:4"},{"kind":"number","nodeType":"YulLiteral","src":"790:42:4","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"779:3:4"},"nodeType":"YulFunctionCall","src":"779:54:4"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"768:7:4"}]}]},"name":"cleanup_t_uint160","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"740:5:4","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"750:7:4","type":""}],"src":"713:126:4"},{"body":{"nodeType":"YulBlock","src":"890:32:4","statements":[{"nodeType":"YulAssignment","src":"900:16:4","value":{"name":"value","nodeType":"YulIdentifier","src":"911:5:4"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"900:7:4"}]}]},"name":"cleanup_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"872:5:4","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"882:7:4","type":""}],"src":"845:77:4"},{"body":{"nodeType":"YulBlock","src":"956:152:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"973:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"976:77:4","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"966:6:4"},"nodeType":"YulFunctionCall","src":"966:88:4"},"nodeType":"YulExpressionStatement","src":"966:88:4"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1070:1:4","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"1073:4:4","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1063:6:4"},"nodeType":"YulFunctionCall","src":"1063:15:4"},"nodeType":"YulExpressionStatement","src":"1063:15:4"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1094:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1097:4:4","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1087:6:4"},"nodeType":"YulFunctionCall","src":"1087:15:4"},"nodeType":"YulExpressionStatement","src":"1087:15:4"}]},"name":"panic_error_0x11","nodeType":"YulFunctionDefinition","src":"928:180:4"},{"body":{"nodeType":"YulBlock","src":"1142:152:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1159:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1162:77:4","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1152:6:4"},"nodeType":"YulFunctionCall","src":"1152:88:4"},"nodeType":"YulExpressionStatement","src":"1152:88:4"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1256:1:4","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"1259:4:4","type":"","value":"0x12"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1249:6:4"},"nodeType":"YulFunctionCall","src":"1249:15:4"},"nodeType":"YulExpressionStatement","src":"1249:15:4"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1280:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1283:4:4","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1273:6:4"},"nodeType":"YulFunctionCall","src":"1273:15:4"},"nodeType":"YulExpressionStatement","src":"1273:15:4"}]},"name":"panic_error_0x12","nodeType":"YulFunctionDefinition","src":"1114:180:4"},{"body":{"nodeType":"YulBlock","src":"1343:79:4","statements":[{"body":{"nodeType":"YulBlock","src":"1400:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1409:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1412:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1402:6:4"},"nodeType":"YulFunctionCall","src":"1402:12:4"},"nodeType":"YulExpressionStatement","src":"1402:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1366:5:4"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1391:5:4"}],"functionName":{"name":"cleanup_t_address","nodeType":"YulIdentifier","src":"1373:17:4"},"nodeType":"YulFunctionCall","src":"1373:24:4"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1363:2:4"},"nodeType":"YulFunctionCall","src":"1363:35:4"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1356:6:4"},"nodeType":"YulFunctionCall","src":"1356:43:4"},"nodeType":"YulIf","src":"1353:2:4"}]},"name":"validator_revert_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1336:5:4","type":""}],"src":"1300:122:4"}]},"contents":"{\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_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 checked_div_t_uint256(x, y) -> r {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n if iszero(y) { panic_error_0x12() }\n\n r := div(x, y)\n }\n\n function cleanup_t_address(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 panic_error_0x11() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n\n function panic_error_0x12() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x12)\n revert(0, 0x24)\n }\n\n function validator_revert_t_address(value) {\n if iszero(eq(value, cleanup_t_address(value))) { revert(0, 0) }\n }\n\n}\n","id":4,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"60806040526004361061002d5760003560e01c8063a03fa7e314610039578063b019946e1461005557610034565b3661003457005b600080fd5b610053600480360381019061004e9190610113565b61005f565b005b61005d6100a9565b005b8073ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f193505050501580156100a5573d6000803e3d6000fd5b5050565b3373ffffffffffffffffffffffffffffffffffffffff166108fc6002346100d0919061013c565b9081150290604051600060405180830381858888f193505050501580156100fb573d6000803e3d6000fd5b50565b60008135905061010d816101d8565b92915050565b60006020828403121561012557600080fd5b6000610133848285016100fe565b91505092915050565b60006101478261019f565b91506101528361019f565b925082610162576101616101a9565b5b828204905092915050565b60006101788261017f565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6101e18161016d565b81146101ec57600080fd5b5056fea26469706673582212208e553461507bae731d37afa0d5a2a7dae74de7a6eab682733425a78884ed60b364736f6c63430008040033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x2D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xA03FA7E3 EQ PUSH2 0x39 JUMPI DUP1 PUSH4 0xB019946E EQ PUSH2 0x55 JUMPI PUSH2 0x34 JUMP JUMPDEST CALLDATASIZE PUSH2 0x34 JUMPI STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x53 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x4E SWAP2 SWAP1 PUSH2 0x113 JUMP JUMPDEST PUSH2 0x5F JUMP JUMPDEST STOP JUMPDEST PUSH2 0x5D PUSH2 0xA9 JUMP JUMPDEST STOP JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8FC CALLVALUE 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 0xA5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8FC PUSH1 0x2 CALLVALUE PUSH2 0xD0 SWAP2 SWAP1 PUSH2 0x13C JUMP JUMPDEST 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 0xFB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x10D DUP2 PUSH2 0x1D8 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x125 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x133 DUP5 DUP3 DUP6 ADD PUSH2 0xFE JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x147 DUP3 PUSH2 0x19F JUMP JUMPDEST SWAP2 POP PUSH2 0x152 DUP4 PUSH2 0x19F JUMP JUMPDEST SWAP3 POP DUP3 PUSH2 0x162 JUMPI PUSH2 0x161 PUSH2 0x1A9 JUMP JUMPDEST JUMPDEST DUP3 DUP3 DIV SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x178 DUP3 PUSH2 0x17F 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 PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH2 0x1E1 DUP2 PUSH2 0x16D JUMP JUMPDEST DUP2 EQ PUSH2 0x1EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP15 SSTORE CALLVALUE PUSH2 0x507B 0xAE PUSH20 0x1D37AFA0D5A2A7DAE74DE7A6EAB682733425A788 DUP5 0xED PUSH1 0xB3 PUSH5 0x736F6C6343 STOP ADDMOD DIV STOP CALLER ","sourceMap":"57:255:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;184:93;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;89:91;;;:::i;:::-;;184:93;247:4;239:22;;:33;262:9;239:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;184:93;:::o;89:91::-;140:10;132:28;;:43;173:1;161:9;:13;;;;:::i;:::-;132:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;89:91::o;7:139:4:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:262::-;211:6;260:2;248:9;239:7;235:23;231:32;228:2;;;276:1;273;266:12;228:2;319:1;344:53;389:7;380:6;369:9;365:22;344:53;:::i;:::-;334:63;;290:117;218:196;;;;:::o;420:185::-;460:1;477:20;495:1;477:20;:::i;:::-;472:25;;511:20;529:1;511:20;:::i;:::-;506:25;;550:1;540:2;;555:18;;:::i;:::-;540:2;597:1;594;590:9;585:14;;462:143;;;;:::o;611:96::-;648:7;677:24;695:5;677:24;:::i;:::-;666:35;;656:51;;;:::o;713:126::-;750:7;790:42;783:5;779:54;768:65;;758:81;;;:::o;845:77::-;882:7;911:5;900:16;;890:32;;;:::o;1114:180::-;1162:77;1159:1;1152:88;1259:4;1256:1;1249:15;1283:4;1280:1;1273:15;1300:122;1373:24;1391:5;1373:24;:::i;:::-;1366:5;1363:35;1353:2;;1412:1;1409;1402:12;1353:2;1343:79;:::o"},"methodIdentifiers":{"returnHalf()":"b019946e","transferTo(address)":"a03fa7e3"}},"metadata":"{\"compiler\":{\"version\":\"0.8.4+commit.c7e474f2\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"returnHalf\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"transferTo\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/ChangeEtherBalance.sol\":\"ChangeEtherBalance\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/ChangeEtherBalance.sol\":{\"keccak256\":\"0x9c266d442b9dd1fdb8311deec6e6dc9b59612eee5279091d54a006779b1db3f0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://533b87dc323c18ae4775141b46443e8bce865632e9af58eee3b044cfb37f9ef7\",\"dweb:/ipfs/QmbUkSPQDMQ1jEt6n3wwNK9s7BrQhNuy2iYLM4df36AWma\"]}},\"version\":1}"}},"contracts/Events.sol":{"AnotherContract":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"u","type":"uint256"}],"name":"WithUintArg","type":"event"},{"inputs":[{"internalType":"uint256","name":"u","type":"uint256"}],"name":"emitUint","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"608060405234801561001057600080fd5b50610130806100206000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c80639194024414602d575b600080fd5b60436004803603810190603f91906090565b6045565b005b7f97535d4b4270d3f1a499c85ae918ba6798cbdcc83a26529331a25dcd2194cfce816040516072919060c3565b60405180910390a150565b600081359050608a8160e6565b92915050565b60006020828403121560a157600080fd5b600060ad84828501607d565b91505092915050565b60bd8160dc565b82525050565b600060208201905060d6600083018460b6565b92915050565b6000819050919050565b60ed8160dc565b811460f757600080fd5b5056fea264697066735822122083cb9b1ec00d6d1ec78d28771d3bf4778c5ba00b0532a2448d42cbab653355a064736f6c63430008040033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x130 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x28 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x91940244 EQ PUSH1 0x2D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x43 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH1 0x3F SWAP2 SWAP1 PUSH1 0x90 JUMP JUMPDEST PUSH1 0x45 JUMP JUMPDEST STOP JUMPDEST PUSH32 0x97535D4B4270D3F1A499C85AE918BA6798CBDCC83A26529331A25DCD2194CFCE DUP2 PUSH1 0x40 MLOAD PUSH1 0x72 SWAP2 SWAP1 PUSH1 0xC3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH1 0x8A DUP2 PUSH1 0xE6 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH1 0xA1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0xAD DUP5 DUP3 DUP6 ADD PUSH1 0x7D JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0xBD DUP2 PUSH1 0xDC JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH1 0xD6 PUSH1 0x0 DUP4 ADD DUP5 PUSH1 0xB6 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0xED DUP2 PUSH1 0xDC JUMP JUMPDEST DUP2 EQ PUSH1 0xF7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP4 0xCB SWAP12 0x1E 0xC0 0xD PUSH14 0x1EC78D28771D3BF4778C5BA00B05 ORIGIN LOG2 DIFFICULTY DUP14 TIMESTAMP 0xCB 0xAB PUSH6 0x3355A064736F PUSH13 0x63430008040033000000000000 ","sourceMap":"2530:124:1:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:980:4","statements":[{"body":{"nodeType":"YulBlock","src":"59:87:4","statements":[{"nodeType":"YulAssignment","src":"69:29:4","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"91:6:4"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"78:12:4"},"nodeType":"YulFunctionCall","src":"78:20:4"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"69:5:4"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"134:5:4"}],"functionName":{"name":"validator_revert_t_uint256","nodeType":"YulIdentifier","src":"107:26:4"},"nodeType":"YulFunctionCall","src":"107:33:4"},"nodeType":"YulExpressionStatement","src":"107:33:4"}]},"name":"abi_decode_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"37:6:4","type":""},{"name":"end","nodeType":"YulTypedName","src":"45:3:4","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"53:5:4","type":""}],"src":"7:139:4"},{"body":{"nodeType":"YulBlock","src":"218:196:4","statements":[{"body":{"nodeType":"YulBlock","src":"264:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"273:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"276:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"266:6:4"},"nodeType":"YulFunctionCall","src":"266:12:4"},"nodeType":"YulExpressionStatement","src":"266:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"239:7:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"248:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"235:3:4"},"nodeType":"YulFunctionCall","src":"235:23:4"},{"kind":"number","nodeType":"YulLiteral","src":"260:2:4","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"231:3:4"},"nodeType":"YulFunctionCall","src":"231:32:4"},"nodeType":"YulIf","src":"228:2:4"},{"nodeType":"YulBlock","src":"290:117:4","statements":[{"nodeType":"YulVariableDeclaration","src":"305:15:4","value":{"kind":"number","nodeType":"YulLiteral","src":"319:1:4","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"309:6:4","type":""}]},{"nodeType":"YulAssignment","src":"334:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"369:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"380:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"365:3:4"},"nodeType":"YulFunctionCall","src":"365:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"389:7:4"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"344:20:4"},"nodeType":"YulFunctionCall","src":"344:53:4"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"334:6:4"}]}]}]},"name":"abi_decode_tuple_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"188:9:4","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"199:7:4","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"211:6:4","type":""}],"src":"152:262:4"},{"body":{"nodeType":"YulBlock","src":"485:53:4","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"502:3:4"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"525:5:4"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"507:17:4"},"nodeType":"YulFunctionCall","src":"507:24:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"495:6:4"},"nodeType":"YulFunctionCall","src":"495:37:4"},"nodeType":"YulExpressionStatement","src":"495:37:4"}]},"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"473:5:4","type":""},{"name":"pos","nodeType":"YulTypedName","src":"480:3:4","type":""}],"src":"420:118:4"},{"body":{"nodeType":"YulBlock","src":"642:124:4","statements":[{"nodeType":"YulAssignment","src":"652:26:4","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"664:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"675:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"660:3:4"},"nodeType":"YulFunctionCall","src":"660:18:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"652:4:4"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"732:6:4"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"745:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"756:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"741:3:4"},"nodeType":"YulFunctionCall","src":"741:17:4"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"688:43:4"},"nodeType":"YulFunctionCall","src":"688:71:4"},"nodeType":"YulExpressionStatement","src":"688:71:4"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"614:9:4","type":""},{"name":"value0","nodeType":"YulTypedName","src":"626:6:4","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"637:4:4","type":""}],"src":"544:222:4"},{"body":{"nodeType":"YulBlock","src":"817:32:4","statements":[{"nodeType":"YulAssignment","src":"827:16:4","value":{"name":"value","nodeType":"YulIdentifier","src":"838:5:4"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"827:7:4"}]}]},"name":"cleanup_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"799:5:4","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"809:7:4","type":""}],"src":"772:77:4"},{"body":{"nodeType":"YulBlock","src":"898:79:4","statements":[{"body":{"nodeType":"YulBlock","src":"955:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"964:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"967:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"957:6:4"},"nodeType":"YulFunctionCall","src":"957:12:4"},"nodeType":"YulExpressionStatement","src":"957:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"921:5:4"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"946:5:4"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"928:17:4"},"nodeType":"YulFunctionCall","src":"928:24:4"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"918:2:4"},"nodeType":"YulFunctionCall","src":"918:35:4"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"911:6:4"},"nodeType":"YulFunctionCall","src":"911:43:4"},"nodeType":"YulIf","src":"908:2:4"}]},"name":"validator_revert_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"891:5:4","type":""}],"src":"855:122:4"}]},"contents":"{\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_uint256(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_uint256(add(headStart, offset), dataEnd)\n }\n\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_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 cleanup_t_uint256(value) -> cleaned {\n cleaned := value\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":4,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"6080604052348015600f57600080fd5b506004361060285760003560e01c80639194024414602d575b600080fd5b60436004803603810190603f91906090565b6045565b005b7f97535d4b4270d3f1a499c85ae918ba6798cbdcc83a26529331a25dcd2194cfce816040516072919060c3565b60405180910390a150565b600081359050608a8160e6565b92915050565b60006020828403121560a157600080fd5b600060ad84828501607d565b91505092915050565b60bd8160dc565b82525050565b600060208201905060d6600083018460b6565b92915050565b6000819050919050565b60ed8160dc565b811460f757600080fd5b5056fea264697066735822122083cb9b1ec00d6d1ec78d28771d3bf4778c5ba00b0532a2448d42cbab653355a064736f6c63430008040033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x28 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x91940244 EQ PUSH1 0x2D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x43 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH1 0x3F SWAP2 SWAP1 PUSH1 0x90 JUMP JUMPDEST PUSH1 0x45 JUMP JUMPDEST STOP JUMPDEST PUSH32 0x97535D4B4270D3F1A499C85AE918BA6798CBDCC83A26529331A25DCD2194CFCE DUP2 PUSH1 0x40 MLOAD PUSH1 0x72 SWAP2 SWAP1 PUSH1 0xC3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH1 0x8A DUP2 PUSH1 0xE6 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH1 0xA1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0xAD DUP5 DUP3 DUP6 ADD PUSH1 0x7D JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0xBD DUP2 PUSH1 0xDC JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH1 0xD6 PUSH1 0x0 DUP4 ADD DUP5 PUSH1 0xB6 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0xED DUP2 PUSH1 0xDC JUMP JUMPDEST DUP2 EQ PUSH1 0xF7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP4 0xCB SWAP12 0x1E 0xC0 0xD PUSH14 0x1EC78D28771D3BF4778C5BA00B05 ORIGIN LOG2 DIFFICULTY DUP14 TIMESTAMP 0xCB 0xAB PUSH6 0x3355A064736F PUSH13 0x63430008040033000000000000 ","sourceMap":"2530:124:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2589:63;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;2633:14;2645:1;2633:14;;;;;;:::i;:::-;;;;;;;;2589:63;:::o;7:139:4:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:262::-;211:6;260:2;248:9;239:7;235:23;231:32;228:2;;;276:1;273;266:12;228:2;319:1;344:53;389:7;380:6;369:9;365:22;344:53;:::i;:::-;334:63;;290:117;218:196;;;;:::o;420:118::-;507:24;525:5;507:24;:::i;:::-;502:3;495:37;485:53;;:::o;544:222::-;637:4;675:2;664:9;660:18;652:26;;688:71;756:1;745:9;741:17;732:6;688:71;:::i;:::-;642:124;;;;:::o;772:77::-;809:7;838:5;827:16;;817:32;;;:::o;855:122::-;928:24;946:5;928:24;:::i;:::-;921:5;918:35;908:2;;967:1;964;957:12;908:2;898:79;:::o"},"methodIdentifiers":{"emitUint(uint256)":"91940244"}},"metadata":"{\"compiler\":{\"version\":\"0.8.4+commit.c7e474f2\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"u\",\"type\":\"uint256\"}],\"name\":\"WithUintArg\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"u\",\"type\":\"uint256\"}],\"name\":\"emitUint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/Events.sol\":\"AnotherContract\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/Events.sol\":{\"keccak256\":\"0x1f12bbd1b991a4eb017f864e7ca09d99cee0730630313442e99fc32a29b28b91\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c8ba3dbc99ecfbb05a95a9a89e8ea74e86f7cbd5441a53fca9f3de94651313d5\",\"dweb:/ipfs/QmYr9HUxkuQxuEwxtLn3f9gB7i2epM95Znt6fRj9xL9T6Y\"]}},\"version\":1}"},"Events":{"abi":[{"inputs":[{"internalType":"contract AnotherContract","name":"c","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"a","type":"address"}],"name":"WithAddressArg","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"b","type":"bytes32"}],"name":"WithBytes32Arg","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32[2]","name":"a","type":"bytes32[2]"}],"name":"WithBytes32Array","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes","name":"b","type":"bytes"}],"name":"WithBytesArg","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"b","type":"bytes32"}],"name":"WithIndexedBytes32Arg","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes","name":"b","type":"bytes"}],"name":"WithIndexedBytesArg","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"string","name":"s","type":"string"}],"name":"WithIndexedStringArg","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"int256","name":"i","type":"int256"}],"name":"WithIntArg","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"s","type":"string"}],"name":"WithStringArg","type":"event"},{"anonymous":false,"inputs":[{"components":[{"internalType":"uint256","name":"u","type":"uint256"},{"internalType":"uint256","name":"v","type":"uint256"}],"indexed":false,"internalType":"struct Events.Struct","name":"s","type":"tuple"}],"name":"WithStructArg","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"s","type":"string"},{"indexed":false,"internalType":"string","name":"t","type":"string"}],"name":"WithTwoStringArgs","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"u","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"v","type":"uint256"}],"name":"WithTwoUintArgs","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"u","type":"uint256"}],"name":"WithUintArg","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256[2]","name":"a","type":"uint256[2]"}],"name":"WithUintArray","type":"event"},{"anonymous":false,"inputs":[],"name":"WithoutArgs","type":"event"},{"inputs":[],"name":"doNotEmit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"a","type":"address"}],"name":"emitAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"b","type":"bytes"}],"name":"emitBytes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"b","type":"bytes32"}],"name":"emitBytes32","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"b","type":"bytes32"},{"internalType":"bytes32","name":"c","type":"bytes32"}],"name":"emitBytes32Array","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"b","type":"bytes"}],"name":"emitIndexedBytes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"b","type":"bytes32"}],"name":"emitIndexedBytes32","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"s","type":"string"}],"name":"emitIndexedString","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"int256","name":"i","type":"int256"}],"name":"emitInt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"u","type":"uint256"}],"name":"emitNestedUintFromAnotherContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"u","type":"uint256"}],"name":"emitNestedUintFromSameContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"s","type":"string"}],"name":"emitString","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"u","type":"uint256"},{"internalType":"uint256","name":"v","type":"uint256"}],"name":"emitStruct","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"u","type":"uint256"},{"internalType":"uint256","name":"v","type":"uint256"}],"name":"emitTwoUints","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"u","type":"uint256"},{"internalType":"uint256","name":"v","type":"uint256"},{"internalType":"string","name":"s","type":"string"},{"internalType":"string","name":"t","type":"string"}],"name":"emitTwoUintsAndTwoStrings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"u","type":"uint256"}],"name":"emitUint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"u","type":"uint256"},{"internalType":"string","name":"s","type":"string"}],"name":"emitUintAndString","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"u","type":"uint256"},{"internalType":"uint256","name":"v","type":"uint256"}],"name":"emitUintArray","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"u","type":"uint256"},{"internalType":"uint256","name":"v","type":"uint256"}],"name":"emitUintTwice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"emitWithoutArgs","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:1068:4","statements":[{"body":{"nodeType":"YulBlock","src":"93:103:4","statements":[{"nodeType":"YulAssignment","src":"103:22:4","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"118:6:4"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"112:5:4"},"nodeType":"YulFunctionCall","src":"112:13:4"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"103:5:4"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"184:5:4"}],"functionName":{"name":"validator_revert_t_contract$_AnotherContract_$374","nodeType":"YulIdentifier","src":"134:49:4"},"nodeType":"YulFunctionCall","src":"134:56:4"},"nodeType":"YulExpressionStatement","src":"134:56:4"}]},"name":"abi_decode_t_contract$_AnotherContract_$374_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"71:6:4","type":""},{"name":"end","nodeType":"YulTypedName","src":"79:3:4","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"87:5:4","type":""}],"src":"7:189:4"},{"body":{"nodeType":"YulBlock","src":"302:230:4","statements":[{"body":{"nodeType":"YulBlock","src":"348:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"357:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"360:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"350:6:4"},"nodeType":"YulFunctionCall","src":"350:12:4"},"nodeType":"YulExpressionStatement","src":"350:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"323:7:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"332:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"319:3:4"},"nodeType":"YulFunctionCall","src":"319:23:4"},{"kind":"number","nodeType":"YulLiteral","src":"344:2:4","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"315:3:4"},"nodeType":"YulFunctionCall","src":"315:32:4"},"nodeType":"YulIf","src":"312:2:4"},{"nodeType":"YulBlock","src":"374:151:4","statements":[{"nodeType":"YulVariableDeclaration","src":"389:15:4","value":{"kind":"number","nodeType":"YulLiteral","src":"403:1:4","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"393:6:4","type":""}]},{"nodeType":"YulAssignment","src":"418:97:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"487:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"498:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"483:3:4"},"nodeType":"YulFunctionCall","src":"483:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"507:7:4"}],"functionName":{"name":"abi_decode_t_contract$_AnotherContract_$374_fromMemory","nodeType":"YulIdentifier","src":"428:54:4"},"nodeType":"YulFunctionCall","src":"428:87:4"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"418:6:4"}]}]}]},"name":"abi_decode_tuple_t_contract$_AnotherContract_$374_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"272:9:4","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"283:7:4","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"295:6:4","type":""}],"src":"202:330:4"},{"body":{"nodeType":"YulBlock","src":"583:51:4","statements":[{"nodeType":"YulAssignment","src":"593:35:4","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"622:5:4"}],"functionName":{"name":"cleanup_t_uint160","nodeType":"YulIdentifier","src":"604:17:4"},"nodeType":"YulFunctionCall","src":"604:24:4"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"593:7:4"}]}]},"name":"cleanup_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"565:5:4","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"575:7:4","type":""}],"src":"538:96:4"},{"body":{"nodeType":"YulBlock","src":"708:51:4","statements":[{"nodeType":"YulAssignment","src":"718:35:4","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"747:5:4"}],"functionName":{"name":"cleanup_t_address","nodeType":"YulIdentifier","src":"729:17:4"},"nodeType":"YulFunctionCall","src":"729:24:4"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"718:7:4"}]}]},"name":"cleanup_t_contract$_AnotherContract_$374","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"690:5:4","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"700:7:4","type":""}],"src":"640:119:4"},{"body":{"nodeType":"YulBlock","src":"810:81:4","statements":[{"nodeType":"YulAssignment","src":"820:65:4","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"835:5:4"},{"kind":"number","nodeType":"YulLiteral","src":"842:42:4","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"831:3:4"},"nodeType":"YulFunctionCall","src":"831:54:4"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"820:7:4"}]}]},"name":"cleanup_t_uint160","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"792:5:4","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"802:7:4","type":""}],"src":"765:126:4"},{"body":{"nodeType":"YulBlock","src":"963:102:4","statements":[{"body":{"nodeType":"YulBlock","src":"1043:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1052:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1055:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1045:6:4"},"nodeType":"YulFunctionCall","src":"1045:12:4"},"nodeType":"YulExpressionStatement","src":"1045:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"986:5:4"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1034:5:4"}],"functionName":{"name":"cleanup_t_contract$_AnotherContract_$374","nodeType":"YulIdentifier","src":"993:40:4"},"nodeType":"YulFunctionCall","src":"993:47:4"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"983:2:4"},"nodeType":"YulFunctionCall","src":"983:58:4"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"976:6:4"},"nodeType":"YulFunctionCall","src":"976:66:4"},"nodeType":"YulIf","src":"973:2:4"}]},"name":"validator_revert_t_contract$_AnotherContract_$374","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"956:5:4","type":""}],"src":"897:168:4"}]},"contents":"{\n\n function abi_decode_t_contract$_AnotherContract_$374_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_contract$_AnotherContract_$374(value)\n }\n\n function abi_decode_tuple_t_contract$_AnotherContract_$374_fromMemory(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_contract$_AnotherContract_$374_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function cleanup_t_contract$_AnotherContract_$374(value) -> cleaned {\n cleaned := cleanup_t_address(value)\n }\n\n function cleanup_t_uint160(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n }\n\n function validator_revert_t_contract$_AnotherContract_$374(value) {\n if iszero(eq(value, cleanup_t_contract$_AnotherContract_$374(value))) { revert(0, 0) }\n }\n\n}\n","id":4,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"60806040523480156200001157600080fd5b506040516200140d3803806200140d833981810160405281019062000037919062000095565b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505062000123565b6000815190506200008f8162000109565b92915050565b600060208284031215620000a857600080fd5b6000620000b8848285016200007e565b91505092915050565b6000620000ce82620000e9565b9050919050565b6000620000e282620000c1565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6200011481620000d5565b81146200012057600080fd5b50565b6112da80620001336000396000f3fe608060405234801561001057600080fd5b506004361061012c5760003560e01c80638a618191116100ad578063c76f063511610071578063c76f0635146102c3578063cc07e605146102df578063d3931e57146102fb578063db6cdf6814610317578063ec5c3ede146103215761012c565b80638a6181911461024957806390b37ea214610265578063919402441461026f5780639f31a2231461028b578063c0cd80e6146102a75761012c565b806333311ef3116100f457806333311ef3146101bd57806338393646146101d9578063443690a0146101f5578063532b9cce14610211578063813a8cf51461022d5761012c565b8063048858e5146101315780630c0c941a1461014d57806317aba537146101695780632536f127146101855780632785f8d6146101a1575b600080fd5b61014b600480360381019061014691906109f0565b61033d565b005b61016760048036038101906101629190610b7d565b61036d565b005b610183600480360381019061017e9190610b7d565b6103df565b005b61019f600480360381019061019a9190610abf565b61042e565b005b6101bb60048036038101906101b69190610b29565b610468565b005b6101d760048036038101906101d291906109f0565b6104da565b005b6101f360048036038101906101ee9190610b7d565b610514565b005b61020f600480360381019061020a9190610abf565b610551565b005b61022b60048036038101906102269190610bb9565b610596565b005b61024760048036038101906102429190610b00565b61060e565b005b610263600480360381019061025e9190610a96565b61061a565b005b61026d610654565b005b61028960048036038101906102849190610b00565b610682565b005b6102a560048036038101906102a09190610b7d565b6106bc565b005b6102c160048036038101906102bc9190610a19565b61070b565b005b6102dd60048036038101906102d89190610a55565b61075a565b005b6102f960048036038101906102f49190610a55565b610794565b005b61031560048036038101906103109190610b00565b6107d9565b005b61031f610867565b005b61033b600480360381019061033691906109c7565b610869565b005b807fb421ad092cfce88844bfbfaa9654e824ba0ee5b6b0a220f822406b62c05364c060405160405180910390a250565b7f97535d4b4270d3f1a499c85ae918ba6798cbdcc83a26529331a25dcd2194cfce8260405161039c9190610fd2565b60405180910390a17f97535d4b4270d3f1a499c85ae918ba6798cbdcc83a26529331a25dcd2194cfce816040516103d39190610fd2565b60405180910390a15050565b7f73e687a2685d698f7acf934b4929a29ae783a4bcb640d71c5d6994d74e2380ca6040518060400160405280848152602001838152506040516104229190610eeb565b60405180910390a15050565b7f9b7ddcbde8dac280e036f87acafec72f9eee31a640c08087e8439139c7e5b52a8160405161045d9190610f5e565b60405180910390a150565b7f9b7ddcbde8dac280e036f87acafec72f9eee31a640c08087e8439139c7e5b52a816040516104979190610f5e565b60405180910390a17f97535d4b4270d3f1a499c85ae918ba6798cbdcc83a26529331a25dcd2194cfce826040516104ce9190610fd2565b60405180910390a15050565b7f425517d2678bbca3c0d9d8d9fdbec34c81194e7935ed48a6a19f97db93bcef6a816040516105099190610f06565b60405180910390a150565b7f8b268bb46a33a55bece084a8b6858719c9f2985c860fa06c155a341df0b73c0e8282604051610545929190610fed565b60405180910390a15050565b8060405161055f9190610e9e565b60405180910390207fd9ca28363e2d8739e0e9c4fea1d2df98d1bd7d9d915d00e5fccbf78c0fddcdb060405160405180910390a250565b7f8b268bb46a33a55bece084a8b6858719c9f2985c860fa06c155a341df0b73c0e84846040516105c7929190610fed565b60405180910390a17f1f1a2c748505fcd8f16a719fa88d517b1b41111c4f5e07bb28311cdc4d1515388282604051610600929190610f80565b60405180910390a150505050565b61061781610682565b50565b7f39feab747bb4f579008aea963d7ebac85ad410bb83ee663a42af01464654e93f816040516106499190610f43565b60405180910390a150565b7f917b7bf7ab24d61500cb699921a3a1cc22b8833da6484fea20f262b2610604af60405160405180910390a1565b7f97535d4b4270d3f1a499c85ae918ba6798cbdcc83a26529331a25dcd2194cfce816040516106b19190610fd2565b60405180910390a150565b7fd59ab87bf64b9d737998f3dc70c649d16b135f085029c1666ca0634beb75a7736040518060400160405280848152602001838152506040516106ff9190610fb7565b60405180910390a15050565b7f15100859f3ffe92910dc3f11ed3db4e9cf32ff657c05066e44be4e69b2b488bc60405180604001604052808481526020018381525060405161074e9190610ed0565b60405180910390a15050565b7f433470edcdd53b50238be4d8e048e2baa269af5be2a4e29515c138883c745aa8816040516107899190610f21565b60405180910390a150565b806040516107a29190610e87565b60405180910390207f160e4655df40987951accf7c731d5c504f77d20c139bd73032821b91a426dd9860405160405180910390a250565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166391940244826040518263ffffffff1660e01b81526004016108329190610fd2565b600060405180830381600087803b15801561084c57600080fd5b505af1158015610860573d6000803e3d6000fd5b5050505050565b565b7f336bcd960d2e5a52cef6094ba33727f309dc2c675eebefc6d9b6b6d79abac877816040516108989190610eb5565b60405180910390a150565b60006108b66108b18461103b565b611016565b9050828152602081018484840111156108ce57600080fd5b6108d9848285611195565b509392505050565b60006108f46108ef8461106c565b611016565b90508281526020810184848401111561090c57600080fd5b610917848285611195565b509392505050565b60008135905061092e81611248565b92915050565b6000813590506109438161125f565b92915050565b600082601f83011261095a57600080fd5b813561096a8482602086016108a3565b91505092915050565b60008135905061098281611276565b92915050565b600082601f83011261099957600080fd5b81356109a98482602086016108e1565b91505092915050565b6000813590506109c18161128d565b92915050565b6000602082840312156109d957600080fd5b60006109e78482850161091f565b91505092915050565b600060208284031215610a0257600080fd5b6000610a1084828501610934565b91505092915050565b60008060408385031215610a2c57600080fd5b6000610a3a85828601610934565b9250506020610a4b85828601610934565b9150509250929050565b600060208284031215610a6757600080fd5b600082013567ffffffffffffffff811115610a8157600080fd5b610a8d84828501610949565b91505092915050565b600060208284031215610aa857600080fd5b6000610ab684828501610973565b91505092915050565b600060208284031215610ad157600080fd5b600082013567ffffffffffffffff811115610aeb57600080fd5b610af784828501610988565b91505092915050565b600060208284031215610b1257600080fd5b6000610b20848285016109b2565b91505092915050565b60008060408385031215610b3c57600080fd5b6000610b4a858286016109b2565b925050602083013567ffffffffffffffff811115610b6757600080fd5b610b7385828601610988565b9150509250929050565b60008060408385031215610b9057600080fd5b6000610b9e858286016109b2565b9250506020610baf858286016109b2565b9150509250929050565b60008060008060808587031215610bcf57600080fd5b6000610bdd878288016109b2565b9450506020610bee878288016109b2565b935050604085013567ffffffffffffffff811115610c0b57600080fd5b610c1787828801610988565b925050606085013567ffffffffffffffff811115610c3457600080fd5b610c4087828801610988565b91505092959194509250565b6000610c588383610d39565b60208301905092915050565b6000610c708383610e69565b60208301905092915050565b610c8581611145565b82525050565b610c94816110b1565b610c9e81846110f7565b9250610ca98261109d565b8060005b83811015610cda578151610cc18782610c4c565b9650610ccc836110dd565b925050600181019050610cad565b505050505050565b610ceb816110bc565b610cf58184611102565b9250610d00826110a7565b8060005b83811015610d31578151610d188782610c64565b9650610d23836110ea565b925050600181019050610d04565b505050505050565b610d4281611157565b82525050565b610d5181611157565b82525050565b6000610d62826110c7565b610d6c818561110d565b9350610d7c8185602086016111a4565b610d8581611237565b840191505092915050565b6000610d9b826110c7565b610da5818561111e565b9350610db58185602086016111a4565b80840191505092915050565b610dca81611161565b82525050565b6000610ddb826110d2565b610de58185611129565b9350610df58185602086016111a4565b610dfe81611237565b840191505092915050565b6000610e14826110d2565b610e1e818561113a565b9350610e2e8185602086016111a4565b80840191505092915050565b604082016000820151610e506000850182610e69565b506020820151610e636020850182610e69565b50505050565b610e728161118b565b82525050565b610e818161118b565b82525050565b6000610e938284610d90565b915081905092915050565b6000610eaa8284610e09565b915081905092915050565b6000602082019050610eca6000830184610c7c565b92915050565b6000604082019050610ee56000830184610c8b565b92915050565b6000604082019050610f006000830184610ce2565b92915050565b6000602082019050610f1b6000830184610d48565b92915050565b60006020820190508181036000830152610f3b8184610d57565b905092915050565b6000602082019050610f586000830184610dc1565b92915050565b60006020820190508181036000830152610f788184610dd0565b905092915050565b60006040820190508181036000830152610f9a8185610dd0565b90508181036020830152610fae8184610dd0565b90509392505050565b6000604082019050610fcc6000830184610e3a565b92915050565b6000602082019050610fe76000830184610e78565b92915050565b60006040820190506110026000830185610e78565b61100f6020830184610e78565b9392505050565b6000611020611031565b905061102c82826111d7565b919050565b6000604051905090565b600067ffffffffffffffff82111561105657611055611208565b5b61105f82611237565b9050602081019050919050565b600067ffffffffffffffff82111561108757611086611208565b5b61109082611237565b9050602081019050919050565b6000819050919050565b6000819050919050565b600060029050919050565b600060029050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b600081905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b60006111508261116b565b9050919050565b6000819050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b838110156111c25780820151818401526020810190506111a7565b838111156111d1576000848401525b50505050565b6111e082611237565b810181811067ffffffffffffffff821117156111ff576111fe611208565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b61125181611145565b811461125c57600080fd5b50565b61126881611157565b811461127357600080fd5b50565b61127f81611161565b811461128a57600080fd5b50565b6112968161118b565b81146112a157600080fd5b5056fea264697066735822122073a91a740c0de3883c5213c5981d98d2396a8b60b3cf2fb364d7e4cc826a841e64736f6c63430008040033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x140D CODESIZE SUB DUP1 PUSH3 0x140D DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE DUP2 ADD SWAP1 PUSH3 0x37 SWAP2 SWAP1 PUSH3 0x95 JUMP JUMPDEST DUP1 PUSH1 0x0 DUP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP PUSH3 0x123 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH3 0x8F DUP2 PUSH3 0x109 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0xA8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH3 0xB8 DUP5 DUP3 DUP6 ADD PUSH3 0x7E JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0xCE DUP3 PUSH3 0xE9 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0xE2 DUP3 PUSH3 0xC1 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x114 DUP2 PUSH3 0xD5 JUMP JUMPDEST DUP2 EQ PUSH3 0x120 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x12DA DUP1 PUSH3 0x133 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x12C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8A618191 GT PUSH2 0xAD JUMPI DUP1 PUSH4 0xC76F0635 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xC76F0635 EQ PUSH2 0x2C3 JUMPI DUP1 PUSH4 0xCC07E605 EQ PUSH2 0x2DF JUMPI DUP1 PUSH4 0xD3931E57 EQ PUSH2 0x2FB JUMPI DUP1 PUSH4 0xDB6CDF68 EQ PUSH2 0x317 JUMPI DUP1 PUSH4 0xEC5C3EDE EQ PUSH2 0x321 JUMPI PUSH2 0x12C JUMP JUMPDEST DUP1 PUSH4 0x8A618191 EQ PUSH2 0x249 JUMPI DUP1 PUSH4 0x90B37EA2 EQ PUSH2 0x265 JUMPI DUP1 PUSH4 0x91940244 EQ PUSH2 0x26F JUMPI DUP1 PUSH4 0x9F31A223 EQ PUSH2 0x28B JUMPI DUP1 PUSH4 0xC0CD80E6 EQ PUSH2 0x2A7 JUMPI PUSH2 0x12C JUMP JUMPDEST DUP1 PUSH4 0x33311EF3 GT PUSH2 0xF4 JUMPI DUP1 PUSH4 0x33311EF3 EQ PUSH2 0x1BD JUMPI DUP1 PUSH4 0x38393646 EQ PUSH2 0x1D9 JUMPI DUP1 PUSH4 0x443690A0 EQ PUSH2 0x1F5 JUMPI DUP1 PUSH4 0x532B9CCE EQ PUSH2 0x211 JUMPI DUP1 PUSH4 0x813A8CF5 EQ PUSH2 0x22D JUMPI PUSH2 0x12C JUMP JUMPDEST DUP1 PUSH4 0x48858E5 EQ PUSH2 0x131 JUMPI DUP1 PUSH4 0xC0C941A EQ PUSH2 0x14D JUMPI DUP1 PUSH4 0x17ABA537 EQ PUSH2 0x169 JUMPI DUP1 PUSH4 0x2536F127 EQ PUSH2 0x185 JUMPI DUP1 PUSH4 0x2785F8D6 EQ PUSH2 0x1A1 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x14B PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x146 SWAP2 SWAP1 PUSH2 0x9F0 JUMP JUMPDEST PUSH2 0x33D JUMP JUMPDEST STOP JUMPDEST PUSH2 0x167 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x162 SWAP2 SWAP1 PUSH2 0xB7D JUMP JUMPDEST PUSH2 0x36D JUMP JUMPDEST STOP JUMPDEST PUSH2 0x183 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x17E SWAP2 SWAP1 PUSH2 0xB7D JUMP JUMPDEST PUSH2 0x3DF JUMP JUMPDEST STOP JUMPDEST PUSH2 0x19F PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x19A SWAP2 SWAP1 PUSH2 0xABF JUMP JUMPDEST PUSH2 0x42E JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1BB PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1B6 SWAP2 SWAP1 PUSH2 0xB29 JUMP JUMPDEST PUSH2 0x468 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1D7 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1D2 SWAP2 SWAP1 PUSH2 0x9F0 JUMP JUMPDEST PUSH2 0x4DA JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1F3 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1EE SWAP2 SWAP1 PUSH2 0xB7D JUMP JUMPDEST PUSH2 0x514 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x20F PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x20A SWAP2 SWAP1 PUSH2 0xABF JUMP JUMPDEST PUSH2 0x551 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x22B PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x226 SWAP2 SWAP1 PUSH2 0xBB9 JUMP JUMPDEST PUSH2 0x596 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x247 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x242 SWAP2 SWAP1 PUSH2 0xB00 JUMP JUMPDEST PUSH2 0x60E JUMP JUMPDEST STOP JUMPDEST PUSH2 0x263 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x25E SWAP2 SWAP1 PUSH2 0xA96 JUMP JUMPDEST PUSH2 0x61A JUMP JUMPDEST STOP JUMPDEST PUSH2 0x26D PUSH2 0x654 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x289 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x284 SWAP2 SWAP1 PUSH2 0xB00 JUMP JUMPDEST PUSH2 0x682 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2A5 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2A0 SWAP2 SWAP1 PUSH2 0xB7D JUMP JUMPDEST PUSH2 0x6BC JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2C1 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2BC SWAP2 SWAP1 PUSH2 0xA19 JUMP JUMPDEST PUSH2 0x70B JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2DD PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2D8 SWAP2 SWAP1 PUSH2 0xA55 JUMP JUMPDEST PUSH2 0x75A JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2F9 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2F4 SWAP2 SWAP1 PUSH2 0xA55 JUMP JUMPDEST PUSH2 0x794 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x315 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x310 SWAP2 SWAP1 PUSH2 0xB00 JUMP JUMPDEST PUSH2 0x7D9 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x31F PUSH2 0x867 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x33B PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x336 SWAP2 SWAP1 PUSH2 0x9C7 JUMP JUMPDEST PUSH2 0x869 JUMP JUMPDEST STOP JUMPDEST DUP1 PUSH32 0xB421AD092CFCE88844BFBFAA9654E824BA0EE5B6B0A220F822406B62C05364C0 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP JUMP JUMPDEST PUSH32 0x97535D4B4270D3F1A499C85AE918BA6798CBDCC83A26529331A25DCD2194CFCE DUP3 PUSH1 0x40 MLOAD PUSH2 0x39C SWAP2 SWAP1 PUSH2 0xFD2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH32 0x97535D4B4270D3F1A499C85AE918BA6798CBDCC83A26529331A25DCD2194CFCE DUP2 PUSH1 0x40 MLOAD PUSH2 0x3D3 SWAP2 SWAP1 PUSH2 0xFD2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH32 0x73E687A2685D698F7ACF934B4929A29AE783A4BCB640D71C5D6994D74E2380CA PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE POP PUSH1 0x40 MLOAD PUSH2 0x422 SWAP2 SWAP1 PUSH2 0xEEB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH32 0x9B7DDCBDE8DAC280E036F87ACAFEC72F9EEE31A640C08087E8439139C7E5B52A DUP2 PUSH1 0x40 MLOAD PUSH2 0x45D SWAP2 SWAP1 PUSH2 0xF5E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH32 0x9B7DDCBDE8DAC280E036F87ACAFEC72F9EEE31A640C08087E8439139C7E5B52A DUP2 PUSH1 0x40 MLOAD PUSH2 0x497 SWAP2 SWAP1 PUSH2 0xF5E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH32 0x97535D4B4270D3F1A499C85AE918BA6798CBDCC83A26529331A25DCD2194CFCE DUP3 PUSH1 0x40 MLOAD PUSH2 0x4CE SWAP2 SWAP1 PUSH2 0xFD2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH32 0x425517D2678BBCA3C0D9D8D9FDBEC34C81194E7935ED48A6A19F97DB93BCEF6A DUP2 PUSH1 0x40 MLOAD PUSH2 0x509 SWAP2 SWAP1 PUSH2 0xF06 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH32 0x8B268BB46A33A55BECE084A8B6858719C9F2985C860FA06C155A341DF0B73C0E DUP3 DUP3 PUSH1 0x40 MLOAD PUSH2 0x545 SWAP3 SWAP2 SWAP1 PUSH2 0xFED JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH2 0x55F SWAP2 SWAP1 PUSH2 0xE9E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 PUSH32 0xD9CA28363E2D8739E0E9C4FEA1D2DF98D1BD7D9D915D00E5FCCBF78C0FDDCDB0 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP JUMP JUMPDEST PUSH32 0x8B268BB46A33A55BECE084A8B6858719C9F2985C860FA06C155A341DF0B73C0E DUP5 DUP5 PUSH1 0x40 MLOAD PUSH2 0x5C7 SWAP3 SWAP2 SWAP1 PUSH2 0xFED JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH32 0x1F1A2C748505FCD8F16A719FA88D517B1B41111C4F5E07BB28311CDC4D151538 DUP3 DUP3 PUSH1 0x40 MLOAD PUSH2 0x600 SWAP3 SWAP2 SWAP1 PUSH2 0xF80 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP JUMP JUMPDEST PUSH2 0x617 DUP2 PUSH2 0x682 JUMP JUMPDEST POP JUMP JUMPDEST PUSH32 0x39FEAB747BB4F579008AEA963D7EBAC85AD410BB83EE663A42AF01464654E93F DUP2 PUSH1 0x40 MLOAD PUSH2 0x649 SWAP2 SWAP1 PUSH2 0xF43 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH32 0x917B7BF7AB24D61500CB699921A3A1CC22B8833DA6484FEA20F262B2610604AF PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMP JUMPDEST PUSH32 0x97535D4B4270D3F1A499C85AE918BA6798CBDCC83A26529331A25DCD2194CFCE DUP2 PUSH1 0x40 MLOAD PUSH2 0x6B1 SWAP2 SWAP1 PUSH2 0xFD2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH32 0xD59AB87BF64B9D737998F3DC70C649D16B135F085029C1666CA0634BEB75A773 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE POP PUSH1 0x40 MLOAD PUSH2 0x6FF SWAP2 SWAP1 PUSH2 0xFB7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH32 0x15100859F3FFE92910DC3F11ED3DB4E9CF32FF657C05066E44BE4E69B2B488BC PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE POP PUSH1 0x40 MLOAD PUSH2 0x74E SWAP2 SWAP1 PUSH2 0xED0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH32 0x433470EDCDD53B50238BE4D8E048E2BAA269AF5BE2A4E29515C138883C745AA8 DUP2 PUSH1 0x40 MLOAD PUSH2 0x789 SWAP2 SWAP1 PUSH2 0xF21 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH2 0x7A2 SWAP2 SWAP1 PUSH2 0xE87 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 PUSH32 0x160E4655DF40987951ACCF7C731D5C504F77D20C139BD73032821B91A426DD98 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x91940244 DUP3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x832 SWAP2 SWAP1 PUSH2 0xFD2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x84C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x860 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST JUMP JUMPDEST PUSH32 0x336BCD960D2E5A52CEF6094BA33727F309DC2C675EEBEFC6D9B6B6D79ABAC877 DUP2 PUSH1 0x40 MLOAD PUSH2 0x898 SWAP2 SWAP1 PUSH2 0xEB5 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8B6 PUSH2 0x8B1 DUP5 PUSH2 0x103B JUMP JUMPDEST PUSH2 0x1016 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 DUP5 DUP5 ADD GT ISZERO PUSH2 0x8CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8D9 DUP5 DUP3 DUP6 PUSH2 0x1195 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8F4 PUSH2 0x8EF DUP5 PUSH2 0x106C JUMP JUMPDEST PUSH2 0x1016 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 DUP5 DUP5 ADD GT ISZERO PUSH2 0x90C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x917 DUP5 DUP3 DUP6 PUSH2 0x1195 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x92E DUP2 PUSH2 0x1248 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x943 DUP2 PUSH2 0x125F JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x95A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x96A DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x8A3 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x982 DUP2 PUSH2 0x1276 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x999 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x9A9 DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x8E1 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x9C1 DUP2 PUSH2 0x128D JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x9D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x9E7 DUP5 DUP3 DUP6 ADD PUSH2 0x91F JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xA02 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xA10 DUP5 DUP3 DUP6 ADD PUSH2 0x934 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xA2C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xA3A DUP6 DUP3 DUP7 ADD PUSH2 0x934 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0xA4B DUP6 DUP3 DUP7 ADD PUSH2 0x934 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xA67 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xA81 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA8D DUP5 DUP3 DUP6 ADD PUSH2 0x949 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xAA8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xAB6 DUP5 DUP3 DUP6 ADD PUSH2 0x973 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xAD1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xAEB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xAF7 DUP5 DUP3 DUP6 ADD PUSH2 0x988 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xB12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xB20 DUP5 DUP3 DUP6 ADD PUSH2 0x9B2 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xB3C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xB4A DUP6 DUP3 DUP7 ADD PUSH2 0x9B2 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xB67 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB73 DUP6 DUP3 DUP7 ADD PUSH2 0x988 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xB90 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xB9E DUP6 DUP3 DUP7 ADD PUSH2 0x9B2 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0xBAF DUP6 DUP3 DUP7 ADD PUSH2 0x9B2 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0xBCF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xBDD DUP8 DUP3 DUP9 ADD PUSH2 0x9B2 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 PUSH2 0xBEE DUP8 DUP3 DUP9 ADD PUSH2 0x9B2 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xC0B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xC17 DUP8 DUP3 DUP9 ADD PUSH2 0x988 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xC34 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xC40 DUP8 DUP3 DUP9 ADD PUSH2 0x988 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC58 DUP4 DUP4 PUSH2 0xD39 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC70 DUP4 DUP4 PUSH2 0xE69 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xC85 DUP2 PUSH2 0x1145 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0xC94 DUP2 PUSH2 0x10B1 JUMP JUMPDEST PUSH2 0xC9E DUP2 DUP5 PUSH2 0x10F7 JUMP JUMPDEST SWAP3 POP PUSH2 0xCA9 DUP3 PUSH2 0x109D JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xCDA JUMPI DUP2 MLOAD PUSH2 0xCC1 DUP8 DUP3 PUSH2 0xC4C JUMP JUMPDEST SWAP7 POP PUSH2 0xCCC DUP4 PUSH2 0x10DD JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0xCAD JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0xCEB DUP2 PUSH2 0x10BC JUMP JUMPDEST PUSH2 0xCF5 DUP2 DUP5 PUSH2 0x1102 JUMP JUMPDEST SWAP3 POP PUSH2 0xD00 DUP3 PUSH2 0x10A7 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xD31 JUMPI DUP2 MLOAD PUSH2 0xD18 DUP8 DUP3 PUSH2 0xC64 JUMP JUMPDEST SWAP7 POP PUSH2 0xD23 DUP4 PUSH2 0x10EA JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0xD04 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0xD42 DUP2 PUSH2 0x1157 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0xD51 DUP2 PUSH2 0x1157 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD62 DUP3 PUSH2 0x10C7 JUMP JUMPDEST PUSH2 0xD6C DUP2 DUP6 PUSH2 0x110D JUMP JUMPDEST SWAP4 POP PUSH2 0xD7C DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x11A4 JUMP JUMPDEST PUSH2 0xD85 DUP2 PUSH2 0x1237 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD9B DUP3 PUSH2 0x10C7 JUMP JUMPDEST PUSH2 0xDA5 DUP2 DUP6 PUSH2 0x111E JUMP JUMPDEST SWAP4 POP PUSH2 0xDB5 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x11A4 JUMP JUMPDEST DUP1 DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xDCA DUP2 PUSH2 0x1161 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xDDB DUP3 PUSH2 0x10D2 JUMP JUMPDEST PUSH2 0xDE5 DUP2 DUP6 PUSH2 0x1129 JUMP JUMPDEST SWAP4 POP PUSH2 0xDF5 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x11A4 JUMP JUMPDEST PUSH2 0xDFE DUP2 PUSH2 0x1237 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE14 DUP3 PUSH2 0x10D2 JUMP JUMPDEST PUSH2 0xE1E DUP2 DUP6 PUSH2 0x113A JUMP JUMPDEST SWAP4 POP PUSH2 0xE2E DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x11A4 JUMP JUMPDEST DUP1 DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP3 ADD PUSH1 0x0 DUP3 ADD MLOAD PUSH2 0xE50 PUSH1 0x0 DUP6 ADD DUP3 PUSH2 0xE69 JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0xE63 PUSH1 0x20 DUP6 ADD DUP3 PUSH2 0xE69 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0xE72 DUP2 PUSH2 0x118B JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0xE81 DUP2 PUSH2 0x118B JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE93 DUP3 DUP5 PUSH2 0xD90 JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xEAA DUP3 DUP5 PUSH2 0xE09 JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xECA PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xC7C JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0xEE5 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xC8B JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0xF00 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xCE2 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xF1B PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xD48 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 0xF3B DUP2 DUP5 PUSH2 0xD57 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xF58 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xDC1 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 0xF78 DUP2 DUP5 PUSH2 0xDD0 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0xF9A DUP2 DUP6 PUSH2 0xDD0 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0xFAE DUP2 DUP5 PUSH2 0xDD0 JUMP JUMPDEST SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0xFCC PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xE3A JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xFE7 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xE78 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x1002 PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0xE78 JUMP JUMPDEST PUSH2 0x100F PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0xE78 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1020 PUSH2 0x1031 JUMP JUMPDEST SWAP1 POP PUSH2 0x102C DUP3 DUP3 PUSH2 0x11D7 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 0x1056 JUMPI PUSH2 0x1055 PUSH2 0x1208 JUMP JUMPDEST JUMPDEST PUSH2 0x105F DUP3 PUSH2 0x1237 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x1087 JUMPI PUSH2 0x1086 PUSH2 0x1208 JUMP JUMPDEST JUMPDEST PUSH2 0x1090 DUP3 PUSH2 0x1237 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1150 DUP3 PUSH2 0x116B JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 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 0x11C2 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x11A7 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x11D1 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x11E0 DUP3 PUSH2 0x1237 JUMP JUMPDEST DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x11FF JUMPI PUSH2 0x11FE PUSH2 0x1208 JUMP JUMPDEST JUMPDEST DUP1 PUSH1 0x40 MSTORE POP POP POP JUMP 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 PUSH2 0x1251 DUP2 PUSH2 0x1145 JUMP JUMPDEST DUP2 EQ PUSH2 0x125C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x1268 DUP2 PUSH2 0x1157 JUMP JUMPDEST DUP2 EQ PUSH2 0x1273 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x127F DUP2 PUSH2 0x1161 JUMP JUMPDEST DUP2 EQ PUSH2 0x128A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x1296 DUP2 PUSH2 0x118B JUMP JUMPDEST DUP2 EQ PUSH2 0x12A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH20 0xA91A740C0DE3883C5213C5981D98D2396A8B60B3 0xCF 0x2F 0xB3 PUSH5 0xD7E4CC826A DUP5 0x1E PUSH5 0x736F6C6343 STOP ADDMOD DIV STOP CALLER ","sourceMap":"57:2471:1:-:0;;;713:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;769:1;751:15;;:19;;;;;;;;;;;;;;;;;;713:62;57:2471;;7:189:4;87:5;118:6;112:13;103:22;;134:56;184:5;134:56;:::i;:::-;93:103;;;;:::o;202:330::-;295:6;344:2;332:9;323:7;319:23;315:32;312:2;;;360:1;357;350:12;312:2;403:1;428:87;507:7;498:6;487:9;483:22;428:87;:::i;:::-;418:97;;374:151;302:230;;;;:::o;538:96::-;575:7;604:24;622:5;604:24;:::i;:::-;593:35;;583:51;;;:::o;640:119::-;700:7;729:24;747:5;729:24;:::i;:::-;718:35;;708:51;;;:::o;765:126::-;802:7;842:42;835:5;831:54;820:65;;810:81;;;:::o;897:168::-;993:47;1034:5;993:47;:::i;:::-;986:5;983:58;973:2;;1055:1;1052;1045:12;973:2;963:102;:::o;57:2471:1:-;;;;;;;"},"deployedBytecode":{"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:19211:4","statements":[{"body":{"nodeType":"YulBlock","src":"90:260:4","statements":[{"nodeType":"YulAssignment","src":"100:74:4","value":{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"166:6:4"}],"functionName":{"name":"array_allocation_size_t_bytes_memory_ptr","nodeType":"YulIdentifier","src":"125:40:4"},"nodeType":"YulFunctionCall","src":"125:48:4"}],"functionName":{"name":"allocate_memory","nodeType":"YulIdentifier","src":"109:15:4"},"nodeType":"YulFunctionCall","src":"109:65:4"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"100:5:4"}]},{"expression":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"190:5:4"},{"name":"length","nodeType":"YulIdentifier","src":"197:6:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"183:6:4"},"nodeType":"YulFunctionCall","src":"183:21:4"},"nodeType":"YulExpressionStatement","src":"183:21:4"},{"nodeType":"YulVariableDeclaration","src":"213:27:4","value":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"228:5:4"},{"kind":"number","nodeType":"YulLiteral","src":"235:4:4","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"224:3:4"},"nodeType":"YulFunctionCall","src":"224:16:4"},"variables":[{"name":"dst","nodeType":"YulTypedName","src":"217:3:4","type":""}]},{"body":{"nodeType":"YulBlock","src":"278:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"287:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"290:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"280:6:4"},"nodeType":"YulFunctionCall","src":"280:12:4"},"nodeType":"YulExpressionStatement","src":"280:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"259:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"264:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"255:3:4"},"nodeType":"YulFunctionCall","src":"255:16:4"},{"name":"end","nodeType":"YulIdentifier","src":"273:3:4"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"252:2:4"},"nodeType":"YulFunctionCall","src":"252:25:4"},"nodeType":"YulIf","src":"249:2:4"},{"expression":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"327:3:4"},{"name":"dst","nodeType":"YulIdentifier","src":"332:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"337:6:4"}],"functionName":{"name":"copy_calldata_to_memory","nodeType":"YulIdentifier","src":"303:23:4"},"nodeType":"YulFunctionCall","src":"303:41:4"},"nodeType":"YulExpressionStatement","src":"303:41:4"}]},"name":"abi_decode_available_length_t_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"63:3:4","type":""},{"name":"length","nodeType":"YulTypedName","src":"68:6:4","type":""},{"name":"end","nodeType":"YulTypedName","src":"76:3:4","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"84:5:4","type":""}],"src":"7:343:4"},{"body":{"nodeType":"YulBlock","src":"440:261:4","statements":[{"nodeType":"YulAssignment","src":"450:75:4","value":{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"517:6:4"}],"functionName":{"name":"array_allocation_size_t_string_memory_ptr","nodeType":"YulIdentifier","src":"475:41:4"},"nodeType":"YulFunctionCall","src":"475:49:4"}],"functionName":{"name":"allocate_memory","nodeType":"YulIdentifier","src":"459:15:4"},"nodeType":"YulFunctionCall","src":"459:66:4"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"450:5:4"}]},{"expression":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"541:5:4"},{"name":"length","nodeType":"YulIdentifier","src":"548:6:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"534:6:4"},"nodeType":"YulFunctionCall","src":"534:21:4"},"nodeType":"YulExpressionStatement","src":"534:21:4"},{"nodeType":"YulVariableDeclaration","src":"564:27:4","value":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"579:5:4"},{"kind":"number","nodeType":"YulLiteral","src":"586:4:4","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"575:3:4"},"nodeType":"YulFunctionCall","src":"575:16:4"},"variables":[{"name":"dst","nodeType":"YulTypedName","src":"568:3:4","type":""}]},{"body":{"nodeType":"YulBlock","src":"629:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"638:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"641:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"631:6:4"},"nodeType":"YulFunctionCall","src":"631:12:4"},"nodeType":"YulExpressionStatement","src":"631:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"610:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"615:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"606:3:4"},"nodeType":"YulFunctionCall","src":"606:16:4"},{"name":"end","nodeType":"YulIdentifier","src":"624:3:4"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"603:2:4"},"nodeType":"YulFunctionCall","src":"603:25:4"},"nodeType":"YulIf","src":"600:2:4"},{"expression":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"678:3:4"},{"name":"dst","nodeType":"YulIdentifier","src":"683:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"688:6:4"}],"functionName":{"name":"copy_calldata_to_memory","nodeType":"YulIdentifier","src":"654:23:4"},"nodeType":"YulFunctionCall","src":"654:41:4"},"nodeType":"YulExpressionStatement","src":"654:41:4"}]},"name":"abi_decode_available_length_t_string_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"413:3:4","type":""},{"name":"length","nodeType":"YulTypedName","src":"418:6:4","type":""},{"name":"end","nodeType":"YulTypedName","src":"426:3:4","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"434:5:4","type":""}],"src":"356:345:4"},{"body":{"nodeType":"YulBlock","src":"759:87:4","statements":[{"nodeType":"YulAssignment","src":"769:29:4","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"791:6:4"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"778:12:4"},"nodeType":"YulFunctionCall","src":"778:20:4"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"769:5:4"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"834:5:4"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"807:26:4"},"nodeType":"YulFunctionCall","src":"807:33:4"},"nodeType":"YulExpressionStatement","src":"807:33:4"}]},"name":"abi_decode_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"737:6:4","type":""},{"name":"end","nodeType":"YulTypedName","src":"745:3:4","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"753:5:4","type":""}],"src":"707:139:4"},{"body":{"nodeType":"YulBlock","src":"904:87:4","statements":[{"nodeType":"YulAssignment","src":"914:29:4","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"936:6:4"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"923:12:4"},"nodeType":"YulFunctionCall","src":"923:20:4"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"914:5:4"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"979:5:4"}],"functionName":{"name":"validator_revert_t_bytes32","nodeType":"YulIdentifier","src":"952:26:4"},"nodeType":"YulFunctionCall","src":"952:33:4"},"nodeType":"YulExpressionStatement","src":"952:33:4"}]},"name":"abi_decode_t_bytes32","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"882:6:4","type":""},{"name":"end","nodeType":"YulTypedName","src":"890:3:4","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"898:5:4","type":""}],"src":"852:139:4"},{"body":{"nodeType":"YulBlock","src":"1071:210:4","statements":[{"body":{"nodeType":"YulBlock","src":"1120:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1129:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1132:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1122:6:4"},"nodeType":"YulFunctionCall","src":"1122:12:4"},"nodeType":"YulExpressionStatement","src":"1122:12:4"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1099:6:4"},{"kind":"number","nodeType":"YulLiteral","src":"1107:4:4","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1095:3:4"},"nodeType":"YulFunctionCall","src":"1095:17:4"},{"name":"end","nodeType":"YulIdentifier","src":"1114:3:4"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1091:3:4"},"nodeType":"YulFunctionCall","src":"1091:27:4"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1084:6:4"},"nodeType":"YulFunctionCall","src":"1084:35:4"},"nodeType":"YulIf","src":"1081:2:4"},{"nodeType":"YulVariableDeclaration","src":"1145:34:4","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1172:6:4"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1159:12:4"},"nodeType":"YulFunctionCall","src":"1159:20:4"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"1149:6:4","type":""}]},{"nodeType":"YulAssignment","src":"1188:87:4","value":{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1248:6:4"},{"kind":"number","nodeType":"YulLiteral","src":"1256:4:4","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1244:3:4"},"nodeType":"YulFunctionCall","src":"1244:17:4"},{"name":"length","nodeType":"YulIdentifier","src":"1263:6:4"},{"name":"end","nodeType":"YulIdentifier","src":"1271:3:4"}],"functionName":{"name":"abi_decode_available_length_t_bytes_memory_ptr","nodeType":"YulIdentifier","src":"1197:46:4"},"nodeType":"YulFunctionCall","src":"1197:78:4"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"1188:5:4"}]}]},"name":"abi_decode_t_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"1049:6:4","type":""},{"name":"end","nodeType":"YulTypedName","src":"1057:3:4","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"1065:5:4","type":""}],"src":"1010:271:4"},{"body":{"nodeType":"YulBlock","src":"1338:86:4","statements":[{"nodeType":"YulAssignment","src":"1348:29:4","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1370:6:4"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1357:12:4"},"nodeType":"YulFunctionCall","src":"1357:20:4"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"1348:5:4"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1412:5:4"}],"functionName":{"name":"validator_revert_t_int256","nodeType":"YulIdentifier","src":"1386:25:4"},"nodeType":"YulFunctionCall","src":"1386:32:4"},"nodeType":"YulExpressionStatement","src":"1386:32:4"}]},"name":"abi_decode_t_int256","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"1316:6:4","type":""},{"name":"end","nodeType":"YulTypedName","src":"1324:3:4","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"1332:5:4","type":""}],"src":"1287:137:4"},{"body":{"nodeType":"YulBlock","src":"1506:211:4","statements":[{"body":{"nodeType":"YulBlock","src":"1555:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1564:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1567:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1557:6:4"},"nodeType":"YulFunctionCall","src":"1557:12:4"},"nodeType":"YulExpressionStatement","src":"1557:12:4"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1534:6:4"},{"kind":"number","nodeType":"YulLiteral","src":"1542:4:4","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1530:3:4"},"nodeType":"YulFunctionCall","src":"1530:17:4"},{"name":"end","nodeType":"YulIdentifier","src":"1549:3:4"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1526:3:4"},"nodeType":"YulFunctionCall","src":"1526:27:4"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1519:6:4"},"nodeType":"YulFunctionCall","src":"1519:35:4"},"nodeType":"YulIf","src":"1516:2:4"},{"nodeType":"YulVariableDeclaration","src":"1580:34:4","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1607:6:4"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1594:12:4"},"nodeType":"YulFunctionCall","src":"1594:20:4"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"1584:6:4","type":""}]},{"nodeType":"YulAssignment","src":"1623:88:4","value":{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1684:6:4"},{"kind":"number","nodeType":"YulLiteral","src":"1692:4:4","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1680:3:4"},"nodeType":"YulFunctionCall","src":"1680:17:4"},{"name":"length","nodeType":"YulIdentifier","src":"1699:6:4"},{"name":"end","nodeType":"YulIdentifier","src":"1707:3:4"}],"functionName":{"name":"abi_decode_available_length_t_string_memory_ptr","nodeType":"YulIdentifier","src":"1632:47:4"},"nodeType":"YulFunctionCall","src":"1632:79:4"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"1623:5:4"}]}]},"name":"abi_decode_t_string_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"1484:6:4","type":""},{"name":"end","nodeType":"YulTypedName","src":"1492:3:4","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"1500:5:4","type":""}],"src":"1444:273:4"},{"body":{"nodeType":"YulBlock","src":"1775:87:4","statements":[{"nodeType":"YulAssignment","src":"1785:29:4","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1807:6:4"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1794:12:4"},"nodeType":"YulFunctionCall","src":"1794:20:4"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"1785:5:4"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1850:5:4"}],"functionName":{"name":"validator_revert_t_uint256","nodeType":"YulIdentifier","src":"1823:26:4"},"nodeType":"YulFunctionCall","src":"1823:33:4"},"nodeType":"YulExpressionStatement","src":"1823:33:4"}]},"name":"abi_decode_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"1753:6:4","type":""},{"name":"end","nodeType":"YulTypedName","src":"1761:3:4","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"1769:5:4","type":""}],"src":"1723:139:4"},{"body":{"nodeType":"YulBlock","src":"1934:196:4","statements":[{"body":{"nodeType":"YulBlock","src":"1980:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1989:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1992:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1982:6:4"},"nodeType":"YulFunctionCall","src":"1982:12:4"},"nodeType":"YulExpressionStatement","src":"1982:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1955:7:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"1964:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1951:3:4"},"nodeType":"YulFunctionCall","src":"1951:23:4"},{"kind":"number","nodeType":"YulLiteral","src":"1976:2:4","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1947:3:4"},"nodeType":"YulFunctionCall","src":"1947:32:4"},"nodeType":"YulIf","src":"1944:2:4"},{"nodeType":"YulBlock","src":"2006:117:4","statements":[{"nodeType":"YulVariableDeclaration","src":"2021:15:4","value":{"kind":"number","nodeType":"YulLiteral","src":"2035:1:4","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"2025:6:4","type":""}]},{"nodeType":"YulAssignment","src":"2050:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2085:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"2096:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2081:3:4"},"nodeType":"YulFunctionCall","src":"2081:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2105:7:4"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"2060:20:4"},"nodeType":"YulFunctionCall","src":"2060:53:4"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2050:6:4"}]}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1904:9:4","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1915:7:4","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1927:6:4","type":""}],"src":"1868:262:4"},{"body":{"nodeType":"YulBlock","src":"2202:196:4","statements":[{"body":{"nodeType":"YulBlock","src":"2248:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2257:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2260:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2250:6:4"},"nodeType":"YulFunctionCall","src":"2250:12:4"},"nodeType":"YulExpressionStatement","src":"2250:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2223:7:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"2232:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2219:3:4"},"nodeType":"YulFunctionCall","src":"2219:23:4"},{"kind":"number","nodeType":"YulLiteral","src":"2244:2:4","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2215:3:4"},"nodeType":"YulFunctionCall","src":"2215:32:4"},"nodeType":"YulIf","src":"2212:2:4"},{"nodeType":"YulBlock","src":"2274:117:4","statements":[{"nodeType":"YulVariableDeclaration","src":"2289:15:4","value":{"kind":"number","nodeType":"YulLiteral","src":"2303:1:4","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"2293:6:4","type":""}]},{"nodeType":"YulAssignment","src":"2318:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2353:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"2364:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2349:3:4"},"nodeType":"YulFunctionCall","src":"2349:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2373:7:4"}],"functionName":{"name":"abi_decode_t_bytes32","nodeType":"YulIdentifier","src":"2328:20:4"},"nodeType":"YulFunctionCall","src":"2328:53:4"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2318:6:4"}]}]}]},"name":"abi_decode_tuple_t_bytes32","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2172:9:4","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2183:7:4","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2195:6:4","type":""}],"src":"2136:262:4"},{"body":{"nodeType":"YulBlock","src":"2487:324:4","statements":[{"body":{"nodeType":"YulBlock","src":"2533:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2542:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2545:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2535:6:4"},"nodeType":"YulFunctionCall","src":"2535:12:4"},"nodeType":"YulExpressionStatement","src":"2535:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2508:7:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"2517:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2504:3:4"},"nodeType":"YulFunctionCall","src":"2504:23:4"},{"kind":"number","nodeType":"YulLiteral","src":"2529:2:4","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2500:3:4"},"nodeType":"YulFunctionCall","src":"2500:32:4"},"nodeType":"YulIf","src":"2497:2:4"},{"nodeType":"YulBlock","src":"2559:117:4","statements":[{"nodeType":"YulVariableDeclaration","src":"2574:15:4","value":{"kind":"number","nodeType":"YulLiteral","src":"2588:1:4","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"2578:6:4","type":""}]},{"nodeType":"YulAssignment","src":"2603:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2638:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"2649:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2634:3:4"},"nodeType":"YulFunctionCall","src":"2634:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2658:7:4"}],"functionName":{"name":"abi_decode_t_bytes32","nodeType":"YulIdentifier","src":"2613:20:4"},"nodeType":"YulFunctionCall","src":"2613:53:4"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2603:6:4"}]}]},{"nodeType":"YulBlock","src":"2686:118:4","statements":[{"nodeType":"YulVariableDeclaration","src":"2701:16:4","value":{"kind":"number","nodeType":"YulLiteral","src":"2715:2:4","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"2705:6:4","type":""}]},{"nodeType":"YulAssignment","src":"2731:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2766:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"2777:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2762:3:4"},"nodeType":"YulFunctionCall","src":"2762:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2786:7:4"}],"functionName":{"name":"abi_decode_t_bytes32","nodeType":"YulIdentifier","src":"2741:20:4"},"nodeType":"YulFunctionCall","src":"2741:53:4"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"2731:6:4"}]}]}]},"name":"abi_decode_tuple_t_bytes32t_bytes32","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2449:9:4","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2460:7:4","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2472:6:4","type":""},{"name":"value1","nodeType":"YulTypedName","src":"2480:6:4","type":""}],"src":"2404:407:4"},{"body":{"nodeType":"YulBlock","src":"2892:298:4","statements":[{"body":{"nodeType":"YulBlock","src":"2938:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2947:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2950:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2940:6:4"},"nodeType":"YulFunctionCall","src":"2940:12:4"},"nodeType":"YulExpressionStatement","src":"2940:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2913:7:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"2922:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2909:3:4"},"nodeType":"YulFunctionCall","src":"2909:23:4"},{"kind":"number","nodeType":"YulLiteral","src":"2934:2:4","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2905:3:4"},"nodeType":"YulFunctionCall","src":"2905:32:4"},"nodeType":"YulIf","src":"2902:2:4"},{"nodeType":"YulBlock","src":"2964:219:4","statements":[{"nodeType":"YulVariableDeclaration","src":"2979:45:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3010:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"3021:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3006:3:4"},"nodeType":"YulFunctionCall","src":"3006:17:4"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2993:12:4"},"nodeType":"YulFunctionCall","src":"2993:31:4"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"2983:6:4","type":""}]},{"body":{"nodeType":"YulBlock","src":"3071:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3080:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3083:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3073:6:4"},"nodeType":"YulFunctionCall","src":"3073:12:4"},"nodeType":"YulExpressionStatement","src":"3073:12:4"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"3043:6:4"},{"kind":"number","nodeType":"YulLiteral","src":"3051:18:4","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3040:2:4"},"nodeType":"YulFunctionCall","src":"3040:30:4"},"nodeType":"YulIf","src":"3037:2:4"},{"nodeType":"YulAssignment","src":"3101:72:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3145:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"3156:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3141:3:4"},"nodeType":"YulFunctionCall","src":"3141:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"3165:7:4"}],"functionName":{"name":"abi_decode_t_bytes_memory_ptr","nodeType":"YulIdentifier","src":"3111:29:4"},"nodeType":"YulFunctionCall","src":"3111:62:4"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3101:6:4"}]}]}]},"name":"abi_decode_tuple_t_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2862:9:4","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2873:7:4","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2885:6:4","type":""}],"src":"2817:373:4"},{"body":{"nodeType":"YulBlock","src":"3261:195:4","statements":[{"body":{"nodeType":"YulBlock","src":"3307:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3316:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3319:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3309:6:4"},"nodeType":"YulFunctionCall","src":"3309:12:4"},"nodeType":"YulExpressionStatement","src":"3309:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3282:7:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"3291:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3278:3:4"},"nodeType":"YulFunctionCall","src":"3278:23:4"},{"kind":"number","nodeType":"YulLiteral","src":"3303:2:4","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3274:3:4"},"nodeType":"YulFunctionCall","src":"3274:32:4"},"nodeType":"YulIf","src":"3271:2:4"},{"nodeType":"YulBlock","src":"3333:116:4","statements":[{"nodeType":"YulVariableDeclaration","src":"3348:15:4","value":{"kind":"number","nodeType":"YulLiteral","src":"3362:1:4","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"3352:6:4","type":""}]},{"nodeType":"YulAssignment","src":"3377:62:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3411:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"3422:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3407:3:4"},"nodeType":"YulFunctionCall","src":"3407:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"3431:7:4"}],"functionName":{"name":"abi_decode_t_int256","nodeType":"YulIdentifier","src":"3387:19:4"},"nodeType":"YulFunctionCall","src":"3387:52:4"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3377:6:4"}]}]}]},"name":"abi_decode_tuple_t_int256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3231:9:4","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3242:7:4","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3254:6:4","type":""}],"src":"3196:260:4"},{"body":{"nodeType":"YulBlock","src":"3538:299:4","statements":[{"body":{"nodeType":"YulBlock","src":"3584:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3593:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3596:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3586:6:4"},"nodeType":"YulFunctionCall","src":"3586:12:4"},"nodeType":"YulExpressionStatement","src":"3586:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3559:7:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"3568:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3555:3:4"},"nodeType":"YulFunctionCall","src":"3555:23:4"},{"kind":"number","nodeType":"YulLiteral","src":"3580:2:4","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3551:3:4"},"nodeType":"YulFunctionCall","src":"3551:32:4"},"nodeType":"YulIf","src":"3548:2:4"},{"nodeType":"YulBlock","src":"3610:220:4","statements":[{"nodeType":"YulVariableDeclaration","src":"3625:45:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3656:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"3667:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3652:3:4"},"nodeType":"YulFunctionCall","src":"3652:17:4"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3639:12:4"},"nodeType":"YulFunctionCall","src":"3639:31:4"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"3629:6:4","type":""}]},{"body":{"nodeType":"YulBlock","src":"3717:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3726:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3729:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3719:6:4"},"nodeType":"YulFunctionCall","src":"3719:12:4"},"nodeType":"YulExpressionStatement","src":"3719:12:4"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"3689:6:4"},{"kind":"number","nodeType":"YulLiteral","src":"3697:18:4","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3686:2:4"},"nodeType":"YulFunctionCall","src":"3686:30:4"},"nodeType":"YulIf","src":"3683:2:4"},{"nodeType":"YulAssignment","src":"3747:73:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3792:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"3803:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3788:3:4"},"nodeType":"YulFunctionCall","src":"3788:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"3812:7:4"}],"functionName":{"name":"abi_decode_t_string_memory_ptr","nodeType":"YulIdentifier","src":"3757:30:4"},"nodeType":"YulFunctionCall","src":"3757:63:4"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3747:6:4"}]}]}]},"name":"abi_decode_tuple_t_string_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3508:9:4","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3519:7:4","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3531:6:4","type":""}],"src":"3462:375:4"},{"body":{"nodeType":"YulBlock","src":"3909:196:4","statements":[{"body":{"nodeType":"YulBlock","src":"3955:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3964:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3967:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3957:6:4"},"nodeType":"YulFunctionCall","src":"3957:12:4"},"nodeType":"YulExpressionStatement","src":"3957:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3930:7:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"3939:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3926:3:4"},"nodeType":"YulFunctionCall","src":"3926:23:4"},{"kind":"number","nodeType":"YulLiteral","src":"3951:2:4","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3922:3:4"},"nodeType":"YulFunctionCall","src":"3922:32:4"},"nodeType":"YulIf","src":"3919:2:4"},{"nodeType":"YulBlock","src":"3981:117:4","statements":[{"nodeType":"YulVariableDeclaration","src":"3996:15:4","value":{"kind":"number","nodeType":"YulLiteral","src":"4010:1:4","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"4000:6:4","type":""}]},{"nodeType":"YulAssignment","src":"4025:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4060:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"4071:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4056:3:4"},"nodeType":"YulFunctionCall","src":"4056:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4080:7:4"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"4035:20:4"},"nodeType":"YulFunctionCall","src":"4035:53:4"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"4025:6:4"}]}]}]},"name":"abi_decode_tuple_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3879:9:4","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3890:7:4","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3902:6:4","type":""}],"src":"3843:262:4"},{"body":{"nodeType":"YulBlock","src":"4204:427:4","statements":[{"body":{"nodeType":"YulBlock","src":"4250:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4259:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4262:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4252:6:4"},"nodeType":"YulFunctionCall","src":"4252:12:4"},"nodeType":"YulExpressionStatement","src":"4252:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"4225:7:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"4234:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4221:3:4"},"nodeType":"YulFunctionCall","src":"4221:23:4"},{"kind":"number","nodeType":"YulLiteral","src":"4246:2:4","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4217:3:4"},"nodeType":"YulFunctionCall","src":"4217:32:4"},"nodeType":"YulIf","src":"4214:2:4"},{"nodeType":"YulBlock","src":"4276:117:4","statements":[{"nodeType":"YulVariableDeclaration","src":"4291:15:4","value":{"kind":"number","nodeType":"YulLiteral","src":"4305:1:4","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"4295:6:4","type":""}]},{"nodeType":"YulAssignment","src":"4320:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4355:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"4366:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4351:3:4"},"nodeType":"YulFunctionCall","src":"4351:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4375:7:4"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"4330:20:4"},"nodeType":"YulFunctionCall","src":"4330:53:4"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"4320:6:4"}]}]},{"nodeType":"YulBlock","src":"4403:221:4","statements":[{"nodeType":"YulVariableDeclaration","src":"4418:46:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4449:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"4460:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4445:3:4"},"nodeType":"YulFunctionCall","src":"4445:18:4"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4432:12:4"},"nodeType":"YulFunctionCall","src":"4432:32:4"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"4422:6:4","type":""}]},{"body":{"nodeType":"YulBlock","src":"4511:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4520:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4523:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4513:6:4"},"nodeType":"YulFunctionCall","src":"4513:12:4"},"nodeType":"YulExpressionStatement","src":"4513:12:4"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"4483:6:4"},{"kind":"number","nodeType":"YulLiteral","src":"4491:18:4","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4480:2:4"},"nodeType":"YulFunctionCall","src":"4480:30:4"},"nodeType":"YulIf","src":"4477:2:4"},{"nodeType":"YulAssignment","src":"4541:73:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4586:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"4597:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4582:3:4"},"nodeType":"YulFunctionCall","src":"4582:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4606:7:4"}],"functionName":{"name":"abi_decode_t_string_memory_ptr","nodeType":"YulIdentifier","src":"4551:30:4"},"nodeType":"YulFunctionCall","src":"4551:63:4"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"4541:6:4"}]}]}]},"name":"abi_decode_tuple_t_uint256t_string_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4166:9:4","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"4177:7:4","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"4189:6:4","type":""},{"name":"value1","nodeType":"YulTypedName","src":"4197:6:4","type":""}],"src":"4111:520:4"},{"body":{"nodeType":"YulBlock","src":"4720:324:4","statements":[{"body":{"nodeType":"YulBlock","src":"4766:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4775:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4778:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4768:6:4"},"nodeType":"YulFunctionCall","src":"4768:12:4"},"nodeType":"YulExpressionStatement","src":"4768:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"4741:7:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"4750:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4737:3:4"},"nodeType":"YulFunctionCall","src":"4737:23:4"},{"kind":"number","nodeType":"YulLiteral","src":"4762:2:4","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4733:3:4"},"nodeType":"YulFunctionCall","src":"4733:32:4"},"nodeType":"YulIf","src":"4730:2:4"},{"nodeType":"YulBlock","src":"4792:117:4","statements":[{"nodeType":"YulVariableDeclaration","src":"4807:15:4","value":{"kind":"number","nodeType":"YulLiteral","src":"4821:1:4","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"4811:6:4","type":""}]},{"nodeType":"YulAssignment","src":"4836:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4871:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"4882:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4867:3:4"},"nodeType":"YulFunctionCall","src":"4867:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4891:7:4"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"4846:20:4"},"nodeType":"YulFunctionCall","src":"4846:53:4"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"4836:6:4"}]}]},{"nodeType":"YulBlock","src":"4919:118:4","statements":[{"nodeType":"YulVariableDeclaration","src":"4934:16:4","value":{"kind":"number","nodeType":"YulLiteral","src":"4948:2:4","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"4938:6:4","type":""}]},{"nodeType":"YulAssignment","src":"4964:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4999:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"5010:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4995:3:4"},"nodeType":"YulFunctionCall","src":"4995:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"5019:7:4"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"4974:20:4"},"nodeType":"YulFunctionCall","src":"4974:53:4"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"4964:6:4"}]}]}]},"name":"abi_decode_tuple_t_uint256t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4682:9:4","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"4693:7:4","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"4705:6:4","type":""},{"name":"value1","nodeType":"YulTypedName","src":"4713:6:4","type":""}],"src":"4637:407:4"},{"body":{"nodeType":"YulBlock","src":"5187:787:4","statements":[{"body":{"nodeType":"YulBlock","src":"5234:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5243:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5246:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5236:6:4"},"nodeType":"YulFunctionCall","src":"5236:12:4"},"nodeType":"YulExpressionStatement","src":"5236:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"5208:7:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"5217:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5204:3:4"},"nodeType":"YulFunctionCall","src":"5204:23:4"},{"kind":"number","nodeType":"YulLiteral","src":"5229:3:4","type":"","value":"128"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"5200:3:4"},"nodeType":"YulFunctionCall","src":"5200:33:4"},"nodeType":"YulIf","src":"5197:2:4"},{"nodeType":"YulBlock","src":"5260:117:4","statements":[{"nodeType":"YulVariableDeclaration","src":"5275:15:4","value":{"kind":"number","nodeType":"YulLiteral","src":"5289:1:4","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"5279:6:4","type":""}]},{"nodeType":"YulAssignment","src":"5304:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5339:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"5350:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5335:3:4"},"nodeType":"YulFunctionCall","src":"5335:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"5359:7:4"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"5314:20:4"},"nodeType":"YulFunctionCall","src":"5314:53:4"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"5304:6:4"}]}]},{"nodeType":"YulBlock","src":"5387:118:4","statements":[{"nodeType":"YulVariableDeclaration","src":"5402:16:4","value":{"kind":"number","nodeType":"YulLiteral","src":"5416:2:4","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"5406:6:4","type":""}]},{"nodeType":"YulAssignment","src":"5432:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5467:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"5478:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5463:3:4"},"nodeType":"YulFunctionCall","src":"5463:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"5487:7:4"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"5442:20:4"},"nodeType":"YulFunctionCall","src":"5442:53:4"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"5432:6:4"}]}]},{"nodeType":"YulBlock","src":"5515:221:4","statements":[{"nodeType":"YulVariableDeclaration","src":"5530:46:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5561:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"5572:2:4","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5557:3:4"},"nodeType":"YulFunctionCall","src":"5557:18:4"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"5544:12:4"},"nodeType":"YulFunctionCall","src":"5544:32:4"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"5534:6:4","type":""}]},{"body":{"nodeType":"YulBlock","src":"5623:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5632:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5635:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5625:6:4"},"nodeType":"YulFunctionCall","src":"5625:12:4"},"nodeType":"YulExpressionStatement","src":"5625:12:4"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"5595:6:4"},{"kind":"number","nodeType":"YulLiteral","src":"5603:18:4","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5592:2:4"},"nodeType":"YulFunctionCall","src":"5592:30:4"},"nodeType":"YulIf","src":"5589:2:4"},{"nodeType":"YulAssignment","src":"5653:73:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5698:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"5709:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5694:3:4"},"nodeType":"YulFunctionCall","src":"5694:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"5718:7:4"}],"functionName":{"name":"abi_decode_t_string_memory_ptr","nodeType":"YulIdentifier","src":"5663:30:4"},"nodeType":"YulFunctionCall","src":"5663:63:4"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"5653:6:4"}]}]},{"nodeType":"YulBlock","src":"5746:221:4","statements":[{"nodeType":"YulVariableDeclaration","src":"5761:46:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5792:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"5803:2:4","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5788:3:4"},"nodeType":"YulFunctionCall","src":"5788:18:4"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"5775:12:4"},"nodeType":"YulFunctionCall","src":"5775:32:4"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"5765:6:4","type":""}]},{"body":{"nodeType":"YulBlock","src":"5854:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5863:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5866:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5856:6:4"},"nodeType":"YulFunctionCall","src":"5856:12:4"},"nodeType":"YulExpressionStatement","src":"5856:12:4"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"5826:6:4"},{"kind":"number","nodeType":"YulLiteral","src":"5834:18:4","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5823:2:4"},"nodeType":"YulFunctionCall","src":"5823:30:4"},"nodeType":"YulIf","src":"5820:2:4"},{"nodeType":"YulAssignment","src":"5884:73:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5929:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"5940:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5925:3:4"},"nodeType":"YulFunctionCall","src":"5925:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"5949:7:4"}],"functionName":{"name":"abi_decode_t_string_memory_ptr","nodeType":"YulIdentifier","src":"5894:30:4"},"nodeType":"YulFunctionCall","src":"5894:63:4"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"5884:6:4"}]}]}]},"name":"abi_decode_tuple_t_uint256t_uint256t_string_memory_ptrt_string_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5133:9:4","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"5144:7:4","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"5156:6:4","type":""},{"name":"value1","nodeType":"YulTypedName","src":"5164:6:4","type":""},{"name":"value2","nodeType":"YulTypedName","src":"5172:6:4","type":""},{"name":"value3","nodeType":"YulTypedName","src":"5180:6:4","type":""}],"src":"5050:924:4"},{"body":{"nodeType":"YulBlock","src":"6060:99:4","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6104:6:4"},{"name":"pos","nodeType":"YulIdentifier","src":"6112:3:4"}],"functionName":{"name":"abi_encode_t_bytes32_to_t_bytes32","nodeType":"YulIdentifier","src":"6070:33:4"},"nodeType":"YulFunctionCall","src":"6070:46:4"},"nodeType":"YulExpressionStatement","src":"6070:46:4"},{"nodeType":"YulAssignment","src":"6125:28:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6143:3:4"},{"kind":"number","nodeType":"YulLiteral","src":"6148:4:4","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6139:3:4"},"nodeType":"YulFunctionCall","src":"6139:14:4"},"variableNames":[{"name":"updatedPos","nodeType":"YulIdentifier","src":"6125:10:4"}]}]},"name":"abi_encodeUpdatedPos_t_bytes32_to_t_bytes32","nodeType":"YulFunctionDefinition","parameters":[{"name":"value0","nodeType":"YulTypedName","src":"6033:6:4","type":""},{"name":"pos","nodeType":"YulTypedName","src":"6041:3:4","type":""}],"returnVariables":[{"name":"updatedPos","nodeType":"YulTypedName","src":"6049:10:4","type":""}],"src":"5980:179:4"},{"body":{"nodeType":"YulBlock","src":"6245:99:4","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6289:6:4"},{"name":"pos","nodeType":"YulIdentifier","src":"6297:3:4"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256","nodeType":"YulIdentifier","src":"6255:33:4"},"nodeType":"YulFunctionCall","src":"6255:46:4"},"nodeType":"YulExpressionStatement","src":"6255:46:4"},{"nodeType":"YulAssignment","src":"6310:28:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6328:3:4"},{"kind":"number","nodeType":"YulLiteral","src":"6333:4:4","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6324:3:4"},"nodeType":"YulFunctionCall","src":"6324:14:4"},"variableNames":[{"name":"updatedPos","nodeType":"YulIdentifier","src":"6310:10:4"}]}]},"name":"abi_encodeUpdatedPos_t_uint256_to_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value0","nodeType":"YulTypedName","src":"6218:6:4","type":""},{"name":"pos","nodeType":"YulTypedName","src":"6226:3:4","type":""}],"returnVariables":[{"name":"updatedPos","nodeType":"YulTypedName","src":"6234:10:4","type":""}],"src":"6165:179:4"},{"body":{"nodeType":"YulBlock","src":"6415:53:4","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6432:3:4"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6455:5:4"}],"functionName":{"name":"cleanup_t_address","nodeType":"YulIdentifier","src":"6437:17:4"},"nodeType":"YulFunctionCall","src":"6437:24:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6425:6:4"},"nodeType":"YulFunctionCall","src":"6425:37:4"},"nodeType":"YulExpressionStatement","src":"6425:37:4"}]},"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"6403:5:4","type":""},{"name":"pos","nodeType":"YulTypedName","src":"6410:3:4","type":""}],"src":"6350:118:4"},{"body":{"nodeType":"YulBlock","src":"6618:582:4","statements":[{"nodeType":"YulVariableDeclaration","src":"6628:66:4","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6688:5:4"}],"functionName":{"name":"array_length_t_array$_t_bytes32_$2_memory_ptr","nodeType":"YulIdentifier","src":"6642:45:4"},"nodeType":"YulFunctionCall","src":"6642:52:4"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"6632:6:4","type":""}]},{"nodeType":"YulAssignment","src":"6703:91:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6782:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"6787:6:4"}],"functionName":{"name":"array_storeLengthForEncoding_t_array$_t_bytes32_$2_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"6710:71:4"},"nodeType":"YulFunctionCall","src":"6710:84:4"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"6703:3:4"}]},{"nodeType":"YulVariableDeclaration","src":"6803:69:4","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6866:5:4"}],"functionName":{"name":"array_dataslot_t_array$_t_bytes32_$2_memory_ptr","nodeType":"YulIdentifier","src":"6818:47:4"},"nodeType":"YulFunctionCall","src":"6818:54:4"},"variables":[{"name":"baseRef","nodeType":"YulTypedName","src":"6807:7:4","type":""}]},{"nodeType":"YulVariableDeclaration","src":"6881:21:4","value":{"name":"baseRef","nodeType":"YulIdentifier","src":"6895:7:4"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"6885:6:4","type":""}]},{"body":{"nodeType":"YulBlock","src":"6971:222:4","statements":[{"nodeType":"YulVariableDeclaration","src":"6985:34:4","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"7012:6:4"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"7006:5:4"},"nodeType":"YulFunctionCall","src":"7006:13:4"},"variables":[{"name":"elementValue0","nodeType":"YulTypedName","src":"6989:13:4","type":""}]},{"nodeType":"YulAssignment","src":"7032:70:4","value":{"arguments":[{"name":"elementValue0","nodeType":"YulIdentifier","src":"7083:13:4"},{"name":"pos","nodeType":"YulIdentifier","src":"7098:3:4"}],"functionName":{"name":"abi_encodeUpdatedPos_t_bytes32_to_t_bytes32","nodeType":"YulIdentifier","src":"7039:43:4"},"nodeType":"YulFunctionCall","src":"7039:63:4"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"7032:3:4"}]},{"nodeType":"YulAssignment","src":"7115:68:4","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"7176:6:4"}],"functionName":{"name":"array_nextElement_t_array$_t_bytes32_$2_memory_ptr","nodeType":"YulIdentifier","src":"7125:50:4"},"nodeType":"YulFunctionCall","src":"7125:58:4"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"7115:6:4"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"6933:1:4"},{"name":"length","nodeType":"YulIdentifier","src":"6936:6:4"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"6930:2:4"},"nodeType":"YulFunctionCall","src":"6930:13:4"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"6944:18:4","statements":[{"nodeType":"YulAssignment","src":"6946:14:4","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"6955:1:4"},{"kind":"number","nodeType":"YulLiteral","src":"6958:1:4","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6951:3:4"},"nodeType":"YulFunctionCall","src":"6951:9:4"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"6946:1:4"}]}]},"pre":{"nodeType":"YulBlock","src":"6915:14:4","statements":[{"nodeType":"YulVariableDeclaration","src":"6917:10:4","value":{"kind":"number","nodeType":"YulLiteral","src":"6926:1:4","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"6921:1:4","type":""}]}]},"src":"6911:282:4"}]},"name":"abi_encode_t_array$_t_bytes32_$2_memory_ptr_to_t_array$_t_bytes32_$2_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"6605:5:4","type":""},{"name":"pos","nodeType":"YulTypedName","src":"6612:3:4","type":""}],"src":"6506:694:4"},{"body":{"nodeType":"YulBlock","src":"7350:582:4","statements":[{"nodeType":"YulVariableDeclaration","src":"7360:66:4","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"7420:5:4"}],"functionName":{"name":"array_length_t_array$_t_uint256_$2_memory_ptr","nodeType":"YulIdentifier","src":"7374:45:4"},"nodeType":"YulFunctionCall","src":"7374:52:4"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"7364:6:4","type":""}]},{"nodeType":"YulAssignment","src":"7435:91:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"7514:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"7519:6:4"}],"functionName":{"name":"array_storeLengthForEncoding_t_array$_t_uint256_$2_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"7442:71:4"},"nodeType":"YulFunctionCall","src":"7442:84:4"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"7435:3:4"}]},{"nodeType":"YulVariableDeclaration","src":"7535:69:4","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"7598:5:4"}],"functionName":{"name":"array_dataslot_t_array$_t_uint256_$2_memory_ptr","nodeType":"YulIdentifier","src":"7550:47:4"},"nodeType":"YulFunctionCall","src":"7550:54:4"},"variables":[{"name":"baseRef","nodeType":"YulTypedName","src":"7539:7:4","type":""}]},{"nodeType":"YulVariableDeclaration","src":"7613:21:4","value":{"name":"baseRef","nodeType":"YulIdentifier","src":"7627:7:4"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"7617:6:4","type":""}]},{"body":{"nodeType":"YulBlock","src":"7703:222:4","statements":[{"nodeType":"YulVariableDeclaration","src":"7717:34:4","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"7744:6:4"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"7738:5:4"},"nodeType":"YulFunctionCall","src":"7738:13:4"},"variables":[{"name":"elementValue0","nodeType":"YulTypedName","src":"7721:13:4","type":""}]},{"nodeType":"YulAssignment","src":"7764:70:4","value":{"arguments":[{"name":"elementValue0","nodeType":"YulIdentifier","src":"7815:13:4"},{"name":"pos","nodeType":"YulIdentifier","src":"7830:3:4"}],"functionName":{"name":"abi_encodeUpdatedPos_t_uint256_to_t_uint256","nodeType":"YulIdentifier","src":"7771:43:4"},"nodeType":"YulFunctionCall","src":"7771:63:4"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"7764:3:4"}]},{"nodeType":"YulAssignment","src":"7847:68:4","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"7908:6:4"}],"functionName":{"name":"array_nextElement_t_array$_t_uint256_$2_memory_ptr","nodeType":"YulIdentifier","src":"7857:50:4"},"nodeType":"YulFunctionCall","src":"7857:58:4"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"7847:6:4"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"7665:1:4"},{"name":"length","nodeType":"YulIdentifier","src":"7668:6:4"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"7662:2:4"},"nodeType":"YulFunctionCall","src":"7662:13:4"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"7676:18:4","statements":[{"nodeType":"YulAssignment","src":"7678:14:4","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"7687:1:4"},{"kind":"number","nodeType":"YulLiteral","src":"7690:1:4","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7683:3:4"},"nodeType":"YulFunctionCall","src":"7683:9:4"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"7678:1:4"}]}]},"pre":{"nodeType":"YulBlock","src":"7647:14:4","statements":[{"nodeType":"YulVariableDeclaration","src":"7649:10:4","value":{"kind":"number","nodeType":"YulLiteral","src":"7658:1:4","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"7653:1:4","type":""}]}]},"src":"7643:282:4"}]},"name":"abi_encode_t_array$_t_uint256_$2_memory_ptr_to_t_array$_t_uint256_$2_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"7337:5:4","type":""},{"name":"pos","nodeType":"YulTypedName","src":"7344:3:4","type":""}],"src":"7238:694:4"},{"body":{"nodeType":"YulBlock","src":"7993:53:4","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"8010:3:4"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8033:5:4"}],"functionName":{"name":"cleanup_t_bytes32","nodeType":"YulIdentifier","src":"8015:17:4"},"nodeType":"YulFunctionCall","src":"8015:24:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8003:6:4"},"nodeType":"YulFunctionCall","src":"8003:37:4"},"nodeType":"YulExpressionStatement","src":"8003:37:4"}]},"name":"abi_encode_t_bytes32_to_t_bytes32","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"7981:5:4","type":""},{"name":"pos","nodeType":"YulTypedName","src":"7988:3:4","type":""}],"src":"7938:108:4"},{"body":{"nodeType":"YulBlock","src":"8117:53:4","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"8134:3:4"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8157:5:4"}],"functionName":{"name":"cleanup_t_bytes32","nodeType":"YulIdentifier","src":"8139:17:4"},"nodeType":"YulFunctionCall","src":"8139:24:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8127:6:4"},"nodeType":"YulFunctionCall","src":"8127:37:4"},"nodeType":"YulExpressionStatement","src":"8127:37:4"}]},"name":"abi_encode_t_bytes32_to_t_bytes32_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"8105:5:4","type":""},{"name":"pos","nodeType":"YulTypedName","src":"8112:3:4","type":""}],"src":"8052:118:4"},{"body":{"nodeType":"YulBlock","src":"8266:270:4","statements":[{"nodeType":"YulVariableDeclaration","src":"8276:52:4","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8322:5:4"}],"functionName":{"name":"array_length_t_bytes_memory_ptr","nodeType":"YulIdentifier","src":"8290:31:4"},"nodeType":"YulFunctionCall","src":"8290:38:4"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"8280:6:4","type":""}]},{"nodeType":"YulAssignment","src":"8337:77:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"8402:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"8407:6:4"}],"functionName":{"name":"array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"8344:57:4"},"nodeType":"YulFunctionCall","src":"8344:70:4"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"8337:3:4"}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8449:5:4"},{"kind":"number","nodeType":"YulLiteral","src":"8456:4:4","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8445:3:4"},"nodeType":"YulFunctionCall","src":"8445:16:4"},{"name":"pos","nodeType":"YulIdentifier","src":"8463:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"8468:6:4"}],"functionName":{"name":"copy_memory_to_memory","nodeType":"YulIdentifier","src":"8423:21:4"},"nodeType":"YulFunctionCall","src":"8423:52:4"},"nodeType":"YulExpressionStatement","src":"8423:52:4"},{"nodeType":"YulAssignment","src":"8484:46:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"8495:3:4"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"8522:6:4"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"8500:21:4"},"nodeType":"YulFunctionCall","src":"8500:29:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8491:3:4"},"nodeType":"YulFunctionCall","src":"8491:39:4"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"8484:3:4"}]}]},"name":"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"8247:5:4","type":""},{"name":"pos","nodeType":"YulTypedName","src":"8254:3:4","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"8262:3:4","type":""}],"src":"8176:360:4"},{"body":{"nodeType":"YulBlock","src":"8650:265:4","statements":[{"nodeType":"YulVariableDeclaration","src":"8660:52:4","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8706:5:4"}],"functionName":{"name":"array_length_t_bytes_memory_ptr","nodeType":"YulIdentifier","src":"8674:31:4"},"nodeType":"YulFunctionCall","src":"8674:38:4"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"8664:6:4","type":""}]},{"nodeType":"YulAssignment","src":"8721:95:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"8804:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"8809:6:4"}],"functionName":{"name":"array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulIdentifier","src":"8728:75:4"},"nodeType":"YulFunctionCall","src":"8728:88:4"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"8721:3:4"}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8851:5:4"},{"kind":"number","nodeType":"YulLiteral","src":"8858:4:4","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8847:3:4"},"nodeType":"YulFunctionCall","src":"8847:16:4"},{"name":"pos","nodeType":"YulIdentifier","src":"8865:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"8870:6:4"}],"functionName":{"name":"copy_memory_to_memory","nodeType":"YulIdentifier","src":"8825:21:4"},"nodeType":"YulFunctionCall","src":"8825:52:4"},"nodeType":"YulExpressionStatement","src":"8825:52:4"},{"nodeType":"YulAssignment","src":"8886:23:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"8897:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"8902:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8893:3:4"},"nodeType":"YulFunctionCall","src":"8893:16:4"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"8886:3:4"}]}]},"name":"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"8631:5:4","type":""},{"name":"pos","nodeType":"YulTypedName","src":"8638:3:4","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"8646:3:4","type":""}],"src":"8542:373:4"},{"body":{"nodeType":"YulBlock","src":"8984:52:4","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"9001:3:4"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9023:5:4"}],"functionName":{"name":"cleanup_t_int256","nodeType":"YulIdentifier","src":"9006:16:4"},"nodeType":"YulFunctionCall","src":"9006:23:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8994:6:4"},"nodeType":"YulFunctionCall","src":"8994:36:4"},"nodeType":"YulExpressionStatement","src":"8994:36:4"}]},"name":"abi_encode_t_int256_to_t_int256_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"8972:5:4","type":""},{"name":"pos","nodeType":"YulTypedName","src":"8979:3:4","type":""}],"src":"8921:115:4"},{"body":{"nodeType":"YulBlock","src":"9134:272:4","statements":[{"nodeType":"YulVariableDeclaration","src":"9144:53:4","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9191:5:4"}],"functionName":{"name":"array_length_t_string_memory_ptr","nodeType":"YulIdentifier","src":"9158:32:4"},"nodeType":"YulFunctionCall","src":"9158:39:4"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"9148:6:4","type":""}]},{"nodeType":"YulAssignment","src":"9206:78:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"9272:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"9277:6:4"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"9213:58:4"},"nodeType":"YulFunctionCall","src":"9213:71:4"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"9206:3:4"}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9319:5:4"},{"kind":"number","nodeType":"YulLiteral","src":"9326:4:4","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9315:3:4"},"nodeType":"YulFunctionCall","src":"9315:16:4"},{"name":"pos","nodeType":"YulIdentifier","src":"9333:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"9338:6:4"}],"functionName":{"name":"copy_memory_to_memory","nodeType":"YulIdentifier","src":"9293:21:4"},"nodeType":"YulFunctionCall","src":"9293:52:4"},"nodeType":"YulExpressionStatement","src":"9293:52:4"},{"nodeType":"YulAssignment","src":"9354:46:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"9365:3:4"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"9392:6:4"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"9370:21:4"},"nodeType":"YulFunctionCall","src":"9370:29:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9361:3:4"},"nodeType":"YulFunctionCall","src":"9361:39:4"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"9354:3:4"}]}]},"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"9115:5:4","type":""},{"name":"pos","nodeType":"YulTypedName","src":"9122:3:4","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"9130:3:4","type":""}],"src":"9042:364:4"},{"body":{"nodeType":"YulBlock","src":"9522:267:4","statements":[{"nodeType":"YulVariableDeclaration","src":"9532:53:4","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9579:5:4"}],"functionName":{"name":"array_length_t_string_memory_ptr","nodeType":"YulIdentifier","src":"9546:32:4"},"nodeType":"YulFunctionCall","src":"9546:39:4"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"9536:6:4","type":""}]},{"nodeType":"YulAssignment","src":"9594:96:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"9678:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"9683:6:4"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulIdentifier","src":"9601:76:4"},"nodeType":"YulFunctionCall","src":"9601:89:4"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"9594:3:4"}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9725:5:4"},{"kind":"number","nodeType":"YulLiteral","src":"9732:4:4","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9721:3:4"},"nodeType":"YulFunctionCall","src":"9721:16:4"},{"name":"pos","nodeType":"YulIdentifier","src":"9739:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"9744:6:4"}],"functionName":{"name":"copy_memory_to_memory","nodeType":"YulIdentifier","src":"9699:21:4"},"nodeType":"YulFunctionCall","src":"9699:52:4"},"nodeType":"YulExpressionStatement","src":"9699:52:4"},{"nodeType":"YulAssignment","src":"9760:23:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"9771:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"9776:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9767:3:4"},"nodeType":"YulFunctionCall","src":"9767:16:4"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"9760:3:4"}]}]},"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"9503:5:4","type":""},{"name":"pos","nodeType":"YulTypedName","src":"9510:3:4","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"9518:3:4","type":""}],"src":"9412:377:4"},{"body":{"nodeType":"YulBlock","src":"9957:385:4","statements":[{"nodeType":"YulVariableDeclaration","src":"9967:26:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"9983:3:4"},{"kind":"number","nodeType":"YulLiteral","src":"9988:4:4","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9979:3:4"},"nodeType":"YulFunctionCall","src":"9979:14:4"},"variables":[{"name":"tail","nodeType":"YulTypedName","src":"9971:4:4","type":""}]},{"nodeType":"YulBlock","src":"10003:161:4","statements":[{"nodeType":"YulVariableDeclaration","src":"10035:43:4","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"10065:5:4"},{"kind":"number","nodeType":"YulLiteral","src":"10072:4:4","type":"","value":"0x00"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10061:3:4"},"nodeType":"YulFunctionCall","src":"10061:16:4"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"10055:5:4"},"nodeType":"YulFunctionCall","src":"10055:23:4"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"10039:12:4","type":""}]},{"expression":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"10125:12:4"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"10143:3:4"},{"kind":"number","nodeType":"YulLiteral","src":"10148:4:4","type":"","value":"0x00"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10139:3:4"},"nodeType":"YulFunctionCall","src":"10139:14:4"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256","nodeType":"YulIdentifier","src":"10091:33:4"},"nodeType":"YulFunctionCall","src":"10091:63:4"},"nodeType":"YulExpressionStatement","src":"10091:63:4"}]},{"nodeType":"YulBlock","src":"10174:161:4","statements":[{"nodeType":"YulVariableDeclaration","src":"10206:43:4","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"10236:5:4"},{"kind":"number","nodeType":"YulLiteral","src":"10243:4:4","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10232:3:4"},"nodeType":"YulFunctionCall","src":"10232:16:4"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"10226:5:4"},"nodeType":"YulFunctionCall","src":"10226:23:4"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"10210:12:4","type":""}]},{"expression":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"10296:12:4"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"10314:3:4"},{"kind":"number","nodeType":"YulLiteral","src":"10319:4:4","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10310:3:4"},"nodeType":"YulFunctionCall","src":"10310:14:4"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256","nodeType":"YulIdentifier","src":"10262:33:4"},"nodeType":"YulFunctionCall","src":"10262:63:4"},"nodeType":"YulExpressionStatement","src":"10262:63:4"}]}]},"name":"abi_encode_t_struct$_Struct_$47_memory_ptr_to_t_struct$_Struct_$47_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"9944:5:4","type":""},{"name":"pos","nodeType":"YulTypedName","src":"9951:3:4","type":""}],"src":"9847:495:4"},{"body":{"nodeType":"YulBlock","src":"10403:53:4","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"10420:3:4"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"10443:5:4"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"10425:17:4"},"nodeType":"YulFunctionCall","src":"10425:24:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10413:6:4"},"nodeType":"YulFunctionCall","src":"10413:37:4"},"nodeType":"YulExpressionStatement","src":"10413:37:4"}]},"name":"abi_encode_t_uint256_to_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"10391:5:4","type":""},{"name":"pos","nodeType":"YulTypedName","src":"10398:3:4","type":""}],"src":"10348:108:4"},{"body":{"nodeType":"YulBlock","src":"10527:53:4","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"10544:3:4"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"10567:5:4"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"10549:17:4"},"nodeType":"YulFunctionCall","src":"10549:24:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10537:6:4"},"nodeType":"YulFunctionCall","src":"10537:37:4"},"nodeType":"YulExpressionStatement","src":"10537:37:4"}]},"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"10515:5:4","type":""},{"name":"pos","nodeType":"YulTypedName","src":"10522:3:4","type":""}],"src":"10462:118:4"},{"body":{"nodeType":"YulBlock","src":"10720:137:4","statements":[{"nodeType":"YulAssignment","src":"10731:100:4","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"10818:6:4"},{"name":"pos","nodeType":"YulIdentifier","src":"10827:3:4"}],"functionName":{"name":"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulIdentifier","src":"10738:79:4"},"nodeType":"YulFunctionCall","src":"10738:93:4"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"10731:3:4"}]},{"nodeType":"YulAssignment","src":"10841:10:4","value":{"name":"pos","nodeType":"YulIdentifier","src":"10848:3:4"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"10841:3:4"}]}]},"name":"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"10699:3:4","type":""},{"name":"value0","nodeType":"YulTypedName","src":"10705:6:4","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"10716:3:4","type":""}],"src":"10586:271:4"},{"body":{"nodeType":"YulBlock","src":"10999:139:4","statements":[{"nodeType":"YulAssignment","src":"11010:102:4","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"11099:6:4"},{"name":"pos","nodeType":"YulIdentifier","src":"11108:3:4"}],"functionName":{"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulIdentifier","src":"11017:81:4"},"nodeType":"YulFunctionCall","src":"11017:95:4"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"11010:3:4"}]},{"nodeType":"YulAssignment","src":"11122:10:4","value":{"name":"pos","nodeType":"YulIdentifier","src":"11129:3:4"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"11122:3:4"}]}]},"name":"abi_encode_tuple_packed_t_string_memory_ptr__to_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"10978:3:4","type":""},{"name":"value0","nodeType":"YulTypedName","src":"10984:6:4","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"10995:3:4","type":""}],"src":"10863:275:4"},{"body":{"nodeType":"YulBlock","src":"11242:124:4","statements":[{"nodeType":"YulAssignment","src":"11252:26:4","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11264:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"11275:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11260:3:4"},"nodeType":"YulFunctionCall","src":"11260:18:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"11252:4:4"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"11332:6:4"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11345:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"11356:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11341:3:4"},"nodeType":"YulFunctionCall","src":"11341:17:4"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"11288:43:4"},"nodeType":"YulFunctionCall","src":"11288:71:4"},"nodeType":"YulExpressionStatement","src":"11288:71:4"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"11214:9:4","type":""},{"name":"value0","nodeType":"YulTypedName","src":"11226:6:4","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"11237:4:4","type":""}],"src":"11144:222:4"},{"body":{"nodeType":"YulBlock","src":"11516:170:4","statements":[{"nodeType":"YulAssignment","src":"11526:26:4","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11538:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"11549:2:4","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11534:3:4"},"nodeType":"YulFunctionCall","src":"11534:18:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"11526:4:4"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"11652:6:4"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11665:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"11676:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11661:3:4"},"nodeType":"YulFunctionCall","src":"11661:17:4"}],"functionName":{"name":"abi_encode_t_array$_t_bytes32_$2_memory_ptr_to_t_array$_t_bytes32_$2_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"11562:89:4"},"nodeType":"YulFunctionCall","src":"11562:117:4"},"nodeType":"YulExpressionStatement","src":"11562:117:4"}]},"name":"abi_encode_tuple_t_array$_t_bytes32_$2_memory_ptr__to_t_array$_t_bytes32_$2_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"11488:9:4","type":""},{"name":"value0","nodeType":"YulTypedName","src":"11500:6:4","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"11511:4:4","type":""}],"src":"11372:314:4"},{"body":{"nodeType":"YulBlock","src":"11836:170:4","statements":[{"nodeType":"YulAssignment","src":"11846:26:4","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11858:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"11869:2:4","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11854:3:4"},"nodeType":"YulFunctionCall","src":"11854:18:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"11846:4:4"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"11972:6:4"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11985:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"11996:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11981:3:4"},"nodeType":"YulFunctionCall","src":"11981:17:4"}],"functionName":{"name":"abi_encode_t_array$_t_uint256_$2_memory_ptr_to_t_array$_t_uint256_$2_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"11882:89:4"},"nodeType":"YulFunctionCall","src":"11882:117:4"},"nodeType":"YulExpressionStatement","src":"11882:117:4"}]},"name":"abi_encode_tuple_t_array$_t_uint256_$2_memory_ptr__to_t_array$_t_uint256_$2_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"11808:9:4","type":""},{"name":"value0","nodeType":"YulTypedName","src":"11820:6:4","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"11831:4:4","type":""}],"src":"11692:314:4"},{"body":{"nodeType":"YulBlock","src":"12110:124:4","statements":[{"nodeType":"YulAssignment","src":"12120:26:4","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12132:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"12143:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12128:3:4"},"nodeType":"YulFunctionCall","src":"12128:18:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"12120:4:4"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"12200:6:4"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12213:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"12224:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12209:3:4"},"nodeType":"YulFunctionCall","src":"12209:17:4"}],"functionName":{"name":"abi_encode_t_bytes32_to_t_bytes32_fromStack","nodeType":"YulIdentifier","src":"12156:43:4"},"nodeType":"YulFunctionCall","src":"12156:71:4"},"nodeType":"YulExpressionStatement","src":"12156:71:4"}]},"name":"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"12082:9:4","type":""},{"name":"value0","nodeType":"YulTypedName","src":"12094:6:4","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"12105:4:4","type":""}],"src":"12012:222:4"},{"body":{"nodeType":"YulBlock","src":"12356:193:4","statements":[{"nodeType":"YulAssignment","src":"12366:26:4","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12378:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"12389:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12374:3:4"},"nodeType":"YulFunctionCall","src":"12374:18:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"12366:4:4"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12413:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"12424:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12409:3:4"},"nodeType":"YulFunctionCall","src":"12409:17:4"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"12432:4:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"12438:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"12428:3:4"},"nodeType":"YulFunctionCall","src":"12428:20:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12402:6:4"},"nodeType":"YulFunctionCall","src":"12402:47:4"},"nodeType":"YulExpressionStatement","src":"12402:47:4"},{"nodeType":"YulAssignment","src":"12458:84:4","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"12528:6:4"},{"name":"tail","nodeType":"YulIdentifier","src":"12537:4:4"}],"functionName":{"name":"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"12466:61:4"},"nodeType":"YulFunctionCall","src":"12466:76:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"12458:4:4"}]}]},"name":"abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"12328:9:4","type":""},{"name":"value0","nodeType":"YulTypedName","src":"12340:6:4","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"12351:4:4","type":""}],"src":"12240:309:4"},{"body":{"nodeType":"YulBlock","src":"12651:122:4","statements":[{"nodeType":"YulAssignment","src":"12661:26:4","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12673:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"12684:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12669:3:4"},"nodeType":"YulFunctionCall","src":"12669:18:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"12661:4:4"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"12739:6:4"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12752:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"12763:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12748:3:4"},"nodeType":"YulFunctionCall","src":"12748:17:4"}],"functionName":{"name":"abi_encode_t_int256_to_t_int256_fromStack","nodeType":"YulIdentifier","src":"12697:41:4"},"nodeType":"YulFunctionCall","src":"12697:69:4"},"nodeType":"YulExpressionStatement","src":"12697:69:4"}]},"name":"abi_encode_tuple_t_int256__to_t_int256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"12623:9:4","type":""},{"name":"value0","nodeType":"YulTypedName","src":"12635:6:4","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"12646:4:4","type":""}],"src":"12555:218:4"},{"body":{"nodeType":"YulBlock","src":"12897:195:4","statements":[{"nodeType":"YulAssignment","src":"12907:26:4","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12919:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"12930:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12915:3:4"},"nodeType":"YulFunctionCall","src":"12915:18:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"12907:4:4"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12954:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"12965:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12950:3:4"},"nodeType":"YulFunctionCall","src":"12950:17:4"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"12973:4:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"12979:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"12969:3:4"},"nodeType":"YulFunctionCall","src":"12969:20:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12943:6:4"},"nodeType":"YulFunctionCall","src":"12943:47:4"},"nodeType":"YulExpressionStatement","src":"12943:47:4"},{"nodeType":"YulAssignment","src":"12999:86:4","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"13071:6:4"},{"name":"tail","nodeType":"YulIdentifier","src":"13080:4:4"}],"functionName":{"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"13007:63:4"},"nodeType":"YulFunctionCall","src":"13007:78:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"12999:4:4"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"12869:9:4","type":""},{"name":"value0","nodeType":"YulTypedName","src":"12881:6:4","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"12892:4:4","type":""}],"src":"12779:313:4"},{"body":{"nodeType":"YulBlock","src":"13264:348:4","statements":[{"nodeType":"YulAssignment","src":"13274:26:4","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13286:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"13297:2:4","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13282:3:4"},"nodeType":"YulFunctionCall","src":"13282:18:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"13274:4:4"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13321:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"13332:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13317:3:4"},"nodeType":"YulFunctionCall","src":"13317:17:4"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"13340:4:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"13346:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"13336:3:4"},"nodeType":"YulFunctionCall","src":"13336:20:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13310:6:4"},"nodeType":"YulFunctionCall","src":"13310:47:4"},"nodeType":"YulExpressionStatement","src":"13310:47:4"},{"nodeType":"YulAssignment","src":"13366:86:4","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"13438:6:4"},{"name":"tail","nodeType":"YulIdentifier","src":"13447:4:4"}],"functionName":{"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"13374:63:4"},"nodeType":"YulFunctionCall","src":"13374:78:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"13366:4:4"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13473:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"13484:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13469:3:4"},"nodeType":"YulFunctionCall","src":"13469:18:4"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"13493:4:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"13499:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"13489:3:4"},"nodeType":"YulFunctionCall","src":"13489:20:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13462:6:4"},"nodeType":"YulFunctionCall","src":"13462:48:4"},"nodeType":"YulExpressionStatement","src":"13462:48:4"},{"nodeType":"YulAssignment","src":"13519:86:4","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"13591:6:4"},{"name":"tail","nodeType":"YulIdentifier","src":"13600:4:4"}],"functionName":{"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"13527:63:4"},"nodeType":"YulFunctionCall","src":"13527:78:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"13519:4:4"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"13228:9:4","type":""},{"name":"value1","nodeType":"YulTypedName","src":"13240:6:4","type":""},{"name":"value0","nodeType":"YulTypedName","src":"13248:6:4","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"13259:4:4","type":""}],"src":"13098:514:4"},{"body":{"nodeType":"YulBlock","src":"13760:168:4","statements":[{"nodeType":"YulAssignment","src":"13770:26:4","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13782:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"13793:2:4","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13778:3:4"},"nodeType":"YulFunctionCall","src":"13778:18:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"13770:4:4"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"13894:6:4"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13907:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"13918:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13903:3:4"},"nodeType":"YulFunctionCall","src":"13903:17:4"}],"functionName":{"name":"abi_encode_t_struct$_Struct_$47_memory_ptr_to_t_struct$_Struct_$47_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"13806:87:4"},"nodeType":"YulFunctionCall","src":"13806:115:4"},"nodeType":"YulExpressionStatement","src":"13806:115:4"}]},"name":"abi_encode_tuple_t_struct$_Struct_$47_memory_ptr__to_t_struct$_Struct_$47_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"13732:9:4","type":""},{"name":"value0","nodeType":"YulTypedName","src":"13744:6:4","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"13755:4:4","type":""}],"src":"13618:310:4"},{"body":{"nodeType":"YulBlock","src":"14032:124:4","statements":[{"nodeType":"YulAssignment","src":"14042:26:4","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14054:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"14065:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14050:3:4"},"nodeType":"YulFunctionCall","src":"14050:18:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"14042:4:4"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"14122:6:4"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14135:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"14146:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14131:3:4"},"nodeType":"YulFunctionCall","src":"14131:17:4"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"14078:43:4"},"nodeType":"YulFunctionCall","src":"14078:71:4"},"nodeType":"YulExpressionStatement","src":"14078:71:4"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"14004:9:4","type":""},{"name":"value0","nodeType":"YulTypedName","src":"14016:6:4","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"14027:4:4","type":""}],"src":"13934:222:4"},{"body":{"nodeType":"YulBlock","src":"14288:206:4","statements":[{"nodeType":"YulAssignment","src":"14298:26:4","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14310:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"14321:2:4","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14306:3:4"},"nodeType":"YulFunctionCall","src":"14306:18:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"14298:4:4"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"14378:6:4"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14391:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"14402:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14387:3:4"},"nodeType":"YulFunctionCall","src":"14387:17:4"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"14334:43:4"},"nodeType":"YulFunctionCall","src":"14334:71:4"},"nodeType":"YulExpressionStatement","src":"14334:71:4"},{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"14459:6:4"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14472:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"14483:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14468:3:4"},"nodeType":"YulFunctionCall","src":"14468:18:4"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"14415:43:4"},"nodeType":"YulFunctionCall","src":"14415:72:4"},"nodeType":"YulExpressionStatement","src":"14415:72:4"}]},"name":"abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"14252:9:4","type":""},{"name":"value1","nodeType":"YulTypedName","src":"14264:6:4","type":""},{"name":"value0","nodeType":"YulTypedName","src":"14272:6:4","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"14283:4:4","type":""}],"src":"14162:332:4"},{"body":{"nodeType":"YulBlock","src":"14541:88:4","statements":[{"nodeType":"YulAssignment","src":"14551:30:4","value":{"arguments":[],"functionName":{"name":"allocate_unbounded","nodeType":"YulIdentifier","src":"14561:18:4"},"nodeType":"YulFunctionCall","src":"14561:20:4"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"14551:6:4"}]},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"14610:6:4"},{"name":"size","nodeType":"YulIdentifier","src":"14618:4:4"}],"functionName":{"name":"finalize_allocation","nodeType":"YulIdentifier","src":"14590:19:4"},"nodeType":"YulFunctionCall","src":"14590:33:4"},"nodeType":"YulExpressionStatement","src":"14590:33:4"}]},"name":"allocate_memory","nodeType":"YulFunctionDefinition","parameters":[{"name":"size","nodeType":"YulTypedName","src":"14525:4:4","type":""}],"returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"14534:6:4","type":""}],"src":"14500:129:4"},{"body":{"nodeType":"YulBlock","src":"14675:35:4","statements":[{"nodeType":"YulAssignment","src":"14685:19:4","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"14701:2:4","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"14695:5:4"},"nodeType":"YulFunctionCall","src":"14695:9:4"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"14685:6:4"}]}]},"name":"allocate_unbounded","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"14668:6:4","type":""}],"src":"14635:75:4"},{"body":{"nodeType":"YulBlock","src":"14782:241:4","statements":[{"body":{"nodeType":"YulBlock","src":"14887:22:4","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"14889:16:4"},"nodeType":"YulFunctionCall","src":"14889:18:4"},"nodeType":"YulExpressionStatement","src":"14889:18:4"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"14859:6:4"},{"kind":"number","nodeType":"YulLiteral","src":"14867:18:4","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"14856:2:4"},"nodeType":"YulFunctionCall","src":"14856:30:4"},"nodeType":"YulIf","src":"14853:2:4"},{"nodeType":"YulAssignment","src":"14919:37:4","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"14949:6:4"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"14927:21:4"},"nodeType":"YulFunctionCall","src":"14927:29:4"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"14919:4:4"}]},{"nodeType":"YulAssignment","src":"14993:23:4","value":{"arguments":[{"name":"size","nodeType":"YulIdentifier","src":"15005:4:4"},{"kind":"number","nodeType":"YulLiteral","src":"15011:4:4","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15001:3:4"},"nodeType":"YulFunctionCall","src":"15001:15:4"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"14993:4:4"}]}]},"name":"array_allocation_size_t_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"length","nodeType":"YulTypedName","src":"14766:6:4","type":""}],"returnVariables":[{"name":"size","nodeType":"YulTypedName","src":"14777:4:4","type":""}],"src":"14716:307:4"},{"body":{"nodeType":"YulBlock","src":"15096:241:4","statements":[{"body":{"nodeType":"YulBlock","src":"15201:22:4","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"15203:16:4"},"nodeType":"YulFunctionCall","src":"15203:18:4"},"nodeType":"YulExpressionStatement","src":"15203:18:4"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"15173:6:4"},{"kind":"number","nodeType":"YulLiteral","src":"15181:18:4","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"15170:2:4"},"nodeType":"YulFunctionCall","src":"15170:30:4"},"nodeType":"YulIf","src":"15167:2:4"},{"nodeType":"YulAssignment","src":"15233:37:4","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"15263:6:4"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"15241:21:4"},"nodeType":"YulFunctionCall","src":"15241:29:4"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"15233:4:4"}]},{"nodeType":"YulAssignment","src":"15307:23:4","value":{"arguments":[{"name":"size","nodeType":"YulIdentifier","src":"15319:4:4"},{"kind":"number","nodeType":"YulLiteral","src":"15325:4:4","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15315:3:4"},"nodeType":"YulFunctionCall","src":"15315:15:4"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"15307:4:4"}]}]},"name":"array_allocation_size_t_string_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"length","nodeType":"YulTypedName","src":"15080:6:4","type":""}],"returnVariables":[{"name":"size","nodeType":"YulTypedName","src":"15091:4:4","type":""}],"src":"15029:308:4"},{"body":{"nodeType":"YulBlock","src":"15413:28:4","statements":[{"nodeType":"YulAssignment","src":"15423:11:4","value":{"name":"ptr","nodeType":"YulIdentifier","src":"15431:3:4"},"variableNames":[{"name":"data","nodeType":"YulIdentifier","src":"15423:4:4"}]}]},"name":"array_dataslot_t_array$_t_bytes32_$2_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nodeType":"YulTypedName","src":"15400:3:4","type":""}],"returnVariables":[{"name":"data","nodeType":"YulTypedName","src":"15408:4:4","type":""}],"src":"15343:98:4"},{"body":{"nodeType":"YulBlock","src":"15517:28:4","statements":[{"nodeType":"YulAssignment","src":"15527:11:4","value":{"name":"ptr","nodeType":"YulIdentifier","src":"15535:3:4"},"variableNames":[{"name":"data","nodeType":"YulIdentifier","src":"15527:4:4"}]}]},"name":"array_dataslot_t_array$_t_uint256_$2_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nodeType":"YulTypedName","src":"15504:3:4","type":""}],"returnVariables":[{"name":"data","nodeType":"YulTypedName","src":"15512:4:4","type":""}],"src":"15447:98:4"},{"body":{"nodeType":"YulBlock","src":"15623:32:4","statements":[{"nodeType":"YulAssignment","src":"15634:14:4","value":{"kind":"number","nodeType":"YulLiteral","src":"15644:4:4","type":"","value":"0x02"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"15634:6:4"}]}]},"name":"array_length_t_array$_t_bytes32_$2_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"15606:5:4","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"15616:6:4","type":""}],"src":"15551:104:4"},{"body":{"nodeType":"YulBlock","src":"15733:32:4","statements":[{"nodeType":"YulAssignment","src":"15744:14:4","value":{"kind":"number","nodeType":"YulLiteral","src":"15754:4:4","type":"","value":"0x02"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"15744:6:4"}]}]},"name":"array_length_t_array$_t_uint256_$2_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"15716:5:4","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"15726:6:4","type":""}],"src":"15661:104:4"},{"body":{"nodeType":"YulBlock","src":"15829:40:4","statements":[{"nodeType":"YulAssignment","src":"15840:22:4","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"15856:5:4"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"15850:5:4"},"nodeType":"YulFunctionCall","src":"15850:12:4"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"15840:6:4"}]}]},"name":"array_length_t_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"15812:5:4","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"15822:6:4","type":""}],"src":"15771:98:4"},{"body":{"nodeType":"YulBlock","src":"15934:40:4","statements":[{"nodeType":"YulAssignment","src":"15945:22:4","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"15961:5:4"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"15955:5:4"},"nodeType":"YulFunctionCall","src":"15955:12:4"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"15945:6:4"}]}]},"name":"array_length_t_string_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"15917:5:4","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"15927:6:4","type":""}],"src":"15875:99:4"},{"body":{"nodeType":"YulBlock","src":"16053:38:4","statements":[{"nodeType":"YulAssignment","src":"16063:22:4","value":{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"16075:3:4"},{"kind":"number","nodeType":"YulLiteral","src":"16080:4:4","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16071:3:4"},"nodeType":"YulFunctionCall","src":"16071:14:4"},"variableNames":[{"name":"next","nodeType":"YulIdentifier","src":"16063:4:4"}]}]},"name":"array_nextElement_t_array$_t_bytes32_$2_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nodeType":"YulTypedName","src":"16040:3:4","type":""}],"returnVariables":[{"name":"next","nodeType":"YulTypedName","src":"16048:4:4","type":""}],"src":"15980:111:4"},{"body":{"nodeType":"YulBlock","src":"16170:38:4","statements":[{"nodeType":"YulAssignment","src":"16180:22:4","value":{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"16192:3:4"},{"kind":"number","nodeType":"YulLiteral","src":"16197:4:4","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16188:3:4"},"nodeType":"YulFunctionCall","src":"16188:14:4"},"variableNames":[{"name":"next","nodeType":"YulIdentifier","src":"16180:4:4"}]}]},"name":"array_nextElement_t_array$_t_uint256_$2_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nodeType":"YulTypedName","src":"16157:3:4","type":""}],"returnVariables":[{"name":"next","nodeType":"YulTypedName","src":"16165:4:4","type":""}],"src":"16097:111:4"},{"body":{"nodeType":"YulBlock","src":"16323:34:4","statements":[{"nodeType":"YulAssignment","src":"16333:18:4","value":{"name":"pos","nodeType":"YulIdentifier","src":"16348:3:4"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"16333:11:4"}]}]},"name":"array_storeLengthForEncoding_t_array$_t_bytes32_$2_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"16295:3:4","type":""},{"name":"length","nodeType":"YulTypedName","src":"16300:6:4","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"16311:11:4","type":""}],"src":"16214:143:4"},{"body":{"nodeType":"YulBlock","src":"16472:34:4","statements":[{"nodeType":"YulAssignment","src":"16482:18:4","value":{"name":"pos","nodeType":"YulIdentifier","src":"16497:3:4"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"16482:11:4"}]}]},"name":"array_storeLengthForEncoding_t_array$_t_uint256_$2_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"16444:3:4","type":""},{"name":"length","nodeType":"YulTypedName","src":"16449:6:4","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"16460:11:4","type":""}],"src":"16363:143:4"},{"body":{"nodeType":"YulBlock","src":"16607:73:4","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"16624:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"16629:6:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"16617:6:4"},"nodeType":"YulFunctionCall","src":"16617:19:4"},"nodeType":"YulExpressionStatement","src":"16617:19:4"},{"nodeType":"YulAssignment","src":"16645:29:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"16664:3:4"},{"kind":"number","nodeType":"YulLiteral","src":"16669:4:4","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16660:3:4"},"nodeType":"YulFunctionCall","src":"16660:14:4"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"16645:11:4"}]}]},"name":"array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"16579:3:4","type":""},{"name":"length","nodeType":"YulTypedName","src":"16584:6:4","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"16595:11:4","type":""}],"src":"16512:168:4"},{"body":{"nodeType":"YulBlock","src":"16799:34:4","statements":[{"nodeType":"YulAssignment","src":"16809:18:4","value":{"name":"pos","nodeType":"YulIdentifier","src":"16824:3:4"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"16809:11:4"}]}]},"name":"array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"16771:3:4","type":""},{"name":"length","nodeType":"YulTypedName","src":"16776:6:4","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"16787:11:4","type":""}],"src":"16686:147:4"},{"body":{"nodeType":"YulBlock","src":"16935:73:4","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"16952:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"16957:6:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"16945:6:4"},"nodeType":"YulFunctionCall","src":"16945:19:4"},"nodeType":"YulExpressionStatement","src":"16945:19:4"},{"nodeType":"YulAssignment","src":"16973:29:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"16992:3:4"},{"kind":"number","nodeType":"YulLiteral","src":"16997:4:4","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16988:3:4"},"nodeType":"YulFunctionCall","src":"16988:14:4"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"16973:11:4"}]}]},"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"16907:3:4","type":""},{"name":"length","nodeType":"YulTypedName","src":"16912:6:4","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"16923:11:4","type":""}],"src":"16839:169:4"},{"body":{"nodeType":"YulBlock","src":"17128:34:4","statements":[{"nodeType":"YulAssignment","src":"17138:18:4","value":{"name":"pos","nodeType":"YulIdentifier","src":"17153:3:4"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"17138:11:4"}]}]},"name":"array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"17100:3:4","type":""},{"name":"length","nodeType":"YulTypedName","src":"17105:6:4","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"17116:11:4","type":""}],"src":"17014:148:4"},{"body":{"nodeType":"YulBlock","src":"17213:51:4","statements":[{"nodeType":"YulAssignment","src":"17223:35:4","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"17252:5:4"}],"functionName":{"name":"cleanup_t_uint160","nodeType":"YulIdentifier","src":"17234:17:4"},"nodeType":"YulFunctionCall","src":"17234:24:4"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"17223:7:4"}]}]},"name":"cleanup_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"17195:5:4","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"17205:7:4","type":""}],"src":"17168:96:4"},{"body":{"nodeType":"YulBlock","src":"17315:32:4","statements":[{"nodeType":"YulAssignment","src":"17325:16:4","value":{"name":"value","nodeType":"YulIdentifier","src":"17336:5:4"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"17325:7:4"}]}]},"name":"cleanup_t_bytes32","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"17297:5:4","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"17307:7:4","type":""}],"src":"17270:77:4"},{"body":{"nodeType":"YulBlock","src":"17397:32:4","statements":[{"nodeType":"YulAssignment","src":"17407:16:4","value":{"name":"value","nodeType":"YulIdentifier","src":"17418:5:4"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"17407:7:4"}]}]},"name":"cleanup_t_int256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"17379:5:4","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"17389:7:4","type":""}],"src":"17353:76:4"},{"body":{"nodeType":"YulBlock","src":"17480:81:4","statements":[{"nodeType":"YulAssignment","src":"17490:65:4","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"17505:5:4"},{"kind":"number","nodeType":"YulLiteral","src":"17512:42:4","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"17501:3:4"},"nodeType":"YulFunctionCall","src":"17501:54:4"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"17490:7:4"}]}]},"name":"cleanup_t_uint160","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"17462:5:4","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"17472:7:4","type":""}],"src":"17435:126:4"},{"body":{"nodeType":"YulBlock","src":"17612:32:4","statements":[{"nodeType":"YulAssignment","src":"17622:16:4","value":{"name":"value","nodeType":"YulIdentifier","src":"17633:5:4"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"17622:7:4"}]}]},"name":"cleanup_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"17594:5:4","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"17604:7:4","type":""}],"src":"17567:77:4"},{"body":{"nodeType":"YulBlock","src":"17701:103:4","statements":[{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"17724:3:4"},{"name":"src","nodeType":"YulIdentifier","src":"17729:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"17734:6:4"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"17711:12:4"},"nodeType":"YulFunctionCall","src":"17711:30:4"},"nodeType":"YulExpressionStatement","src":"17711:30:4"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"17782:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"17787:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17778:3:4"},"nodeType":"YulFunctionCall","src":"17778:16:4"},{"kind":"number","nodeType":"YulLiteral","src":"17796:1:4","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17771:6:4"},"nodeType":"YulFunctionCall","src":"17771:27:4"},"nodeType":"YulExpressionStatement","src":"17771:27:4"}]},"name":"copy_calldata_to_memory","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"17683:3:4","type":""},{"name":"dst","nodeType":"YulTypedName","src":"17688:3:4","type":""},{"name":"length","nodeType":"YulTypedName","src":"17693:6:4","type":""}],"src":"17650:154:4"},{"body":{"nodeType":"YulBlock","src":"17859:258:4","statements":[{"nodeType":"YulVariableDeclaration","src":"17869:10:4","value":{"kind":"number","nodeType":"YulLiteral","src":"17878:1:4","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"17873:1:4","type":""}]},{"body":{"nodeType":"YulBlock","src":"17938:63:4","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"17963:3:4"},{"name":"i","nodeType":"YulIdentifier","src":"17968:1:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17959:3:4"},"nodeType":"YulFunctionCall","src":"17959:11:4"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"17982:3:4"},{"name":"i","nodeType":"YulIdentifier","src":"17987:1:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17978:3:4"},"nodeType":"YulFunctionCall","src":"17978:11:4"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"17972:5:4"},"nodeType":"YulFunctionCall","src":"17972:18:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17952:6:4"},"nodeType":"YulFunctionCall","src":"17952:39:4"},"nodeType":"YulExpressionStatement","src":"17952:39:4"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"17899:1:4"},{"name":"length","nodeType":"YulIdentifier","src":"17902:6:4"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"17896:2:4"},"nodeType":"YulFunctionCall","src":"17896:13:4"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"17910:19:4","statements":[{"nodeType":"YulAssignment","src":"17912:15:4","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"17921:1:4"},{"kind":"number","nodeType":"YulLiteral","src":"17924:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17917:3:4"},"nodeType":"YulFunctionCall","src":"17917:10:4"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"17912:1:4"}]}]},"pre":{"nodeType":"YulBlock","src":"17892:3:4","statements":[]},"src":"17888:113:4"},{"body":{"nodeType":"YulBlock","src":"18035:76:4","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"18085:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"18090:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18081:3:4"},"nodeType":"YulFunctionCall","src":"18081:16:4"},{"kind":"number","nodeType":"YulLiteral","src":"18099:1:4","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"18074:6:4"},"nodeType":"YulFunctionCall","src":"18074:27:4"},"nodeType":"YulExpressionStatement","src":"18074:27:4"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"18016:1:4"},{"name":"length","nodeType":"YulIdentifier","src":"18019:6:4"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"18013:2:4"},"nodeType":"YulFunctionCall","src":"18013:13:4"},"nodeType":"YulIf","src":"18010:2:4"}]},"name":"copy_memory_to_memory","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"17841:3:4","type":""},{"name":"dst","nodeType":"YulTypedName","src":"17846:3:4","type":""},{"name":"length","nodeType":"YulTypedName","src":"17851:6:4","type":""}],"src":"17810:307:4"},{"body":{"nodeType":"YulBlock","src":"18166:238:4","statements":[{"nodeType":"YulVariableDeclaration","src":"18176:58:4","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"18198:6:4"},{"arguments":[{"name":"size","nodeType":"YulIdentifier","src":"18228:4:4"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"18206:21:4"},"nodeType":"YulFunctionCall","src":"18206:27:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18194:3:4"},"nodeType":"YulFunctionCall","src":"18194:40:4"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"18180:10:4","type":""}]},{"body":{"nodeType":"YulBlock","src":"18345:22:4","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"18347:16:4"},"nodeType":"YulFunctionCall","src":"18347:18:4"},"nodeType":"YulExpressionStatement","src":"18347:18:4"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"18288:10:4"},{"kind":"number","nodeType":"YulLiteral","src":"18300:18:4","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"18285:2:4"},"nodeType":"YulFunctionCall","src":"18285:34:4"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"18324:10:4"},{"name":"memPtr","nodeType":"YulIdentifier","src":"18336:6:4"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"18321:2:4"},"nodeType":"YulFunctionCall","src":"18321:22:4"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"18282:2:4"},"nodeType":"YulFunctionCall","src":"18282:62:4"},"nodeType":"YulIf","src":"18279:2:4"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"18383:2:4","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"18387:10:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"18376:6:4"},"nodeType":"YulFunctionCall","src":"18376:22:4"},"nodeType":"YulExpressionStatement","src":"18376:22:4"}]},"name":"finalize_allocation","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"18152:6:4","type":""},{"name":"size","nodeType":"YulTypedName","src":"18160:4:4","type":""}],"src":"18123:281:4"},{"body":{"nodeType":"YulBlock","src":"18438:152:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"18455:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"18458:77:4","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"18448:6:4"},"nodeType":"YulFunctionCall","src":"18448:88:4"},"nodeType":"YulExpressionStatement","src":"18448:88:4"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"18552:1:4","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"18555:4:4","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"18545:6:4"},"nodeType":"YulFunctionCall","src":"18545:15:4"},"nodeType":"YulExpressionStatement","src":"18545:15:4"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"18576:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"18579:4:4","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"18569:6:4"},"nodeType":"YulFunctionCall","src":"18569:15:4"},"nodeType":"YulExpressionStatement","src":"18569:15:4"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"18410:180:4"},{"body":{"nodeType":"YulBlock","src":"18644:54:4","statements":[{"nodeType":"YulAssignment","src":"18654:38:4","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"18672:5:4"},{"kind":"number","nodeType":"YulLiteral","src":"18679:2:4","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18668:3:4"},"nodeType":"YulFunctionCall","src":"18668:14:4"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"18688:2:4","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"18684:3:4"},"nodeType":"YulFunctionCall","src":"18684:7:4"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"18664:3:4"},"nodeType":"YulFunctionCall","src":"18664:28:4"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"18654:6:4"}]}]},"name":"round_up_to_mul_of_32","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"18627:5:4","type":""}],"returnVariables":[{"name":"result","nodeType":"YulTypedName","src":"18637:6:4","type":""}],"src":"18596:102:4"},{"body":{"nodeType":"YulBlock","src":"18747:79:4","statements":[{"body":{"nodeType":"YulBlock","src":"18804:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"18813:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"18816:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"18806:6:4"},"nodeType":"YulFunctionCall","src":"18806:12:4"},"nodeType":"YulExpressionStatement","src":"18806:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"18770:5:4"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"18795:5:4"}],"functionName":{"name":"cleanup_t_address","nodeType":"YulIdentifier","src":"18777:17:4"},"nodeType":"YulFunctionCall","src":"18777:24:4"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"18767:2:4"},"nodeType":"YulFunctionCall","src":"18767:35:4"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"18760:6:4"},"nodeType":"YulFunctionCall","src":"18760:43:4"},"nodeType":"YulIf","src":"18757:2:4"}]},"name":"validator_revert_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"18740:5:4","type":""}],"src":"18704:122:4"},{"body":{"nodeType":"YulBlock","src":"18875:79:4","statements":[{"body":{"nodeType":"YulBlock","src":"18932:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"18941:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"18944:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"18934:6:4"},"nodeType":"YulFunctionCall","src":"18934:12:4"},"nodeType":"YulExpressionStatement","src":"18934:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"18898:5:4"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"18923:5:4"}],"functionName":{"name":"cleanup_t_bytes32","nodeType":"YulIdentifier","src":"18905:17:4"},"nodeType":"YulFunctionCall","src":"18905:24:4"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"18895:2:4"},"nodeType":"YulFunctionCall","src":"18895:35:4"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"18888:6:4"},"nodeType":"YulFunctionCall","src":"18888:43:4"},"nodeType":"YulIf","src":"18885:2:4"}]},"name":"validator_revert_t_bytes32","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"18868:5:4","type":""}],"src":"18832:122:4"},{"body":{"nodeType":"YulBlock","src":"19002:78:4","statements":[{"body":{"nodeType":"YulBlock","src":"19058:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"19067:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"19070:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"19060:6:4"},"nodeType":"YulFunctionCall","src":"19060:12:4"},"nodeType":"YulExpressionStatement","src":"19060:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"19025:5:4"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"19049:5:4"}],"functionName":{"name":"cleanup_t_int256","nodeType":"YulIdentifier","src":"19032:16:4"},"nodeType":"YulFunctionCall","src":"19032:23:4"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"19022:2:4"},"nodeType":"YulFunctionCall","src":"19022:34:4"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"19015:6:4"},"nodeType":"YulFunctionCall","src":"19015:42:4"},"nodeType":"YulIf","src":"19012:2:4"}]},"name":"validator_revert_t_int256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"18995:5:4","type":""}],"src":"18960:120:4"},{"body":{"nodeType":"YulBlock","src":"19129:79:4","statements":[{"body":{"nodeType":"YulBlock","src":"19186:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"19195:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"19198:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"19188:6:4"},"nodeType":"YulFunctionCall","src":"19188:12:4"},"nodeType":"YulExpressionStatement","src":"19188:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"19152:5:4"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"19177:5:4"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"19159:17:4"},"nodeType":"YulFunctionCall","src":"19159:24:4"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"19149:2:4"},"nodeType":"YulFunctionCall","src":"19149:35:4"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"19142:6:4"},"nodeType":"YulFunctionCall","src":"19142:43:4"},"nodeType":"YulIf","src":"19139:2:4"}]},"name":"validator_revert_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"19122:5:4","type":""}],"src":"19086:122:4"}]},"contents":"{\n\n function abi_decode_available_length_t_bytes_memory_ptr(src, length, end) -> array {\n array := allocate_memory(array_allocation_size_t_bytes_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_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_bytes32(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_bytes32(value)\n }\n\n // bytes\n function abi_decode_t_bytes_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_bytes_memory_ptr(add(offset, 0x20), length, end)\n }\n\n function abi_decode_t_int256(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_int256(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_bytes32(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_bytes32(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_bytes32t_bytes32(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_bytes32(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_bytes32(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_bytes_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_bytes_memory_ptr(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_int256(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_int256(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_decode_tuple_t_uint256(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_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_uint256t_string_memory_ptr(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_uint256(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := calldataload(add(headStart, 32))\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n\n value1 := abi_decode_t_string_memory_ptr(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_uint256t_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_uint256(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_uint256t_uint256t_string_memory_ptrt_string_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3 {\n if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint256(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 let offset := calldataload(add(headStart, 64))\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n\n value2 := abi_decode_t_string_memory_ptr(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := calldataload(add(headStart, 96))\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n\n value3 := abi_decode_t_string_memory_ptr(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encodeUpdatedPos_t_bytes32_to_t_bytes32(value0, pos) -> updatedPos {\n abi_encode_t_bytes32_to_t_bytes32(value0, pos)\n updatedPos := add(pos, 0x20)\n }\n\n function abi_encodeUpdatedPos_t_uint256_to_t_uint256(value0, pos) -> updatedPos {\n abi_encode_t_uint256_to_t_uint256(value0, pos)\n updatedPos := add(pos, 0x20)\n }\n\n function abi_encode_t_address_to_t_address_fromStack(value, pos) {\n mstore(pos, cleanup_t_address(value))\n }\n\n // bytes32[2] -> bytes32[2]\n function abi_encode_t_array$_t_bytes32_$2_memory_ptr_to_t_array$_t_bytes32_$2_memory_ptr_fromStack(value, pos) {\n let length := array_length_t_array$_t_bytes32_$2_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_array$_t_bytes32_$2_memory_ptr_fromStack(pos, length)\n let baseRef := array_dataslot_t_array$_t_bytes32_$2_memory_ptr(value)\n let srcPtr := baseRef\n for { let i := 0 } lt(i, length) { i := add(i, 1) }\n {\n let elementValue0 := mload(srcPtr)\n pos := abi_encodeUpdatedPos_t_bytes32_to_t_bytes32(elementValue0, pos)\n srcPtr := array_nextElement_t_array$_t_bytes32_$2_memory_ptr(srcPtr)\n }\n\n }\n\n // uint256[2] -> uint256[2]\n function abi_encode_t_array$_t_uint256_$2_memory_ptr_to_t_array$_t_uint256_$2_memory_ptr_fromStack(value, pos) {\n let length := array_length_t_array$_t_uint256_$2_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_array$_t_uint256_$2_memory_ptr_fromStack(pos, length)\n let baseRef := array_dataslot_t_array$_t_uint256_$2_memory_ptr(value)\n let srcPtr := baseRef\n for { let i := 0 } lt(i, length) { i := add(i, 1) }\n {\n let elementValue0 := mload(srcPtr)\n pos := abi_encodeUpdatedPos_t_uint256_to_t_uint256(elementValue0, pos)\n srcPtr := array_nextElement_t_array$_t_uint256_$2_memory_ptr(srcPtr)\n }\n\n }\n\n function abi_encode_t_bytes32_to_t_bytes32(value, pos) {\n mstore(pos, cleanup_t_bytes32(value))\n }\n\n function abi_encode_t_bytes32_to_t_bytes32_fromStack(value, pos) {\n mstore(pos, cleanup_t_bytes32(value))\n }\n\n function abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack(value, pos) -> end {\n let length := array_length_t_bytes_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_bytes_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_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack(value, pos) -> end {\n let length := array_length_t_bytes_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack(pos, length)\n copy_memory_to_memory(add(value, 0x20), pos, length)\n end := add(pos, length)\n }\n\n function abi_encode_t_int256_to_t_int256_fromStack(value, pos) {\n mstore(pos, cleanup_t_int256(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_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack(value, pos) -> end {\n let length := array_length_t_string_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack(pos, length)\n copy_memory_to_memory(add(value, 0x20), pos, length)\n end := add(pos, length)\n }\n\n // struct Events.Struct -> struct Events.Struct\n function abi_encode_t_struct$_Struct_$47_memory_ptr_to_t_struct$_Struct_$47_memory_ptr_fromStack(value, pos) {\n let tail := add(pos, 0x40)\n\n {\n // u\n\n let memberValue0 := mload(add(value, 0x00))\n abi_encode_t_uint256_to_t_uint256(memberValue0, add(pos, 0x00))\n }\n\n {\n // v\n\n let memberValue0 := mload(add(value, 0x20))\n abi_encode_t_uint256_to_t_uint256(memberValue0, add(pos, 0x20))\n }\n\n }\n\n function abi_encode_t_uint256_to_t_uint256(value, pos) {\n mstore(pos, cleanup_t_uint256(value))\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_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos , value0) -> end {\n\n pos := abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack(value0, pos)\n\n end := pos\n }\n\n function abi_encode_tuple_packed_t_string_memory_ptr__to_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos , value0) -> end {\n\n pos := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack(value0, pos)\n\n end := pos\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_array$_t_bytes32_$2_memory_ptr__to_t_array$_t_bytes32_$2_memory_ptr__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_array$_t_bytes32_$2_memory_ptr_to_t_array$_t_bytes32_$2_memory_ptr_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_encode_tuple_t_array$_t_uint256_$2_memory_ptr__to_t_array$_t_uint256_$2_memory_ptr__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_array$_t_uint256_$2_memory_ptr_to_t_array$_t_uint256_$2_memory_ptr_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_bytes32_to_t_bytes32_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_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_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack(value0, tail)\n\n }\n\n function abi_encode_tuple_t_int256__to_t_int256__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_int256_to_t_int256_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_string_memory_ptr_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr__fromStack_reversed(headStart , value1, value0) -> tail {\n tail := add(headStart, 64)\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 mstore(add(headStart, 32), sub(tail, headStart))\n tail := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack(value1, tail)\n\n }\n\n function abi_encode_tuple_t_struct$_Struct_$47_memory_ptr__to_t_struct$_Struct_$47_memory_ptr__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_struct$_Struct_$47_memory_ptr_to_t_struct$_Struct_$47_memory_ptr_fromStack(value0, add(headStart, 0))\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_bytes_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_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_dataslot_t_array$_t_bytes32_$2_memory_ptr(ptr) -> data {\n data := ptr\n\n }\n\n function array_dataslot_t_array$_t_uint256_$2_memory_ptr(ptr) -> data {\n data := ptr\n\n }\n\n function array_length_t_array$_t_bytes32_$2_memory_ptr(value) -> length {\n\n length := 0x02\n\n }\n\n function array_length_t_array$_t_uint256_$2_memory_ptr(value) -> length {\n\n length := 0x02\n\n }\n\n function array_length_t_bytes_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function array_length_t_string_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function array_nextElement_t_array$_t_bytes32_$2_memory_ptr(ptr) -> next {\n next := add(ptr, 0x20)\n }\n\n function array_nextElement_t_array$_t_uint256_$2_memory_ptr(ptr) -> next {\n next := add(ptr, 0x20)\n }\n\n function array_storeLengthForEncoding_t_array$_t_bytes32_$2_memory_ptr_fromStack(pos, length) -> updated_pos {\n updated_pos := pos\n }\n\n function array_storeLengthForEncoding_t_array$_t_uint256_$2_memory_ptr_fromStack(pos, length) -> updated_pos {\n updated_pos := pos\n }\n\n function array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack(pos, length) -> updated_pos {\n updated_pos := pos\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 array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack(pos, length) -> updated_pos {\n updated_pos := pos\n }\n\n function cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function cleanup_t_bytes32(value) -> cleaned {\n cleaned := value\n }\n\n function cleanup_t_int256(value) -> cleaned {\n cleaned := 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 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_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 validator_revert_t_address(value) {\n if iszero(eq(value, cleanup_t_address(value))) { revert(0, 0) }\n }\n\n function validator_revert_t_bytes32(value) {\n if iszero(eq(value, cleanup_t_bytes32(value))) { revert(0, 0) }\n }\n\n function validator_revert_t_int256(value) {\n if iszero(eq(value, cleanup_t_int256(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":4,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b506004361061012c5760003560e01c80638a618191116100ad578063c76f063511610071578063c76f0635146102c3578063cc07e605146102df578063d3931e57146102fb578063db6cdf6814610317578063ec5c3ede146103215761012c565b80638a6181911461024957806390b37ea214610265578063919402441461026f5780639f31a2231461028b578063c0cd80e6146102a75761012c565b806333311ef3116100f457806333311ef3146101bd57806338393646146101d9578063443690a0146101f5578063532b9cce14610211578063813a8cf51461022d5761012c565b8063048858e5146101315780630c0c941a1461014d57806317aba537146101695780632536f127146101855780632785f8d6146101a1575b600080fd5b61014b600480360381019061014691906109f0565b61033d565b005b61016760048036038101906101629190610b7d565b61036d565b005b610183600480360381019061017e9190610b7d565b6103df565b005b61019f600480360381019061019a9190610abf565b61042e565b005b6101bb60048036038101906101b69190610b29565b610468565b005b6101d760048036038101906101d291906109f0565b6104da565b005b6101f360048036038101906101ee9190610b7d565b610514565b005b61020f600480360381019061020a9190610abf565b610551565b005b61022b60048036038101906102269190610bb9565b610596565b005b61024760048036038101906102429190610b00565b61060e565b005b610263600480360381019061025e9190610a96565b61061a565b005b61026d610654565b005b61028960048036038101906102849190610b00565b610682565b005b6102a560048036038101906102a09190610b7d565b6106bc565b005b6102c160048036038101906102bc9190610a19565b61070b565b005b6102dd60048036038101906102d89190610a55565b61075a565b005b6102f960048036038101906102f49190610a55565b610794565b005b61031560048036038101906103109190610b00565b6107d9565b005b61031f610867565b005b61033b600480360381019061033691906109c7565b610869565b005b807fb421ad092cfce88844bfbfaa9654e824ba0ee5b6b0a220f822406b62c05364c060405160405180910390a250565b7f97535d4b4270d3f1a499c85ae918ba6798cbdcc83a26529331a25dcd2194cfce8260405161039c9190610fd2565b60405180910390a17f97535d4b4270d3f1a499c85ae918ba6798cbdcc83a26529331a25dcd2194cfce816040516103d39190610fd2565b60405180910390a15050565b7f73e687a2685d698f7acf934b4929a29ae783a4bcb640d71c5d6994d74e2380ca6040518060400160405280848152602001838152506040516104229190610eeb565b60405180910390a15050565b7f9b7ddcbde8dac280e036f87acafec72f9eee31a640c08087e8439139c7e5b52a8160405161045d9190610f5e565b60405180910390a150565b7f9b7ddcbde8dac280e036f87acafec72f9eee31a640c08087e8439139c7e5b52a816040516104979190610f5e565b60405180910390a17f97535d4b4270d3f1a499c85ae918ba6798cbdcc83a26529331a25dcd2194cfce826040516104ce9190610fd2565b60405180910390a15050565b7f425517d2678bbca3c0d9d8d9fdbec34c81194e7935ed48a6a19f97db93bcef6a816040516105099190610f06565b60405180910390a150565b7f8b268bb46a33a55bece084a8b6858719c9f2985c860fa06c155a341df0b73c0e8282604051610545929190610fed565b60405180910390a15050565b8060405161055f9190610e9e565b60405180910390207fd9ca28363e2d8739e0e9c4fea1d2df98d1bd7d9d915d00e5fccbf78c0fddcdb060405160405180910390a250565b7f8b268bb46a33a55bece084a8b6858719c9f2985c860fa06c155a341df0b73c0e84846040516105c7929190610fed565b60405180910390a17f1f1a2c748505fcd8f16a719fa88d517b1b41111c4f5e07bb28311cdc4d1515388282604051610600929190610f80565b60405180910390a150505050565b61061781610682565b50565b7f39feab747bb4f579008aea963d7ebac85ad410bb83ee663a42af01464654e93f816040516106499190610f43565b60405180910390a150565b7f917b7bf7ab24d61500cb699921a3a1cc22b8833da6484fea20f262b2610604af60405160405180910390a1565b7f97535d4b4270d3f1a499c85ae918ba6798cbdcc83a26529331a25dcd2194cfce816040516106b19190610fd2565b60405180910390a150565b7fd59ab87bf64b9d737998f3dc70c649d16b135f085029c1666ca0634beb75a7736040518060400160405280848152602001838152506040516106ff9190610fb7565b60405180910390a15050565b7f15100859f3ffe92910dc3f11ed3db4e9cf32ff657c05066e44be4e69b2b488bc60405180604001604052808481526020018381525060405161074e9190610ed0565b60405180910390a15050565b7f433470edcdd53b50238be4d8e048e2baa269af5be2a4e29515c138883c745aa8816040516107899190610f21565b60405180910390a150565b806040516107a29190610e87565b60405180910390207f160e4655df40987951accf7c731d5c504f77d20c139bd73032821b91a426dd9860405160405180910390a250565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166391940244826040518263ffffffff1660e01b81526004016108329190610fd2565b600060405180830381600087803b15801561084c57600080fd5b505af1158015610860573d6000803e3d6000fd5b5050505050565b565b7f336bcd960d2e5a52cef6094ba33727f309dc2c675eebefc6d9b6b6d79abac877816040516108989190610eb5565b60405180910390a150565b60006108b66108b18461103b565b611016565b9050828152602081018484840111156108ce57600080fd5b6108d9848285611195565b509392505050565b60006108f46108ef8461106c565b611016565b90508281526020810184848401111561090c57600080fd5b610917848285611195565b509392505050565b60008135905061092e81611248565b92915050565b6000813590506109438161125f565b92915050565b600082601f83011261095a57600080fd5b813561096a8482602086016108a3565b91505092915050565b60008135905061098281611276565b92915050565b600082601f83011261099957600080fd5b81356109a98482602086016108e1565b91505092915050565b6000813590506109c18161128d565b92915050565b6000602082840312156109d957600080fd5b60006109e78482850161091f565b91505092915050565b600060208284031215610a0257600080fd5b6000610a1084828501610934565b91505092915050565b60008060408385031215610a2c57600080fd5b6000610a3a85828601610934565b9250506020610a4b85828601610934565b9150509250929050565b600060208284031215610a6757600080fd5b600082013567ffffffffffffffff811115610a8157600080fd5b610a8d84828501610949565b91505092915050565b600060208284031215610aa857600080fd5b6000610ab684828501610973565b91505092915050565b600060208284031215610ad157600080fd5b600082013567ffffffffffffffff811115610aeb57600080fd5b610af784828501610988565b91505092915050565b600060208284031215610b1257600080fd5b6000610b20848285016109b2565b91505092915050565b60008060408385031215610b3c57600080fd5b6000610b4a858286016109b2565b925050602083013567ffffffffffffffff811115610b6757600080fd5b610b7385828601610988565b9150509250929050565b60008060408385031215610b9057600080fd5b6000610b9e858286016109b2565b9250506020610baf858286016109b2565b9150509250929050565b60008060008060808587031215610bcf57600080fd5b6000610bdd878288016109b2565b9450506020610bee878288016109b2565b935050604085013567ffffffffffffffff811115610c0b57600080fd5b610c1787828801610988565b925050606085013567ffffffffffffffff811115610c3457600080fd5b610c4087828801610988565b91505092959194509250565b6000610c588383610d39565b60208301905092915050565b6000610c708383610e69565b60208301905092915050565b610c8581611145565b82525050565b610c94816110b1565b610c9e81846110f7565b9250610ca98261109d565b8060005b83811015610cda578151610cc18782610c4c565b9650610ccc836110dd565b925050600181019050610cad565b505050505050565b610ceb816110bc565b610cf58184611102565b9250610d00826110a7565b8060005b83811015610d31578151610d188782610c64565b9650610d23836110ea565b925050600181019050610d04565b505050505050565b610d4281611157565b82525050565b610d5181611157565b82525050565b6000610d62826110c7565b610d6c818561110d565b9350610d7c8185602086016111a4565b610d8581611237565b840191505092915050565b6000610d9b826110c7565b610da5818561111e565b9350610db58185602086016111a4565b80840191505092915050565b610dca81611161565b82525050565b6000610ddb826110d2565b610de58185611129565b9350610df58185602086016111a4565b610dfe81611237565b840191505092915050565b6000610e14826110d2565b610e1e818561113a565b9350610e2e8185602086016111a4565b80840191505092915050565b604082016000820151610e506000850182610e69565b506020820151610e636020850182610e69565b50505050565b610e728161118b565b82525050565b610e818161118b565b82525050565b6000610e938284610d90565b915081905092915050565b6000610eaa8284610e09565b915081905092915050565b6000602082019050610eca6000830184610c7c565b92915050565b6000604082019050610ee56000830184610c8b565b92915050565b6000604082019050610f006000830184610ce2565b92915050565b6000602082019050610f1b6000830184610d48565b92915050565b60006020820190508181036000830152610f3b8184610d57565b905092915050565b6000602082019050610f586000830184610dc1565b92915050565b60006020820190508181036000830152610f788184610dd0565b905092915050565b60006040820190508181036000830152610f9a8185610dd0565b90508181036020830152610fae8184610dd0565b90509392505050565b6000604082019050610fcc6000830184610e3a565b92915050565b6000602082019050610fe76000830184610e78565b92915050565b60006040820190506110026000830185610e78565b61100f6020830184610e78565b9392505050565b6000611020611031565b905061102c82826111d7565b919050565b6000604051905090565b600067ffffffffffffffff82111561105657611055611208565b5b61105f82611237565b9050602081019050919050565b600067ffffffffffffffff82111561108757611086611208565b5b61109082611237565b9050602081019050919050565b6000819050919050565b6000819050919050565b600060029050919050565b600060029050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b600081905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b60006111508261116b565b9050919050565b6000819050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b838110156111c25780820151818401526020810190506111a7565b838111156111d1576000848401525b50505050565b6111e082611237565b810181811067ffffffffffffffff821117156111ff576111fe611208565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b61125181611145565b811461125c57600080fd5b50565b61126881611157565b811461127357600080fd5b50565b61127f81611161565b811461128a57600080fd5b50565b6112968161118b565b81146112a157600080fd5b5056fea264697066735822122073a91a740c0de3883c5213c5981d98d2396a8b60b3cf2fb364d7e4cc826a841e64736f6c63430008040033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x12C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8A618191 GT PUSH2 0xAD JUMPI DUP1 PUSH4 0xC76F0635 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xC76F0635 EQ PUSH2 0x2C3 JUMPI DUP1 PUSH4 0xCC07E605 EQ PUSH2 0x2DF JUMPI DUP1 PUSH4 0xD3931E57 EQ PUSH2 0x2FB JUMPI DUP1 PUSH4 0xDB6CDF68 EQ PUSH2 0x317 JUMPI DUP1 PUSH4 0xEC5C3EDE EQ PUSH2 0x321 JUMPI PUSH2 0x12C JUMP JUMPDEST DUP1 PUSH4 0x8A618191 EQ PUSH2 0x249 JUMPI DUP1 PUSH4 0x90B37EA2 EQ PUSH2 0x265 JUMPI DUP1 PUSH4 0x91940244 EQ PUSH2 0x26F JUMPI DUP1 PUSH4 0x9F31A223 EQ PUSH2 0x28B JUMPI DUP1 PUSH4 0xC0CD80E6 EQ PUSH2 0x2A7 JUMPI PUSH2 0x12C JUMP JUMPDEST DUP1 PUSH4 0x33311EF3 GT PUSH2 0xF4 JUMPI DUP1 PUSH4 0x33311EF3 EQ PUSH2 0x1BD JUMPI DUP1 PUSH4 0x38393646 EQ PUSH2 0x1D9 JUMPI DUP1 PUSH4 0x443690A0 EQ PUSH2 0x1F5 JUMPI DUP1 PUSH4 0x532B9CCE EQ PUSH2 0x211 JUMPI DUP1 PUSH4 0x813A8CF5 EQ PUSH2 0x22D JUMPI PUSH2 0x12C JUMP JUMPDEST DUP1 PUSH4 0x48858E5 EQ PUSH2 0x131 JUMPI DUP1 PUSH4 0xC0C941A EQ PUSH2 0x14D JUMPI DUP1 PUSH4 0x17ABA537 EQ PUSH2 0x169 JUMPI DUP1 PUSH4 0x2536F127 EQ PUSH2 0x185 JUMPI DUP1 PUSH4 0x2785F8D6 EQ PUSH2 0x1A1 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x14B PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x146 SWAP2 SWAP1 PUSH2 0x9F0 JUMP JUMPDEST PUSH2 0x33D JUMP JUMPDEST STOP JUMPDEST PUSH2 0x167 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x162 SWAP2 SWAP1 PUSH2 0xB7D JUMP JUMPDEST PUSH2 0x36D JUMP JUMPDEST STOP JUMPDEST PUSH2 0x183 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x17E SWAP2 SWAP1 PUSH2 0xB7D JUMP JUMPDEST PUSH2 0x3DF JUMP JUMPDEST STOP JUMPDEST PUSH2 0x19F PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x19A SWAP2 SWAP1 PUSH2 0xABF JUMP JUMPDEST PUSH2 0x42E JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1BB PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1B6 SWAP2 SWAP1 PUSH2 0xB29 JUMP JUMPDEST PUSH2 0x468 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1D7 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1D2 SWAP2 SWAP1 PUSH2 0x9F0 JUMP JUMPDEST PUSH2 0x4DA JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1F3 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1EE SWAP2 SWAP1 PUSH2 0xB7D JUMP JUMPDEST PUSH2 0x514 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x20F PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x20A SWAP2 SWAP1 PUSH2 0xABF JUMP JUMPDEST PUSH2 0x551 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x22B PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x226 SWAP2 SWAP1 PUSH2 0xBB9 JUMP JUMPDEST PUSH2 0x596 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x247 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x242 SWAP2 SWAP1 PUSH2 0xB00 JUMP JUMPDEST PUSH2 0x60E JUMP JUMPDEST STOP JUMPDEST PUSH2 0x263 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x25E SWAP2 SWAP1 PUSH2 0xA96 JUMP JUMPDEST PUSH2 0x61A JUMP JUMPDEST STOP JUMPDEST PUSH2 0x26D PUSH2 0x654 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x289 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x284 SWAP2 SWAP1 PUSH2 0xB00 JUMP JUMPDEST PUSH2 0x682 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2A5 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2A0 SWAP2 SWAP1 PUSH2 0xB7D JUMP JUMPDEST PUSH2 0x6BC JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2C1 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2BC SWAP2 SWAP1 PUSH2 0xA19 JUMP JUMPDEST PUSH2 0x70B JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2DD PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2D8 SWAP2 SWAP1 PUSH2 0xA55 JUMP JUMPDEST PUSH2 0x75A JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2F9 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2F4 SWAP2 SWAP1 PUSH2 0xA55 JUMP JUMPDEST PUSH2 0x794 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x315 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x310 SWAP2 SWAP1 PUSH2 0xB00 JUMP JUMPDEST PUSH2 0x7D9 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x31F PUSH2 0x867 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x33B PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x336 SWAP2 SWAP1 PUSH2 0x9C7 JUMP JUMPDEST PUSH2 0x869 JUMP JUMPDEST STOP JUMPDEST DUP1 PUSH32 0xB421AD092CFCE88844BFBFAA9654E824BA0EE5B6B0A220F822406B62C05364C0 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP JUMP JUMPDEST PUSH32 0x97535D4B4270D3F1A499C85AE918BA6798CBDCC83A26529331A25DCD2194CFCE DUP3 PUSH1 0x40 MLOAD PUSH2 0x39C SWAP2 SWAP1 PUSH2 0xFD2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH32 0x97535D4B4270D3F1A499C85AE918BA6798CBDCC83A26529331A25DCD2194CFCE DUP2 PUSH1 0x40 MLOAD PUSH2 0x3D3 SWAP2 SWAP1 PUSH2 0xFD2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH32 0x73E687A2685D698F7ACF934B4929A29AE783A4BCB640D71C5D6994D74E2380CA PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE POP PUSH1 0x40 MLOAD PUSH2 0x422 SWAP2 SWAP1 PUSH2 0xEEB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH32 0x9B7DDCBDE8DAC280E036F87ACAFEC72F9EEE31A640C08087E8439139C7E5B52A DUP2 PUSH1 0x40 MLOAD PUSH2 0x45D SWAP2 SWAP1 PUSH2 0xF5E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH32 0x9B7DDCBDE8DAC280E036F87ACAFEC72F9EEE31A640C08087E8439139C7E5B52A DUP2 PUSH1 0x40 MLOAD PUSH2 0x497 SWAP2 SWAP1 PUSH2 0xF5E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH32 0x97535D4B4270D3F1A499C85AE918BA6798CBDCC83A26529331A25DCD2194CFCE DUP3 PUSH1 0x40 MLOAD PUSH2 0x4CE SWAP2 SWAP1 PUSH2 0xFD2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH32 0x425517D2678BBCA3C0D9D8D9FDBEC34C81194E7935ED48A6A19F97DB93BCEF6A DUP2 PUSH1 0x40 MLOAD PUSH2 0x509 SWAP2 SWAP1 PUSH2 0xF06 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH32 0x8B268BB46A33A55BECE084A8B6858719C9F2985C860FA06C155A341DF0B73C0E DUP3 DUP3 PUSH1 0x40 MLOAD PUSH2 0x545 SWAP3 SWAP2 SWAP1 PUSH2 0xFED JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH2 0x55F SWAP2 SWAP1 PUSH2 0xE9E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 PUSH32 0xD9CA28363E2D8739E0E9C4FEA1D2DF98D1BD7D9D915D00E5FCCBF78C0FDDCDB0 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP JUMP JUMPDEST PUSH32 0x8B268BB46A33A55BECE084A8B6858719C9F2985C860FA06C155A341DF0B73C0E DUP5 DUP5 PUSH1 0x40 MLOAD PUSH2 0x5C7 SWAP3 SWAP2 SWAP1 PUSH2 0xFED JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH32 0x1F1A2C748505FCD8F16A719FA88D517B1B41111C4F5E07BB28311CDC4D151538 DUP3 DUP3 PUSH1 0x40 MLOAD PUSH2 0x600 SWAP3 SWAP2 SWAP1 PUSH2 0xF80 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP JUMP JUMPDEST PUSH2 0x617 DUP2 PUSH2 0x682 JUMP JUMPDEST POP JUMP JUMPDEST PUSH32 0x39FEAB747BB4F579008AEA963D7EBAC85AD410BB83EE663A42AF01464654E93F DUP2 PUSH1 0x40 MLOAD PUSH2 0x649 SWAP2 SWAP1 PUSH2 0xF43 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH32 0x917B7BF7AB24D61500CB699921A3A1CC22B8833DA6484FEA20F262B2610604AF PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMP JUMPDEST PUSH32 0x97535D4B4270D3F1A499C85AE918BA6798CBDCC83A26529331A25DCD2194CFCE DUP2 PUSH1 0x40 MLOAD PUSH2 0x6B1 SWAP2 SWAP1 PUSH2 0xFD2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH32 0xD59AB87BF64B9D737998F3DC70C649D16B135F085029C1666CA0634BEB75A773 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE POP PUSH1 0x40 MLOAD PUSH2 0x6FF SWAP2 SWAP1 PUSH2 0xFB7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH32 0x15100859F3FFE92910DC3F11ED3DB4E9CF32FF657C05066E44BE4E69B2B488BC PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE POP PUSH1 0x40 MLOAD PUSH2 0x74E SWAP2 SWAP1 PUSH2 0xED0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH32 0x433470EDCDD53B50238BE4D8E048E2BAA269AF5BE2A4E29515C138883C745AA8 DUP2 PUSH1 0x40 MLOAD PUSH2 0x789 SWAP2 SWAP1 PUSH2 0xF21 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH2 0x7A2 SWAP2 SWAP1 PUSH2 0xE87 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 PUSH32 0x160E4655DF40987951ACCF7C731D5C504F77D20C139BD73032821B91A426DD98 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x91940244 DUP3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x832 SWAP2 SWAP1 PUSH2 0xFD2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x84C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x860 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST JUMP JUMPDEST PUSH32 0x336BCD960D2E5A52CEF6094BA33727F309DC2C675EEBEFC6D9B6B6D79ABAC877 DUP2 PUSH1 0x40 MLOAD PUSH2 0x898 SWAP2 SWAP1 PUSH2 0xEB5 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8B6 PUSH2 0x8B1 DUP5 PUSH2 0x103B JUMP JUMPDEST PUSH2 0x1016 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 DUP5 DUP5 ADD GT ISZERO PUSH2 0x8CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8D9 DUP5 DUP3 DUP6 PUSH2 0x1195 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8F4 PUSH2 0x8EF DUP5 PUSH2 0x106C JUMP JUMPDEST PUSH2 0x1016 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 DUP5 DUP5 ADD GT ISZERO PUSH2 0x90C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x917 DUP5 DUP3 DUP6 PUSH2 0x1195 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x92E DUP2 PUSH2 0x1248 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x943 DUP2 PUSH2 0x125F JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x95A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x96A DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x8A3 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x982 DUP2 PUSH2 0x1276 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x999 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x9A9 DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x8E1 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x9C1 DUP2 PUSH2 0x128D JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x9D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x9E7 DUP5 DUP3 DUP6 ADD PUSH2 0x91F JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xA02 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xA10 DUP5 DUP3 DUP6 ADD PUSH2 0x934 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xA2C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xA3A DUP6 DUP3 DUP7 ADD PUSH2 0x934 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0xA4B DUP6 DUP3 DUP7 ADD PUSH2 0x934 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xA67 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xA81 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA8D DUP5 DUP3 DUP6 ADD PUSH2 0x949 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xAA8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xAB6 DUP5 DUP3 DUP6 ADD PUSH2 0x973 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xAD1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xAEB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xAF7 DUP5 DUP3 DUP6 ADD PUSH2 0x988 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xB12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xB20 DUP5 DUP3 DUP6 ADD PUSH2 0x9B2 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xB3C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xB4A DUP6 DUP3 DUP7 ADD PUSH2 0x9B2 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xB67 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB73 DUP6 DUP3 DUP7 ADD PUSH2 0x988 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xB90 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xB9E DUP6 DUP3 DUP7 ADD PUSH2 0x9B2 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0xBAF DUP6 DUP3 DUP7 ADD PUSH2 0x9B2 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0xBCF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xBDD DUP8 DUP3 DUP9 ADD PUSH2 0x9B2 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 PUSH2 0xBEE DUP8 DUP3 DUP9 ADD PUSH2 0x9B2 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xC0B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xC17 DUP8 DUP3 DUP9 ADD PUSH2 0x988 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xC34 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xC40 DUP8 DUP3 DUP9 ADD PUSH2 0x988 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC58 DUP4 DUP4 PUSH2 0xD39 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC70 DUP4 DUP4 PUSH2 0xE69 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xC85 DUP2 PUSH2 0x1145 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0xC94 DUP2 PUSH2 0x10B1 JUMP JUMPDEST PUSH2 0xC9E DUP2 DUP5 PUSH2 0x10F7 JUMP JUMPDEST SWAP3 POP PUSH2 0xCA9 DUP3 PUSH2 0x109D JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xCDA JUMPI DUP2 MLOAD PUSH2 0xCC1 DUP8 DUP3 PUSH2 0xC4C JUMP JUMPDEST SWAP7 POP PUSH2 0xCCC DUP4 PUSH2 0x10DD JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0xCAD JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0xCEB DUP2 PUSH2 0x10BC JUMP JUMPDEST PUSH2 0xCF5 DUP2 DUP5 PUSH2 0x1102 JUMP JUMPDEST SWAP3 POP PUSH2 0xD00 DUP3 PUSH2 0x10A7 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xD31 JUMPI DUP2 MLOAD PUSH2 0xD18 DUP8 DUP3 PUSH2 0xC64 JUMP JUMPDEST SWAP7 POP PUSH2 0xD23 DUP4 PUSH2 0x10EA JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0xD04 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0xD42 DUP2 PUSH2 0x1157 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0xD51 DUP2 PUSH2 0x1157 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD62 DUP3 PUSH2 0x10C7 JUMP JUMPDEST PUSH2 0xD6C DUP2 DUP6 PUSH2 0x110D JUMP JUMPDEST SWAP4 POP PUSH2 0xD7C DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x11A4 JUMP JUMPDEST PUSH2 0xD85 DUP2 PUSH2 0x1237 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD9B DUP3 PUSH2 0x10C7 JUMP JUMPDEST PUSH2 0xDA5 DUP2 DUP6 PUSH2 0x111E JUMP JUMPDEST SWAP4 POP PUSH2 0xDB5 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x11A4 JUMP JUMPDEST DUP1 DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xDCA DUP2 PUSH2 0x1161 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xDDB DUP3 PUSH2 0x10D2 JUMP JUMPDEST PUSH2 0xDE5 DUP2 DUP6 PUSH2 0x1129 JUMP JUMPDEST SWAP4 POP PUSH2 0xDF5 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x11A4 JUMP JUMPDEST PUSH2 0xDFE DUP2 PUSH2 0x1237 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE14 DUP3 PUSH2 0x10D2 JUMP JUMPDEST PUSH2 0xE1E DUP2 DUP6 PUSH2 0x113A JUMP JUMPDEST SWAP4 POP PUSH2 0xE2E DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x11A4 JUMP JUMPDEST DUP1 DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP3 ADD PUSH1 0x0 DUP3 ADD MLOAD PUSH2 0xE50 PUSH1 0x0 DUP6 ADD DUP3 PUSH2 0xE69 JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0xE63 PUSH1 0x20 DUP6 ADD DUP3 PUSH2 0xE69 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0xE72 DUP2 PUSH2 0x118B JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0xE81 DUP2 PUSH2 0x118B JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE93 DUP3 DUP5 PUSH2 0xD90 JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xEAA DUP3 DUP5 PUSH2 0xE09 JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xECA PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xC7C JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0xEE5 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xC8B JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0xF00 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xCE2 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xF1B PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xD48 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 0xF3B DUP2 DUP5 PUSH2 0xD57 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xF58 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xDC1 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 0xF78 DUP2 DUP5 PUSH2 0xDD0 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0xF9A DUP2 DUP6 PUSH2 0xDD0 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0xFAE DUP2 DUP5 PUSH2 0xDD0 JUMP JUMPDEST SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0xFCC PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xE3A JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xFE7 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xE78 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x1002 PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0xE78 JUMP JUMPDEST PUSH2 0x100F PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0xE78 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1020 PUSH2 0x1031 JUMP JUMPDEST SWAP1 POP PUSH2 0x102C DUP3 DUP3 PUSH2 0x11D7 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 0x1056 JUMPI PUSH2 0x1055 PUSH2 0x1208 JUMP JUMPDEST JUMPDEST PUSH2 0x105F DUP3 PUSH2 0x1237 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x1087 JUMPI PUSH2 0x1086 PUSH2 0x1208 JUMP JUMPDEST JUMPDEST PUSH2 0x1090 DUP3 PUSH2 0x1237 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1150 DUP3 PUSH2 0x116B JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 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 0x11C2 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x11A7 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x11D1 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x11E0 DUP3 PUSH2 0x1237 JUMP JUMPDEST DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x11FF JUMPI PUSH2 0x11FE PUSH2 0x1208 JUMP JUMPDEST JUMPDEST DUP1 PUSH1 0x40 MSTORE POP POP POP JUMP 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 PUSH2 0x1251 DUP2 PUSH2 0x1145 JUMP JUMPDEST DUP2 EQ PUSH2 0x125C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x1268 DUP2 PUSH2 0x1157 JUMP JUMPDEST DUP2 EQ PUSH2 0x1273 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x127F DUP2 PUSH2 0x1161 JUMP JUMPDEST DUP2 EQ PUSH2 0x128A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x1296 DUP2 PUSH2 0x118B JUMP JUMPDEST DUP2 EQ PUSH2 0x12A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH20 0xA91A740C0DE3883C5213C5981D98D2396A8B60B3 0xCF 0x2F 0xB3 PUSH5 0xD7E4CC826A DUP5 0x1E PUSH5 0x736F6C6343 STOP ADDMOD DIV STOP CALLER ","sourceMap":"57:2471:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1696:86;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1087:101;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2163:83;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1278:76;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1786:116;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1620:72;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1192:82;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1358:90;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1906:163;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2349:77;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;947:60;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;813:63;;;:::i;:::-;;880;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2073:86;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2250:95;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1452:73;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1529:87;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2430:96;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;779:30;;;:::i;:::-;;1011:72;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1696:86;1775:1;1753:24;;;;;;;;;;1696:86;:::o;1087:101::-;1144:14;1156:1;1144:14;;;;;;:::i;:::-;;;;;;;;1169;1181:1;1169:14;;;;;;:::i;:::-;;;;;;;;1087:101;;:::o;2163:83::-;2220:21;;;;;;;;;2235:1;2220:21;;;;2238:1;2220:21;;;;;;;;;:::i;:::-;;;;;;;;2163:83;;:::o;1278:76::-;1333:16;1347:1;1333:16;;;;;;:::i;:::-;;;;;;;;1278:76;:::o;1786:116::-;1856:16;1870:1;1856:16;;;;;;:::i;:::-;;;;;;;;1883:14;1895:1;1883:14;;;;;;:::i;:::-;;;;;;;;1786:116;;:::o;1620:72::-;1670:17;1685:1;1670:17;;;;;;:::i;:::-;;;;;;;;1620:72;:::o;1192:82::-;1248:21;1264:1;1267;1248:21;;;;;;;:::i;:::-;;;;;;;;1192:82;;:::o;1358:90::-;1441:1;1420:23;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;1358:90;:::o;1906:163::-;2009:21;2025:1;2028;2009:21;;;;;;;:::i;:::-;;;;;;;;2041:23;2059:1;2062;2041:23;;;;;;;:::i;:::-;;;;;;;;1906:163;;;;:::o;2349:77::-;2410:11;2419:1;2410:8;:11::i;:::-;2349:77;:::o;947:60::-;989:13;1000:1;989:13;;;;;;:::i;:::-;;;;;;;;947:60;:::o;813:63::-;858:13;;;;;;;;;;813:63::o;880:::-;924:14;936:1;924:14;;;;;;:::i;:::-;;;;;;;;880:63;:::o;2073:86::-;2127:27;2141:12;;;;;;;;2148:1;2141:12;;;;2151:1;2141:12;;;2127:27;;;;;;:::i;:::-;;;;;;;;2073:86;;:::o;2250:95::-;2316:24;;;;;;;;;2334:1;2316:24;;;;2337:1;2316:24;;;;;;;;;:::i;:::-;;;;;;;;2250:95;;:::o;1452:73::-;1505:15;1518:1;1505:15;;;;;;:::i;:::-;;;;;;;;1452:73;:::o;1529:87::-;1609:1;1589:22;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;1529:87;:::o;2430:96::-;2494:15;;;;;;;;;;:24;;;2519:1;2494:27;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2430:96;:::o;779:30::-;:::o;1011:72::-;1061:17;1076:1;1061:17;;;;;;:::i;:::-;;;;;;;;1011:72;:::o;7:343:4:-;84:5;109:65;125:48;166:6;125:48;:::i;:::-;109:65;:::i;:::-;100:74;;197:6;190:5;183:21;235:4;228:5;224:16;273:3;264:6;259:3;255:16;252:25;249:2;;;290:1;287;280:12;249:2;303:41;337:6;332:3;327;303:41;:::i;:::-;90:260;;;;;;:::o;356:345::-;434:5;459:66;475:49;517:6;475:49;:::i;:::-;459:66;:::i;:::-;450:75;;548:6;541:5;534:21;586:4;579:5;575:16;624:3;615:6;610:3;606:16;603:25;600:2;;;641:1;638;631:12;600:2;654:41;688:6;683:3;678;654:41;:::i;:::-;440:261;;;;;;:::o;707:139::-;753:5;791:6;778:20;769:29;;807:33;834:5;807:33;:::i;:::-;759:87;;;;:::o;852:139::-;898:5;936:6;923:20;914:29;;952:33;979:5;952:33;:::i;:::-;904:87;;;;:::o;1010:271::-;1065:5;1114:3;1107:4;1099:6;1095:17;1091:27;1081:2;;1132:1;1129;1122:12;1081:2;1172:6;1159:20;1197:78;1271:3;1263:6;1256:4;1248:6;1244:17;1197:78;:::i;:::-;1188:87;;1071:210;;;;;:::o;1287:137::-;1332:5;1370:6;1357:20;1348:29;;1386:32;1412:5;1386:32;:::i;:::-;1338:86;;;;:::o;1444:273::-;1500:5;1549:3;1542:4;1534:6;1530:17;1526:27;1516:2;;1567:1;1564;1557:12;1516:2;1607:6;1594:20;1632:79;1707:3;1699:6;1692:4;1684:6;1680:17;1632:79;:::i;:::-;1623:88;;1506:211;;;;;:::o;1723:139::-;1769:5;1807:6;1794:20;1785:29;;1823:33;1850:5;1823:33;:::i;:::-;1775:87;;;;:::o;1868:262::-;1927:6;1976:2;1964:9;1955:7;1951:23;1947:32;1944:2;;;1992:1;1989;1982:12;1944:2;2035:1;2060:53;2105:7;2096:6;2085:9;2081:22;2060:53;:::i;:::-;2050:63;;2006:117;1934:196;;;;:::o;2136:262::-;2195:6;2244:2;2232:9;2223:7;2219:23;2215:32;2212:2;;;2260:1;2257;2250:12;2212:2;2303:1;2328:53;2373:7;2364:6;2353:9;2349:22;2328:53;:::i;:::-;2318:63;;2274:117;2202:196;;;;:::o;2404:407::-;2472:6;2480;2529:2;2517:9;2508:7;2504:23;2500:32;2497:2;;;2545:1;2542;2535:12;2497:2;2588:1;2613:53;2658:7;2649:6;2638:9;2634:22;2613:53;:::i;:::-;2603:63;;2559:117;2715:2;2741:53;2786:7;2777:6;2766:9;2762:22;2741:53;:::i;:::-;2731:63;;2686:118;2487:324;;;;;:::o;2817:373::-;2885:6;2934:2;2922:9;2913:7;2909:23;2905:32;2902:2;;;2950:1;2947;2940:12;2902:2;3021:1;3010:9;3006:17;2993:31;3051:18;3043:6;3040:30;3037:2;;;3083:1;3080;3073:12;3037:2;3111:62;3165:7;3156:6;3145:9;3141:22;3111:62;:::i;:::-;3101:72;;2964:219;2892:298;;;;:::o;3196:260::-;3254:6;3303:2;3291:9;3282:7;3278:23;3274:32;3271:2;;;3319:1;3316;3309:12;3271:2;3362:1;3387:52;3431:7;3422:6;3411:9;3407:22;3387:52;:::i;:::-;3377:62;;3333:116;3261:195;;;;:::o;3462:375::-;3531:6;3580:2;3568:9;3559:7;3555:23;3551:32;3548:2;;;3596:1;3593;3586:12;3548:2;3667:1;3656:9;3652:17;3639:31;3697:18;3689:6;3686:30;3683:2;;;3729:1;3726;3719:12;3683:2;3757:63;3812:7;3803:6;3792:9;3788:22;3757:63;:::i;:::-;3747:73;;3610:220;3538:299;;;;:::o;3843:262::-;3902:6;3951:2;3939:9;3930:7;3926:23;3922:32;3919:2;;;3967:1;3964;3957:12;3919:2;4010:1;4035:53;4080:7;4071:6;4060:9;4056:22;4035:53;:::i;:::-;4025:63;;3981:117;3909:196;;;;:::o;4111:520::-;4189:6;4197;4246:2;4234:9;4225:7;4221:23;4217:32;4214:2;;;4262:1;4259;4252:12;4214:2;4305:1;4330:53;4375:7;4366:6;4355:9;4351:22;4330:53;:::i;:::-;4320:63;;4276:117;4460:2;4449:9;4445:18;4432:32;4491:18;4483:6;4480:30;4477:2;;;4523:1;4520;4513:12;4477:2;4551:63;4606:7;4597:6;4586:9;4582:22;4551:63;:::i;:::-;4541:73;;4403:221;4204:427;;;;;:::o;4637:407::-;4705:6;4713;4762:2;4750:9;4741:7;4737:23;4733:32;4730:2;;;4778:1;4775;4768:12;4730:2;4821:1;4846:53;4891:7;4882:6;4871:9;4867:22;4846:53;:::i;:::-;4836:63;;4792:117;4948:2;4974:53;5019:7;5010:6;4999:9;4995:22;4974:53;:::i;:::-;4964:63;;4919:118;4720:324;;;;;:::o;5050:924::-;5156:6;5164;5172;5180;5229:3;5217:9;5208:7;5204:23;5200:33;5197:2;;;5246:1;5243;5236:12;5197:2;5289:1;5314:53;5359:7;5350:6;5339:9;5335:22;5314:53;:::i;:::-;5304:63;;5260:117;5416:2;5442:53;5487:7;5478:6;5467:9;5463:22;5442:53;:::i;:::-;5432:63;;5387:118;5572:2;5561:9;5557:18;5544:32;5603:18;5595:6;5592:30;5589:2;;;5635:1;5632;5625:12;5589:2;5663:63;5718:7;5709:6;5698:9;5694:22;5663:63;:::i;:::-;5653:73;;5515:221;5803:2;5792:9;5788:18;5775:32;5834:18;5826:6;5823:30;5820:2;;;5866:1;5863;5856:12;5820:2;5894:63;5949:7;5940:6;5929:9;5925:22;5894:63;:::i;:::-;5884:73;;5746:221;5187:787;;;;;;;:::o;5980:179::-;6049:10;6070:46;6112:3;6104:6;6070:46;:::i;:::-;6148:4;6143:3;6139:14;6125:28;;6060:99;;;;:::o;6165:179::-;6234:10;6255:46;6297:3;6289:6;6255:46;:::i;:::-;6333:4;6328:3;6324:14;6310:28;;6245:99;;;;:::o;6350:118::-;6437:24;6455:5;6437:24;:::i;:::-;6432:3;6425:37;6415:53;;:::o;6506:694::-;6642:52;6688:5;6642:52;:::i;:::-;6710:84;6787:6;6782:3;6710:84;:::i;:::-;6703:91;;6818:54;6866:5;6818:54;:::i;:::-;6895:7;6926:1;6911:282;6936:6;6933:1;6930:13;6911:282;;;7012:6;7006:13;7039:63;7098:3;7083:13;7039:63;:::i;:::-;7032:70;;7125:58;7176:6;7125:58;:::i;:::-;7115:68;;6971:222;6958:1;6955;6951:9;6946:14;;6911:282;;;6915:14;6618:582;;;;;:::o;7238:694::-;7374:52;7420:5;7374:52;:::i;:::-;7442:84;7519:6;7514:3;7442:84;:::i;:::-;7435:91;;7550:54;7598:5;7550:54;:::i;:::-;7627:7;7658:1;7643:282;7668:6;7665:1;7662:13;7643:282;;;7744:6;7738:13;7771:63;7830:3;7815:13;7771:63;:::i;:::-;7764:70;;7857:58;7908:6;7857:58;:::i;:::-;7847:68;;7703:222;7690:1;7687;7683:9;7678:14;;7643:282;;;7647:14;7350:582;;;;;:::o;7938:108::-;8015:24;8033:5;8015:24;:::i;:::-;8010:3;8003:37;7993:53;;:::o;8052:118::-;8139:24;8157:5;8139:24;:::i;:::-;8134:3;8127:37;8117:53;;:::o;8176:360::-;8262:3;8290:38;8322:5;8290:38;:::i;:::-;8344:70;8407:6;8402:3;8344:70;:::i;:::-;8337:77;;8423:52;8468:6;8463:3;8456:4;8449:5;8445:16;8423:52;:::i;:::-;8500:29;8522:6;8500:29;:::i;:::-;8495:3;8491:39;8484:46;;8266:270;;;;;:::o;8542:373::-;8646:3;8674:38;8706:5;8674:38;:::i;:::-;8728:88;8809:6;8804:3;8728:88;:::i;:::-;8721:95;;8825:52;8870:6;8865:3;8858:4;8851:5;8847:16;8825:52;:::i;:::-;8902:6;8897:3;8893:16;8886:23;;8650:265;;;;;:::o;8921:115::-;9006:23;9023:5;9006:23;:::i;:::-;9001:3;8994:36;8984:52;;:::o;9042:364::-;9130:3;9158:39;9191:5;9158:39;:::i;:::-;9213:71;9277:6;9272:3;9213:71;:::i;:::-;9206:78;;9293:52;9338:6;9333:3;9326:4;9319:5;9315:16;9293:52;:::i;:::-;9370:29;9392:6;9370:29;:::i;:::-;9365:3;9361:39;9354:46;;9134:272;;;;;:::o;9412:377::-;9518:3;9546:39;9579:5;9546:39;:::i;:::-;9601:89;9683:6;9678:3;9601:89;:::i;:::-;9594:96;;9699:52;9744:6;9739:3;9732:4;9725:5;9721:16;9699:52;:::i;:::-;9776:6;9771:3;9767:16;9760:23;;9522:267;;;;;:::o;9847:495::-;9988:4;9983:3;9979:14;10072:4;10065:5;10061:16;10055:23;10091:63;10148:4;10143:3;10139:14;10125:12;10091:63;:::i;:::-;10003:161;10243:4;10236:5;10232:16;10226:23;10262:63;10319:4;10314:3;10310:14;10296:12;10262:63;:::i;:::-;10174:161;9957:385;;;:::o;10348:108::-;10425:24;10443:5;10425:24;:::i;:::-;10420:3;10413:37;10403:53;;:::o;10462:118::-;10549:24;10567:5;10549:24;:::i;:::-;10544:3;10537:37;10527:53;;:::o;10586:271::-;10716:3;10738:93;10827:3;10818:6;10738:93;:::i;:::-;10731:100;;10848:3;10841:10;;10720:137;;;;:::o;10863:275::-;10995:3;11017:95;11108:3;11099:6;11017:95;:::i;:::-;11010:102;;11129:3;11122:10;;10999:139;;;;:::o;11144:222::-;11237:4;11275:2;11264:9;11260:18;11252:26;;11288:71;11356:1;11345:9;11341:17;11332:6;11288:71;:::i;:::-;11242:124;;;;:::o;11372:314::-;11511:4;11549:2;11538:9;11534:18;11526:26;;11562:117;11676:1;11665:9;11661:17;11652:6;11562:117;:::i;:::-;11516:170;;;;:::o;11692:314::-;11831:4;11869:2;11858:9;11854:18;11846:26;;11882:117;11996:1;11985:9;11981:17;11972:6;11882:117;:::i;:::-;11836:170;;;;:::o;12012:222::-;12105:4;12143:2;12132:9;12128:18;12120:26;;12156:71;12224:1;12213:9;12209:17;12200:6;12156:71;:::i;:::-;12110:124;;;;:::o;12240:309::-;12351:4;12389:2;12378:9;12374:18;12366:26;;12438:9;12432:4;12428:20;12424:1;12413:9;12409:17;12402:47;12466:76;12537:4;12528:6;12466:76;:::i;:::-;12458:84;;12356:193;;;;:::o;12555:218::-;12646:4;12684:2;12673:9;12669:18;12661:26;;12697:69;12763:1;12752:9;12748:17;12739:6;12697:69;:::i;:::-;12651:122;;;;:::o;12779:313::-;12892:4;12930:2;12919:9;12915:18;12907:26;;12979:9;12973:4;12969:20;12965:1;12954:9;12950:17;12943:47;13007:78;13080:4;13071:6;13007:78;:::i;:::-;12999:86;;12897:195;;;;:::o;13098:514::-;13259:4;13297:2;13286:9;13282:18;13274:26;;13346:9;13340:4;13336:20;13332:1;13321:9;13317:17;13310:47;13374:78;13447:4;13438:6;13374:78;:::i;:::-;13366:86;;13499:9;13493:4;13489:20;13484:2;13473:9;13469:18;13462:48;13527:78;13600:4;13591:6;13527:78;:::i;:::-;13519:86;;13264:348;;;;;:::o;13618:310::-;13755:4;13793:2;13782:9;13778:18;13770:26;;13806:115;13918:1;13907:9;13903:17;13894:6;13806:115;:::i;:::-;13760:168;;;;:::o;13934:222::-;14027:4;14065:2;14054:9;14050:18;14042:26;;14078:71;14146:1;14135:9;14131:17;14122:6;14078:71;:::i;:::-;14032:124;;;;:::o;14162:332::-;14283:4;14321:2;14310:9;14306:18;14298:26;;14334:71;14402:1;14391:9;14387:17;14378:6;14334:71;:::i;:::-;14415:72;14483:2;14472:9;14468:18;14459:6;14415:72;:::i;:::-;14288:206;;;;;:::o;14500:129::-;14534:6;14561:20;;:::i;:::-;14551:30;;14590:33;14618:4;14610:6;14590:33;:::i;:::-;14541:88;;;:::o;14635:75::-;14668:6;14701:2;14695:9;14685:19;;14675:35;:::o;14716:307::-;14777:4;14867:18;14859:6;14856:30;14853:2;;;14889:18;;:::i;:::-;14853:2;14927:29;14949:6;14927:29;:::i;:::-;14919:37;;15011:4;15005;15001:15;14993:23;;14782:241;;;:::o;15029:308::-;15091:4;15181:18;15173:6;15170:30;15167:2;;;15203:18;;:::i;:::-;15167:2;15241:29;15263:6;15241:29;:::i;:::-;15233:37;;15325:4;15319;15315:15;15307:23;;15096:241;;;:::o;15343:98::-;15408:4;15431:3;15423:11;;15413:28;;;:::o;15447:98::-;15512:4;15535:3;15527:11;;15517:28;;;:::o;15551:104::-;15616:6;15644:4;15634:14;;15623:32;;;:::o;15661:104::-;15726:6;15754:4;15744:14;;15733:32;;;:::o;15771:98::-;15822:6;15856:5;15850:12;15840:22;;15829:40;;;:::o;15875:99::-;15927:6;15961:5;15955:12;15945:22;;15934:40;;;:::o;15980:111::-;16048:4;16080;16075:3;16071:14;16063:22;;16053:38;;;:::o;16097:111::-;16165:4;16197;16192:3;16188:14;16180:22;;16170:38;;;:::o;16214:143::-;16311:11;16348:3;16333:18;;16323:34;;;;:::o;16363:143::-;16460:11;16497:3;16482:18;;16472:34;;;;:::o;16512:168::-;16595:11;16629:6;16624:3;16617:19;16669:4;16664:3;16660:14;16645:29;;16607:73;;;;:::o;16686:147::-;16787:11;16824:3;16809:18;;16799:34;;;;:::o;16839:169::-;16923:11;16957:6;16952:3;16945:19;16997:4;16992:3;16988:14;16973:29;;16935:73;;;;:::o;17014:148::-;17116:11;17153:3;17138:18;;17128:34;;;;:::o;17168:96::-;17205:7;17234:24;17252:5;17234:24;:::i;:::-;17223:35;;17213:51;;;:::o;17270:77::-;17307:7;17336:5;17325:16;;17315:32;;;:::o;17353:76::-;17389:7;17418:5;17407:16;;17397:32;;;:::o;17435:126::-;17472:7;17512:42;17505:5;17501:54;17490:65;;17480:81;;;:::o;17567:77::-;17604:7;17633:5;17622:16;;17612:32;;;:::o;17650:154::-;17734:6;17729:3;17724;17711:30;17796:1;17787:6;17782:3;17778:16;17771:27;17701:103;;;:::o;17810:307::-;17878:1;17888:113;17902:6;17899:1;17896:13;17888:113;;;17987:1;17982:3;17978:11;17972:18;17968:1;17963:3;17959:11;17952:39;17924:2;17921:1;17917:10;17912:15;;17888:113;;;18019:6;18016:1;18013:13;18010:2;;;18099:1;18090:6;18085:3;18081:16;18074:27;18010:2;17859:258;;;;:::o;18123:281::-;18206:27;18228:4;18206:27;:::i;:::-;18198:6;18194:40;18336:6;18324:10;18321:22;18300:18;18288:10;18285:34;18282:62;18279:2;;;18347:18;;:::i;:::-;18279:2;18387:10;18383:2;18376:22;18166:238;;;:::o;18410:180::-;18458:77;18455:1;18448:88;18555:4;18552:1;18545:15;18579:4;18576:1;18569:15;18596:102;18637:6;18688:2;18684:7;18679:2;18672:5;18668:14;18664:28;18654:38;;18644:54;;;:::o;18704:122::-;18777:24;18795:5;18777:24;:::i;:::-;18770:5;18767:35;18757:2;;18816:1;18813;18806:12;18757:2;18747:79;:::o;18832:122::-;18905:24;18923:5;18905:24;:::i;:::-;18898:5;18895:35;18885:2;;18944:1;18941;18934:12;18885:2;18875:79;:::o;18960:120::-;19032:23;19049:5;19032:23;:::i;:::-;19025:5;19022:34;19012:2;;19070:1;19067;19060:12;19012:2;19002:78;:::o;19086:122::-;19159:24;19177:5;19159:24;:::i;:::-;19152:5;19149:35;19139:2;;19198:1;19195;19188:12;19139:2;19129:79;:::o"},"methodIdentifiers":{"doNotEmit()":"db6cdf68","emitAddress(address)":"ec5c3ede","emitBytes(bytes)":"c76f0635","emitBytes32(bytes32)":"33311ef3","emitBytes32Array(bytes32,bytes32)":"c0cd80e6","emitIndexedBytes(bytes)":"cc07e605","emitIndexedBytes32(bytes32)":"048858e5","emitIndexedString(string)":"443690a0","emitInt(int256)":"8a618191","emitNestedUintFromAnotherContract(uint256)":"d3931e57","emitNestedUintFromSameContract(uint256)":"813a8cf5","emitString(string)":"2536f127","emitStruct(uint256,uint256)":"9f31a223","emitTwoUints(uint256,uint256)":"38393646","emitTwoUintsAndTwoStrings(uint256,uint256,string,string)":"532b9cce","emitUint(uint256)":"91940244","emitUintAndString(uint256,string)":"2785f8d6","emitUintArray(uint256,uint256)":"17aba537","emitUintTwice(uint256,uint256)":"0c0c941a","emitWithoutArgs()":"90b37ea2"}},"metadata":"{\"compiler\":{\"version\":\"0.8.4+commit.c7e474f2\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract AnotherContract\",\"name\":\"c\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"a\",\"type\":\"address\"}],\"name\":\"WithAddressArg\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"b\",\"type\":\"bytes32\"}],\"name\":\"WithBytes32Arg\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32[2]\",\"name\":\"a\",\"type\":\"bytes32[2]\"}],\"name\":\"WithBytes32Array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"b\",\"type\":\"bytes\"}],\"name\":\"WithBytesArg\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"b\",\"type\":\"bytes32\"}],\"name\":\"WithIndexedBytes32Arg\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"b\",\"type\":\"bytes\"}],\"name\":\"WithIndexedBytesArg\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"string\",\"name\":\"s\",\"type\":\"string\"}],\"name\":\"WithIndexedStringArg\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"i\",\"type\":\"int256\"}],\"name\":\"WithIntArg\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"s\",\"type\":\"string\"}],\"name\":\"WithStringArg\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"u\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"v\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"struct Events.Struct\",\"name\":\"s\",\"type\":\"tuple\"}],\"name\":\"WithStructArg\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"s\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"t\",\"type\":\"string\"}],\"name\":\"WithTwoStringArgs\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"u\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"v\",\"type\":\"uint256\"}],\"name\":\"WithTwoUintArgs\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"u\",\"type\":\"uint256\"}],\"name\":\"WithUintArg\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[2]\",\"name\":\"a\",\"type\":\"uint256[2]\"}],\"name\":\"WithUintArray\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"WithoutArgs\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"doNotEmit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"a\",\"type\":\"address\"}],\"name\":\"emitAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"b\",\"type\":\"bytes\"}],\"name\":\"emitBytes\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"b\",\"type\":\"bytes32\"}],\"name\":\"emitBytes32\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"b\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"c\",\"type\":\"bytes32\"}],\"name\":\"emitBytes32Array\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"b\",\"type\":\"bytes\"}],\"name\":\"emitIndexedBytes\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"b\",\"type\":\"bytes32\"}],\"name\":\"emitIndexedBytes32\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"s\",\"type\":\"string\"}],\"name\":\"emitIndexedString\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"i\",\"type\":\"int256\"}],\"name\":\"emitInt\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"u\",\"type\":\"uint256\"}],\"name\":\"emitNestedUintFromAnotherContract\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"u\",\"type\":\"uint256\"}],\"name\":\"emitNestedUintFromSameContract\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"s\",\"type\":\"string\"}],\"name\":\"emitString\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"u\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"v\",\"type\":\"uint256\"}],\"name\":\"emitStruct\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"u\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"v\",\"type\":\"uint256\"}],\"name\":\"emitTwoUints\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"u\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"v\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"s\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"t\",\"type\":\"string\"}],\"name\":\"emitTwoUintsAndTwoStrings\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"u\",\"type\":\"uint256\"}],\"name\":\"emitUint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"u\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"s\",\"type\":\"string\"}],\"name\":\"emitUintAndString\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"u\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"v\",\"type\":\"uint256\"}],\"name\":\"emitUintArray\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"u\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"v\",\"type\":\"uint256\"}],\"name\":\"emitUintTwice\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"emitWithoutArgs\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/Events.sol\":\"Events\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/Events.sol\":{\"keccak256\":\"0x1f12bbd1b991a4eb017f864e7ca09d99cee0730630313442e99fc32a29b28b91\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c8ba3dbc99ecfbb05a95a9a89e8ea74e86f7cbd5441a53fca9f3de94651313d5\",\"dweb:/ipfs/QmYr9HUxkuQxuEwxtLn3f9gB7i2epM95Znt6fRj9xL9T6Y\"]}},\"version\":1}"},"OverrideEventContract":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"u","type":"uint256"}],"name":"simpleEvent","type":"event"},{"anonymous":false,"inputs":[],"name":"simpleEvent","type":"event"},{"inputs":[{"internalType":"uint256","name":"u","type":"uint256"}],"name":"emitSimpleEventWithUintArg","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"emitSimpleEventWithoutArg","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"608060405234801561001057600080fd5b50610188806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80632ce136d91461003b5780638e1c72bb14610057575b600080fd5b610055600480360381019061005091906100de565b610061565b005b61005f61009b565b005b7fb2dc4835200bc382210c109031e47d05b37c9244807898f5910a43f961e6719a816040516100909190610116565b60405180910390a150565b7f8922a6ca0f59f137d8e739a3dca968247fca890d147a5006a57da5bc782f6ae960405160405180910390a1565b6000813590506100d88161013b565b92915050565b6000602082840312156100f057600080fd5b60006100fe848285016100c9565b91505092915050565b61011081610131565b82525050565b600060208201905061012b6000830184610107565b92915050565b6000819050919050565b61014481610131565b811461014f57600080fd5b5056fea264697066735822122016232a4f6ea73657adfebd142c8d15f5593e419f600cb1983aba440defd27a5064736f6c63430008040033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x188 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x36 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x2CE136D9 EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0x8E1C72BB EQ PUSH2 0x57 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x55 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x50 SWAP2 SWAP1 PUSH2 0xDE JUMP JUMPDEST PUSH2 0x61 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x5F PUSH2 0x9B JUMP JUMPDEST STOP JUMPDEST PUSH32 0xB2DC4835200BC382210C109031E47D05B37C9244807898F5910A43F961E6719A DUP2 PUSH1 0x40 MLOAD PUSH2 0x90 SWAP2 SWAP1 PUSH2 0x116 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH32 0x8922A6CA0F59F137D8E739A3DCA968247FCA890D147A5006A57DA5BC782F6AE9 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0xD8 DUP2 PUSH2 0x13B JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xF0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xFE DUP5 DUP3 DUP6 ADD PUSH2 0xC9 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x110 DUP2 PUSH2 0x131 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x12B PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x107 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x144 DUP2 PUSH2 0x131 JUMP JUMPDEST DUP2 EQ PUSH2 0x14F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 AND 0x23 0x2A 0x4F PUSH15 0xA73657ADFEBD142C8D15F5593E419F PUSH1 0xC 0xB1 SWAP9 GASPRICE 0xBA DIFFICULTY 0xD 0xEF 0xD2 PUSH27 0x5064736F6C63430008040033000000000000000000000000000000 ","sourceMap":"2656:248:1:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:980:4","statements":[{"body":{"nodeType":"YulBlock","src":"59:87:4","statements":[{"nodeType":"YulAssignment","src":"69:29:4","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"91:6:4"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"78:12:4"},"nodeType":"YulFunctionCall","src":"78:20:4"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"69:5:4"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"134:5:4"}],"functionName":{"name":"validator_revert_t_uint256","nodeType":"YulIdentifier","src":"107:26:4"},"nodeType":"YulFunctionCall","src":"107:33:4"},"nodeType":"YulExpressionStatement","src":"107:33:4"}]},"name":"abi_decode_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"37:6:4","type":""},{"name":"end","nodeType":"YulTypedName","src":"45:3:4","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"53:5:4","type":""}],"src":"7:139:4"},{"body":{"nodeType":"YulBlock","src":"218:196:4","statements":[{"body":{"nodeType":"YulBlock","src":"264:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"273:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"276:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"266:6:4"},"nodeType":"YulFunctionCall","src":"266:12:4"},"nodeType":"YulExpressionStatement","src":"266:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"239:7:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"248:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"235:3:4"},"nodeType":"YulFunctionCall","src":"235:23:4"},{"kind":"number","nodeType":"YulLiteral","src":"260:2:4","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"231:3:4"},"nodeType":"YulFunctionCall","src":"231:32:4"},"nodeType":"YulIf","src":"228:2:4"},{"nodeType":"YulBlock","src":"290:117:4","statements":[{"nodeType":"YulVariableDeclaration","src":"305:15:4","value":{"kind":"number","nodeType":"YulLiteral","src":"319:1:4","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"309:6:4","type":""}]},{"nodeType":"YulAssignment","src":"334:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"369:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"380:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"365:3:4"},"nodeType":"YulFunctionCall","src":"365:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"389:7:4"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"344:20:4"},"nodeType":"YulFunctionCall","src":"344:53:4"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"334:6:4"}]}]}]},"name":"abi_decode_tuple_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"188:9:4","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"199:7:4","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"211:6:4","type":""}],"src":"152:262:4"},{"body":{"nodeType":"YulBlock","src":"485:53:4","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"502:3:4"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"525:5:4"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"507:17:4"},"nodeType":"YulFunctionCall","src":"507:24:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"495:6:4"},"nodeType":"YulFunctionCall","src":"495:37:4"},"nodeType":"YulExpressionStatement","src":"495:37:4"}]},"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"473:5:4","type":""},{"name":"pos","nodeType":"YulTypedName","src":"480:3:4","type":""}],"src":"420:118:4"},{"body":{"nodeType":"YulBlock","src":"642:124:4","statements":[{"nodeType":"YulAssignment","src":"652:26:4","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"664:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"675:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"660:3:4"},"nodeType":"YulFunctionCall","src":"660:18:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"652:4:4"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"732:6:4"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"745:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"756:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"741:3:4"},"nodeType":"YulFunctionCall","src":"741:17:4"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"688:43:4"},"nodeType":"YulFunctionCall","src":"688:71:4"},"nodeType":"YulExpressionStatement","src":"688:71:4"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"614:9:4","type":""},{"name":"value0","nodeType":"YulTypedName","src":"626:6:4","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"637:4:4","type":""}],"src":"544:222:4"},{"body":{"nodeType":"YulBlock","src":"817:32:4","statements":[{"nodeType":"YulAssignment","src":"827:16:4","value":{"name":"value","nodeType":"YulIdentifier","src":"838:5:4"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"827:7:4"}]}]},"name":"cleanup_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"799:5:4","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"809:7:4","type":""}],"src":"772:77:4"},{"body":{"nodeType":"YulBlock","src":"898:79:4","statements":[{"body":{"nodeType":"YulBlock","src":"955:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"964:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"967:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"957:6:4"},"nodeType":"YulFunctionCall","src":"957:12:4"},"nodeType":"YulExpressionStatement","src":"957:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"921:5:4"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"946:5:4"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"928:17:4"},"nodeType":"YulFunctionCall","src":"928:24:4"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"918:2:4"},"nodeType":"YulFunctionCall","src":"918:35:4"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"911:6:4"},"nodeType":"YulFunctionCall","src":"911:43:4"},"nodeType":"YulIf","src":"908:2:4"}]},"name":"validator_revert_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"891:5:4","type":""}],"src":"855:122:4"}]},"contents":"{\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_uint256(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_uint256(add(headStart, offset), dataEnd)\n }\n\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_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 cleanup_t_uint256(value) -> cleaned {\n cleaned := value\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":4,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100365760003560e01c80632ce136d91461003b5780638e1c72bb14610057575b600080fd5b610055600480360381019061005091906100de565b610061565b005b61005f61009b565b005b7fb2dc4835200bc382210c109031e47d05b37c9244807898f5910a43f961e6719a816040516100909190610116565b60405180910390a150565b7f8922a6ca0f59f137d8e739a3dca968247fca890d147a5006a57da5bc782f6ae960405160405180910390a1565b6000813590506100d88161013b565b92915050565b6000602082840312156100f057600080fd5b60006100fe848285016100c9565b91505092915050565b61011081610131565b82525050565b600060208201905061012b6000830184610107565b92915050565b6000819050919050565b61014481610131565b811461014f57600080fd5b5056fea264697066735822122016232a4f6ea73657adfebd142c8d15f5593e419f600cb1983aba440defd27a5064736f6c63430008040033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x36 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x2CE136D9 EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0x8E1C72BB EQ PUSH2 0x57 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x55 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x50 SWAP2 SWAP1 PUSH2 0xDE JUMP JUMPDEST PUSH2 0x61 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x5F PUSH2 0x9B JUMP JUMPDEST STOP JUMPDEST PUSH32 0xB2DC4835200BC382210C109031E47D05B37C9244807898F5910A43F961E6719A DUP2 PUSH1 0x40 MLOAD PUSH2 0x90 SWAP2 SWAP1 PUSH2 0x116 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH32 0x8922A6CA0F59F137D8E739A3DCA968247FCA890D147A5006A57DA5BC782F6AE9 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0xD8 DUP2 PUSH2 0x13B JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xF0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xFE DUP5 DUP3 DUP6 ADD PUSH2 0xC9 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x110 DUP2 PUSH2 0x131 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x12B PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x107 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x144 DUP2 PUSH2 0x131 JUMP JUMPDEST DUP2 EQ PUSH2 0x14F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 AND 0x23 0x2A 0x4F PUSH15 0xA73657ADFEBD142C8D15F5593E419F PUSH1 0xC 0xB1 SWAP9 GASPRICE 0xBA DIFFICULTY 0xD 0xEF 0xD2 PUSH27 0x5064736F6C63430008040033000000000000000000000000000000 ","sourceMap":"2656:248:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2744:81;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2829:73;;;:::i;:::-;;2744:81;2806:14;2818:1;2806:14;;;;;;:::i;:::-;;;;;;;;2744:81;:::o;2829:73::-;2884:13;;;;;;;;;;2829:73::o;7:139:4:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:262::-;211:6;260:2;248:9;239:7;235:23;231:32;228:2;;;276:1;273;266:12;228:2;319:1;344:53;389:7;380:6;369:9;365:22;344:53;:::i;:::-;334:63;;290:117;218:196;;;;:::o;420:118::-;507:24;525:5;507:24;:::i;:::-;502:3;495:37;485:53;;:::o;544:222::-;637:4;675:2;664:9;660:18;652:26;;688:71;756:1;745:9;741:17;732:6;688:71;:::i;:::-;642:124;;;;:::o;772:77::-;809:7;838:5;827:16;;817:32;;;:::o;855:122::-;928:24;946:5;928:24;:::i;:::-;921:5;918:35;908:2;;967:1;964;957:12;908:2;898:79;:::o"},"methodIdentifiers":{"emitSimpleEventWithUintArg(uint256)":"2ce136d9","emitSimpleEventWithoutArg()":"8e1c72bb"}},"metadata":"{\"compiler\":{\"version\":\"0.8.4+commit.c7e474f2\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"u\",\"type\":\"uint256\"}],\"name\":\"simpleEvent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"simpleEvent\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"u\",\"type\":\"uint256\"}],\"name\":\"emitSimpleEventWithUintArg\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"emitSimpleEventWithoutArg\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/Events.sol\":\"OverrideEventContract\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/Events.sol\":{\"keccak256\":\"0x1f12bbd1b991a4eb017f864e7ca09d99cee0730630313442e99fc32a29b28b91\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c8ba3dbc99ecfbb05a95a9a89e8ea74e86f7cbd5441a53fca9f3de94651313d5\",\"dweb:/ipfs/QmYr9HUxkuQxuEwxtLn3f9gB7i2epM95Znt6fRj9xL9T6Y\"]}},\"version\":1}"}},"contracts/Matchers.sol":{"AnotherMatchersContract":{"abi":[{"inputs":[],"name":"YetAnotherCustomError","type":"error"},{"inputs":[],"name":"revertWithYetAnotherCustomError","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revertWithYetAnotherCustomErrorView","outputs":[],"stateMutability":"pure","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"608060405234801561001057600080fd5b50610182806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c806340d83b241461003b5780634b2bd7e914610045575b600080fd5b61004361004f565b005b61004d610081565b005b6040517fff05e87500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080815480929190610093906100d4565b91905055506040517fff05e87500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000819050919050565b60006100df826100ca565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156101125761011161011d565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea2646970667358221220188b4117d3c1f35f2fcbff7fbf51ee28f08c8abd18e3796ccd1d2fbc8c862e3f64736f6c63430008040033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x182 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x36 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x40D83B24 EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0x4B2BD7E9 EQ PUSH2 0x45 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x43 PUSH2 0x4F JUMP JUMPDEST STOP JUMPDEST PUSH2 0x4D PUSH2 0x81 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xFF05E87500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP2 SLOAD DUP1 SWAP3 SWAP2 SWAP1 PUSH2 0x93 SWAP1 PUSH2 0xD4 JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE POP PUSH1 0x40 MLOAD PUSH32 0xFF05E87500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xDF DUP3 PUSH2 0xCA JUMP JUMPDEST SWAP2 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 EQ ISZERO PUSH2 0x112 JUMPI PUSH2 0x111 PUSH2 0x11D JUMP JUMPDEST JUMPDEST PUSH1 0x1 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 XOR DUP12 COINBASE OR 0xD3 0xC1 RETURN 0x5F 0x2F 0xCB SELFDESTRUCT PUSH32 0xBF51EE28F08C8ABD18E3796CCD1D2FBC8C862E3F64736F6C6343000804003300 ","sourceMap":"2776:288:2:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:512:4","statements":[{"body":{"nodeType":"YulBlock","src":"52:32:4","statements":[{"nodeType":"YulAssignment","src":"62:16:4","value":{"name":"value","nodeType":"YulIdentifier","src":"73:5:4"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"62:7:4"}]}]},"name":"cleanup_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"34:5:4","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"44:7:4","type":""}],"src":"7:77:4"},{"body":{"nodeType":"YulBlock","src":"133:190:4","statements":[{"nodeType":"YulAssignment","src":"143:33:4","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"170:5:4"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"152:17:4"},"nodeType":"YulFunctionCall","src":"152:24:4"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"143:5:4"}]},{"body":{"nodeType":"YulBlock","src":"266:22:4","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"268:16:4"},"nodeType":"YulFunctionCall","src":"268:18:4"},"nodeType":"YulExpressionStatement","src":"268:18:4"}]},"condition":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"191:5:4"},{"kind":"number","nodeType":"YulLiteral","src":"198:66:4","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"188:2:4"},"nodeType":"YulFunctionCall","src":"188:77:4"},"nodeType":"YulIf","src":"185:2:4"},{"nodeType":"YulAssignment","src":"297:20:4","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"308:5:4"},{"kind":"number","nodeType":"YulLiteral","src":"315:1:4","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"304:3:4"},"nodeType":"YulFunctionCall","src":"304:13:4"},"variableNames":[{"name":"ret","nodeType":"YulIdentifier","src":"297:3:4"}]}]},"name":"increment_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"119:5:4","type":""}],"returnVariables":[{"name":"ret","nodeType":"YulTypedName","src":"129:3:4","type":""}],"src":"90:233:4"},{"body":{"nodeType":"YulBlock","src":"357:152:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"374:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"377:77:4","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"367:6:4"},"nodeType":"YulFunctionCall","src":"367:88:4"},"nodeType":"YulExpressionStatement","src":"367:88:4"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"471:1:4","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"474:4:4","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"464:6:4"},"nodeType":"YulFunctionCall","src":"464:15:4"},"nodeType":"YulExpressionStatement","src":"464:15:4"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"495:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"498:4:4","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"488:6:4"},"nodeType":"YulFunctionCall","src":"488:15:4"},"nodeType":"YulExpressionStatement","src":"488:15:4"}]},"name":"panic_error_0x11","nodeType":"YulFunctionDefinition","src":"329:180:4"}]},"contents":"{\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function increment_t_uint256(value) -> ret {\n value := cleanup_t_uint256(value)\n if eq(value, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) { panic_error_0x11() }\n ret := add(value, 1)\n }\n\n function panic_error_0x11() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n\n}\n","id":4,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100365760003560e01c806340d83b241461003b5780634b2bd7e914610045575b600080fd5b61004361004f565b005b61004d610081565b005b6040517fff05e87500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080815480929190610093906100d4565b91905055506040517fff05e87500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000819050919050565b60006100df826100ca565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156101125761011161011d565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea2646970667358221220188b4117d3c1f35f2fcbff7fbf51ee28f08c8abd18e3796ccd1d2fbc8c862e3f64736f6c63430008040033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x36 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x40D83B24 EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0x4B2BD7E9 EQ PUSH2 0x45 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x43 PUSH2 0x4F JUMP JUMPDEST STOP JUMPDEST PUSH2 0x4D PUSH2 0x81 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xFF05E87500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP2 SLOAD DUP1 SWAP3 SWAP2 SWAP1 PUSH2 0x93 SWAP1 PUSH2 0xD4 JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE POP PUSH1 0x40 MLOAD PUSH32 0xFF05E87500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xDF DUP3 PUSH2 0xCA JUMP JUMPDEST SWAP2 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 EQ ISZERO PUSH2 0x112 JUMPI PUSH2 0x111 PUSH2 0x11D JUMP JUMPDEST JUMPDEST PUSH1 0x1 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 XOR DUP12 COINBASE OR 0xD3 0xC1 RETURN 0x5F 0x2F 0xCB SELFDESTRUCT PUSH32 0xBF51EE28F08C8ABD18E3796CCD1D2FBC8C862E3F64736F6C6343000804003300 ","sourceMap":"2776:288:2:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2962:100;;;:::i;:::-;;2858;;;:::i;:::-;;2962;3034:23;;;;;;;;;;;;;;2858:100;2914:1;;:3;;;;;;;;;:::i;:::-;;;;;;2930:23;;;;;;;;;;;;;;7:77:4;44:7;73:5;62:16;;52:32;;;:::o;90:233::-;129:3;152:24;170:5;152:24;:::i;:::-;143:33;;198:66;191:5;188:77;185:2;;;268:18;;:::i;:::-;185:2;315:1;308:5;304:13;297:20;;133:190;;;:::o;329:180::-;377:77;374:1;367:88;474:4;471:1;464:15;498:4;495:1;488:15"},"methodIdentifiers":{"revertWithYetAnotherCustomError()":"4b2bd7e9","revertWithYetAnotherCustomErrorView()":"40d83b24"}},"metadata":"{\"compiler\":{\"version\":\"0.8.4+commit.c7e474f2\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"YetAnotherCustomError\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"revertWithYetAnotherCustomError\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"revertWithYetAnotherCustomErrorView\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/Matchers.sol\":\"AnotherMatchersContract\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/Matchers.sol\":{\"keccak256\":\"0x5a69001d60d8f2498c88a26a86619900f4a7d1e7443adcb5f6bf73b112e659df\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://ca96217e25bd9b0beccc5038bcde4bb32fc71f7828c01e2254f7c6eb06b2ec1c\",\"dweb:/ipfs/QmaHs3KgdszUPBCWbYsxriReGFePSG1AE23BxSCa98cnT9\"]}},\"version\":1}"},"Matchers":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"AnotherCustomError","type":"error"},{"inputs":[{"internalType":"int256","name":"","type":"int256"}],"name":"CustomErrorWithInt","type":"error"},{"inputs":[{"components":[{"internalType":"uint256","name":"a","type":"uint256"},{"internalType":"uint256","name":"b","type":"uint256"}],"internalType":"struct Matchers.Pair","name":"","type":"tuple"}],"name":"CustomErrorWithPair","type":"error"},{"inputs":[{"internalType":"uint256","name":"nameToForceEthersToUseAnArrayLikeWithNamedProperties","type":"uint256"}],"name":"CustomErrorWithUint","type":"error"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"string","name":"","type":"string"}],"name":"CustomErrorWithUintAndString","type":"error"},{"inputs":[],"name":"SomeCustomError","type":"error"},{"anonymous":false,"inputs":[],"name":"SomeEvent","type":"event"},{"inputs":[],"name":"panicAssert","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"panicAssertView","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"revertWithAnotherContractCustomError","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revertWithAnotherContractCustomErrorView","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[],"name":"revertWithAnotherCustomError","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revertWithAnotherCustomErrorView","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"int256","name":"i","type":"int256"}],"name":"revertWithCustomErrorWithInt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"int256","name":"i","type":"int256"}],"name":"revertWithCustomErrorWithIntView","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"a","type":"uint256"},{"internalType":"uint256","name":"b","type":"uint256"}],"name":"revertWithCustomErrorWithPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"a","type":"uint256"},{"internalType":"uint256","name":"b","type":"uint256"}],"name":"revertWithCustomErrorWithPairView","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"n","type":"uint256"}],"name":"revertWithCustomErrorWithUint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"n","type":"uint256"},{"internalType":"string","name":"s","type":"string"}],"name":"revertWithCustomErrorWithUintAndString","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"n","type":"uint256"},{"internalType":"string","name":"s","type":"string"}],"name":"revertWithCustomErrorWithUintAndStringView","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"n","type":"uint256"}],"name":"revertWithCustomErrorWithUintView","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"revertWithSomeCustomError","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revertWithSomeCustomErrorView","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"reason","type":"string"}],"name":"revertsWith","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"reason","type":"string"}],"name":"revertsWithView","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"revertsWithoutReason","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revertsWithoutReasonView","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"succeeds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"succeedsView","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"608060405234801561001057600080fd5b5060405161001d9061007f565b604051809103906000f080158015610039573d6000803e3d6000fd5b50600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061008c565b6101a280610e8a83390190565b610def8061009b6000396000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c806373d2ea85116100b8578063aac014e01161007c578063aac014e01461028b578063b6bbe06114610295578063bad92aa91461029f578063e0a03812146102a9578063fe276a34146102c5578063ffb4746b146102e157610142565b806373d2ea851461022357806374afd4521461023f578063772f243a146102495780637c3cb0af146102535780638f9330301461026f57610142565b80634b5bbf6a1161010a5780634b5bbf6a146101c157806358a1d1ed146101cb5780635b94e31e146101d5578063622051f1146101df5780636f1fdc31146101e95780636fc588d21461020557610142565b80631b4f3f3d146101475780631f542cf3146101515780633ba4178b1461016d578063467e3d371461018957806347c56769146101a5575b600080fd5b61014f6102eb565b005b61016b60048036038101906101669190610a66565b61030f565b005b61018760048036038101906101829190610a12565b610360565b005b6101a3600480360381019061019e91906109a8565b61039f565b005b6101bf60048036038101906101ba919061097f565b6103e7565b005b6101c9610424565b005b6101d361046d565b005b6101dd61047a565b005b6101e76104b1565b005b61020360048036038101906101fe91906109a8565b610533565b005b61020d610592565b60405161021a9190610b8f565b60405180910390f35b61023d600480360381019061023891906109e9565b61059b565b005b6102476105ef565b005b610251610608565b005b61026d600480360381019061026891906109e9565b6106a3565b005b6102896004803603810190610284919061097f565b6106e0565b005b610293610734565b005b61029d610766565b005b6102a76107b4565b005b6102c360048036038101906102be9190610a66565b6107fd565b005b6102df60048036038101906102da9190610a12565b610865565b005b6102e96108bb565b005b6000808154809291906102fd90610cd3565b9190505550600061030d57600080fd5b565b6040518060400160405280838152602001828152506040517fdecab0e70000000000000000000000000000000000000000000000000000000081526004016103579190610b74565b60405180910390fd5b81816040517fa92ee8e3000000000000000000000000000000000000000000000000000000008152600401610396929190610baa565b60405180910390fd5b600081906103e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103da9190610b52565b60405180910390fd5b5050565b806040517fcdd7a0cc00000000000000000000000000000000000000000000000000000000815260040161041b9190610b37565b60405180910390fd5b60008081548092919061043690610cd3565b91905055506040517fd2c097a600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061047857600080fd5b565b60006104af577f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340d83b246040518163ffffffff1660e01b815260040160006040518083038186803b15801561051957600080fd5b505afa15801561052d573d6000803e3d6000fd5b50505050565b60008081548092919061054590610cd3565b91905055506000819061058e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105859190610b52565b60405180910390fd5b5050565b60008054905090565b6000808154809291906105ad90610cd3565b9190505550806040517f01f4d5d20000000000000000000000000000000000000000000000000000000081526004016105e69190610b8f565b60405180910390fd5b60008081548092919061060190610cd3565b9190505550565b60008081548092919061061a90610cd3565b9190505550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634b2bd7e96040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561068957600080fd5b505af115801561069d573d6000803e3d6000fd5b50505050565b806040517f01f4d5d20000000000000000000000000000000000000000000000000000000081526004016106d79190610b8f565b60405180910390fd5b6000808154809291906106f290610cd3565b9190505550806040517fcdd7a0cc00000000000000000000000000000000000000000000000000000000815260040161072b9190610b37565b60405180910390fd5b6040517fd2c097a600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008081548092919061077890610cd3565b919050555060006107b2577f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b565b6000808154809291906107c690610cd3565b91905055506040517f0bd3d39c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008081548092919061080f90610cd3565b91905055506040518060400160405280838152602001828152506040517fdecab0e700000000000000000000000000000000000000000000000000000000815260040161085c9190610b74565b60405180910390fd5b60008081548092919061087790610cd3565b919050555081816040517fa92ee8e30000000000000000000000000000000000000000000000000000000081526004016108b2929190610baa565b60405180910390fd5b6040517f0bd3d39c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006109006108fb84610bff565b610bda565b90508281526020810184848401111561091857600080fd5b610923848285610c60565b509392505050565b60008135905061093a81610d8b565b92915050565b600082601f83011261095157600080fd5b81356109618482602086016108ed565b91505092915050565b60008135905061097981610da2565b92915050565b60006020828403121561099157600080fd5b600061099f8482850161092b565b91505092915050565b6000602082840312156109ba57600080fd5b600082013567ffffffffffffffff8111156109d457600080fd5b6109e084828501610940565b91505092915050565b6000602082840312156109fb57600080fd5b6000610a098482850161096a565b91505092915050565b60008060408385031215610a2557600080fd5b6000610a338582860161096a565b925050602083013567ffffffffffffffff811115610a5057600080fd5b610a5c85828601610940565b9150509250929050565b60008060408385031215610a7957600080fd5b6000610a878582860161096a565b9250506020610a988582860161096a565b9150509250929050565b610aab81610c4c565b82525050565b6000610abc82610c30565b610ac68185610c3b565b9350610ad6818560208601610c6f565b610adf81610d7a565b840191505092915050565b604082016000820151610b006000850182610b19565b506020820151610b136020850182610b19565b50505050565b610b2281610c56565b82525050565b610b3181610c56565b82525050565b6000602082019050610b4c6000830184610aa2565b92915050565b60006020820190508181036000830152610b6c8184610ab1565b905092915050565b6000604082019050610b896000830184610aea565b92915050565b6000602082019050610ba46000830184610b28565b92915050565b6000604082019050610bbf6000830185610b28565b8181036020830152610bd18184610ab1565b90509392505050565b6000610be4610bf5565b9050610bf08282610ca2565b919050565b6000604051905090565b600067ffffffffffffffff821115610c1a57610c19610d4b565b5b610c2382610d7a565b9050602081019050919050565b600081519050919050565b600082825260208201905092915050565b6000819050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015610c8d578082015181840152602081019050610c72565b83811115610c9c576000848401525b50505050565b610cab82610d7a565b810181811067ffffffffffffffff82111715610cca57610cc9610d4b565b5b80604052505050565b6000610cde82610c56565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415610d1157610d10610d1c565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b610d9481610c4c565b8114610d9f57600080fd5b50565b610dab81610c56565b8114610db657600080fd5b5056fea264697066735822122025e4c9eca28af81eeb16cfbb3832355e24c64c7eae221a5034159a671d61281464736f6c63430008040033608060405234801561001057600080fd5b50610182806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c806340d83b241461003b5780634b2bd7e914610045575b600080fd5b61004361004f565b005b61004d610081565b005b6040517fff05e87500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080815480929190610093906100d4565b91905055506040517fff05e87500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000819050919050565b60006100df826100ca565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156101125761011161011d565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea2646970667358221220188b4117d3c1f35f2fcbff7fbf51ee28f08c8abd18e3796ccd1d2fbc8c862e3f64736f6c63430008040033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x1D SWAP1 PUSH2 0x7F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH2 0x39 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH2 0x8C JUMP JUMPDEST PUSH2 0x1A2 DUP1 PUSH2 0xE8A DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH2 0xDEF DUP1 PUSH2 0x9B PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x142 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x73D2EA85 GT PUSH2 0xB8 JUMPI DUP1 PUSH4 0xAAC014E0 GT PUSH2 0x7C JUMPI DUP1 PUSH4 0xAAC014E0 EQ PUSH2 0x28B JUMPI DUP1 PUSH4 0xB6BBE061 EQ PUSH2 0x295 JUMPI DUP1 PUSH4 0xBAD92AA9 EQ PUSH2 0x29F JUMPI DUP1 PUSH4 0xE0A03812 EQ PUSH2 0x2A9 JUMPI DUP1 PUSH4 0xFE276A34 EQ PUSH2 0x2C5 JUMPI DUP1 PUSH4 0xFFB4746B EQ PUSH2 0x2E1 JUMPI PUSH2 0x142 JUMP JUMPDEST DUP1 PUSH4 0x73D2EA85 EQ PUSH2 0x223 JUMPI DUP1 PUSH4 0x74AFD452 EQ PUSH2 0x23F JUMPI DUP1 PUSH4 0x772F243A EQ PUSH2 0x249 JUMPI DUP1 PUSH4 0x7C3CB0AF EQ PUSH2 0x253 JUMPI DUP1 PUSH4 0x8F933030 EQ PUSH2 0x26F JUMPI PUSH2 0x142 JUMP JUMPDEST DUP1 PUSH4 0x4B5BBF6A GT PUSH2 0x10A JUMPI DUP1 PUSH4 0x4B5BBF6A EQ PUSH2 0x1C1 JUMPI DUP1 PUSH4 0x58A1D1ED EQ PUSH2 0x1CB JUMPI DUP1 PUSH4 0x5B94E31E EQ PUSH2 0x1D5 JUMPI DUP1 PUSH4 0x622051F1 EQ PUSH2 0x1DF JUMPI DUP1 PUSH4 0x6F1FDC31 EQ PUSH2 0x1E9 JUMPI DUP1 PUSH4 0x6FC588D2 EQ PUSH2 0x205 JUMPI PUSH2 0x142 JUMP JUMPDEST DUP1 PUSH4 0x1B4F3F3D EQ PUSH2 0x147 JUMPI DUP1 PUSH4 0x1F542CF3 EQ PUSH2 0x151 JUMPI DUP1 PUSH4 0x3BA4178B EQ PUSH2 0x16D JUMPI DUP1 PUSH4 0x467E3D37 EQ PUSH2 0x189 JUMPI DUP1 PUSH4 0x47C56769 EQ PUSH2 0x1A5 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x14F PUSH2 0x2EB JUMP JUMPDEST STOP JUMPDEST PUSH2 0x16B PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x166 SWAP2 SWAP1 PUSH2 0xA66 JUMP JUMPDEST PUSH2 0x30F JUMP JUMPDEST STOP JUMPDEST PUSH2 0x187 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x182 SWAP2 SWAP1 PUSH2 0xA12 JUMP JUMPDEST PUSH2 0x360 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1A3 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x19E SWAP2 SWAP1 PUSH2 0x9A8 JUMP JUMPDEST PUSH2 0x39F JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1BF PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1BA SWAP2 SWAP1 PUSH2 0x97F JUMP JUMPDEST PUSH2 0x3E7 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1C9 PUSH2 0x424 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1D3 PUSH2 0x46D JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1DD PUSH2 0x47A JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1E7 PUSH2 0x4B1 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x203 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1FE SWAP2 SWAP1 PUSH2 0x9A8 JUMP JUMPDEST PUSH2 0x533 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x20D PUSH2 0x592 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x21A SWAP2 SWAP1 PUSH2 0xB8F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x23D PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x238 SWAP2 SWAP1 PUSH2 0x9E9 JUMP JUMPDEST PUSH2 0x59B JUMP JUMPDEST STOP JUMPDEST PUSH2 0x247 PUSH2 0x5EF JUMP JUMPDEST STOP JUMPDEST PUSH2 0x251 PUSH2 0x608 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x26D PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x268 SWAP2 SWAP1 PUSH2 0x9E9 JUMP JUMPDEST PUSH2 0x6A3 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x289 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x284 SWAP2 SWAP1 PUSH2 0x97F JUMP JUMPDEST PUSH2 0x6E0 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x293 PUSH2 0x734 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x29D PUSH2 0x766 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2A7 PUSH2 0x7B4 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2C3 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2BE SWAP2 SWAP1 PUSH2 0xA66 JUMP JUMPDEST PUSH2 0x7FD JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2DF PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2DA SWAP2 SWAP1 PUSH2 0xA12 JUMP JUMPDEST PUSH2 0x865 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2E9 PUSH2 0x8BB JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 DUP2 SLOAD DUP1 SWAP3 SWAP2 SWAP1 PUSH2 0x2FD SWAP1 PUSH2 0xCD3 JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE POP PUSH1 0x0 PUSH2 0x30D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE POP PUSH1 0x40 MLOAD PUSH32 0xDECAB0E700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x357 SWAP2 SWAP1 PUSH2 0xB74 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 DUP2 PUSH1 0x40 MLOAD PUSH32 0xA92EE8E300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x396 SWAP3 SWAP2 SWAP1 PUSH2 0xBAA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 SWAP1 PUSH2 0x3E3 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DA SWAP2 SWAP1 PUSH2 0xB52 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP JUMP JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH32 0xCDD7A0CC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x41B SWAP2 SWAP1 PUSH2 0xB37 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP2 SLOAD DUP1 SWAP3 SWAP2 SWAP1 PUSH2 0x436 SWAP1 PUSH2 0xCD3 JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE POP PUSH1 0x40 MLOAD PUSH32 0xD2C097A600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x478 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4AF JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x1 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x40D83B24 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x519 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x52D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP2 SLOAD DUP1 SWAP3 SWAP2 SWAP1 PUSH2 0x545 SWAP1 PUSH2 0xCD3 JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE POP PUSH1 0x0 DUP2 SWAP1 PUSH2 0x58E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x585 SWAP2 SWAP1 PUSH2 0xB52 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP2 SLOAD DUP1 SWAP3 SWAP2 SWAP1 PUSH2 0x5AD SWAP1 PUSH2 0xCD3 JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE POP DUP1 PUSH1 0x40 MLOAD PUSH32 0x1F4D5D200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5E6 SWAP2 SWAP1 PUSH2 0xB8F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP2 SLOAD DUP1 SWAP3 SWAP2 SWAP1 PUSH2 0x601 SWAP1 PUSH2 0xCD3 JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP2 SLOAD DUP1 SWAP3 SWAP2 SWAP1 PUSH2 0x61A SWAP1 PUSH2 0xCD3 JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE POP PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x4B2BD7E9 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x689 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x69D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMP JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH32 0x1F4D5D200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x6D7 SWAP2 SWAP1 PUSH2 0xB8F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP2 SLOAD DUP1 SWAP3 SWAP2 SWAP1 PUSH2 0x6F2 SWAP1 PUSH2 0xCD3 JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE POP DUP1 PUSH1 0x40 MLOAD PUSH32 0xCDD7A0CC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x72B SWAP2 SWAP1 PUSH2 0xB37 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xD2C097A600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP2 SLOAD DUP1 SWAP3 SWAP2 SWAP1 PUSH2 0x778 SWAP1 PUSH2 0xCD3 JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE POP PUSH1 0x0 PUSH2 0x7B2 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x1 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST JUMP JUMPDEST PUSH1 0x0 DUP1 DUP2 SLOAD DUP1 SWAP3 SWAP2 SWAP1 PUSH2 0x7C6 SWAP1 PUSH2 0xCD3 JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE POP PUSH1 0x40 MLOAD PUSH32 0xBD3D39C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP2 SLOAD DUP1 SWAP3 SWAP2 SWAP1 PUSH2 0x80F SWAP1 PUSH2 0xCD3 JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE POP PUSH1 0x40 MLOAD PUSH32 0xDECAB0E700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x85C SWAP2 SWAP1 PUSH2 0xB74 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP2 SLOAD DUP1 SWAP3 SWAP2 SWAP1 PUSH2 0x877 SWAP1 PUSH2 0xCD3 JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE POP DUP2 DUP2 PUSH1 0x40 MLOAD PUSH32 0xA92EE8E300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x8B2 SWAP3 SWAP2 SWAP1 PUSH2 0xBAA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xBD3D39C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x900 PUSH2 0x8FB DUP5 PUSH2 0xBFF JUMP JUMPDEST PUSH2 0xBDA JUMP JUMPDEST SWAP1 POP DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 DUP5 DUP5 ADD GT ISZERO PUSH2 0x918 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x923 DUP5 DUP3 DUP6 PUSH2 0xC60 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x93A DUP2 PUSH2 0xD8B JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x951 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x961 DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x8ED JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x979 DUP2 PUSH2 0xDA2 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x991 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x99F DUP5 DUP3 DUP6 ADD PUSH2 0x92B JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x9BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x9D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9E0 DUP5 DUP3 DUP6 ADD PUSH2 0x940 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x9FB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xA09 DUP5 DUP3 DUP6 ADD PUSH2 0x96A JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xA25 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xA33 DUP6 DUP3 DUP7 ADD PUSH2 0x96A JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xA50 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA5C DUP6 DUP3 DUP7 ADD PUSH2 0x940 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xA79 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xA87 DUP6 DUP3 DUP7 ADD PUSH2 0x96A JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0xA98 DUP6 DUP3 DUP7 ADD PUSH2 0x96A JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH2 0xAAB DUP2 PUSH2 0xC4C JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xABC DUP3 PUSH2 0xC30 JUMP JUMPDEST PUSH2 0xAC6 DUP2 DUP6 PUSH2 0xC3B JUMP JUMPDEST SWAP4 POP PUSH2 0xAD6 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0xC6F JUMP JUMPDEST PUSH2 0xADF DUP2 PUSH2 0xD7A JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP3 ADD PUSH1 0x0 DUP3 ADD MLOAD PUSH2 0xB00 PUSH1 0x0 DUP6 ADD DUP3 PUSH2 0xB19 JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0xB13 PUSH1 0x20 DUP6 ADD DUP3 PUSH2 0xB19 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0xB22 DUP2 PUSH2 0xC56 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0xB31 DUP2 PUSH2 0xC56 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xB4C PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xAA2 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 0xB6C DUP2 DUP5 PUSH2 0xAB1 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0xB89 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xAEA JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xBA4 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xB28 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0xBBF PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0xB28 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0xBD1 DUP2 DUP5 PUSH2 0xAB1 JUMP JUMPDEST SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xBE4 PUSH2 0xBF5 JUMP JUMPDEST SWAP1 POP PUSH2 0xBF0 DUP3 DUP3 PUSH2 0xCA2 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 0xC1A JUMPI PUSH2 0xC19 PUSH2 0xD4B JUMP JUMPDEST JUMPDEST PUSH2 0xC23 DUP3 PUSH2 0xD7A 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 DUP2 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 0xC8D JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0xC72 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0xC9C JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0xCAB DUP3 PUSH2 0xD7A JUMP JUMPDEST DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0xCCA JUMPI PUSH2 0xCC9 PUSH2 0xD4B JUMP JUMPDEST JUMPDEST DUP1 PUSH1 0x40 MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCDE DUP3 PUSH2 0xC56 JUMP JUMPDEST SWAP2 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 EQ ISZERO PUSH2 0xD11 JUMPI PUSH2 0xD10 PUSH2 0xD1C JUMP JUMPDEST JUMPDEST PUSH1 0x1 DUP3 ADD SWAP1 POP SWAP2 SWAP1 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 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 PUSH2 0xD94 DUP2 PUSH2 0xC4C JUMP JUMPDEST DUP2 EQ PUSH2 0xD9F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0xDAB DUP2 PUSH2 0xC56 JUMP JUMPDEST DUP2 EQ PUSH2 0xDB6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x25 0xE4 0xC9 0xEC LOG2 DUP11 0xF8 0x1E 0xEB AND 0xCF 0xBB CODESIZE ORIGIN CALLDATALOAD 0x5E 0x24 0xC6 0x4C PUSH31 0xAE221A5034159A671D61281464736F6C634300080400336080604052348015 PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x182 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x36 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x40D83B24 EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0x4B2BD7E9 EQ PUSH2 0x45 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x43 PUSH2 0x4F JUMP JUMPDEST STOP JUMPDEST PUSH2 0x4D PUSH2 0x81 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xFF05E87500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP2 SLOAD DUP1 SWAP3 SWAP2 SWAP1 PUSH2 0x93 SWAP1 PUSH2 0xD4 JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE POP PUSH1 0x40 MLOAD PUSH32 0xFF05E87500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xDF DUP3 PUSH2 0xCA JUMP JUMPDEST SWAP2 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 EQ ISZERO PUSH2 0x112 JUMPI PUSH2 0x111 PUSH2 0x11D JUMP JUMPDEST JUMPDEST PUSH1 0x1 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 XOR DUP12 COINBASE OR 0xD3 0xC1 RETURN 0x5F 0x2F 0xCB SELFDESTRUCT PUSH32 0xBF51EE28F08C8ABD18E3796CCD1D2FBC8C862E3F64736F6C6343000804003300 ","sourceMap":"65:2709:2:-:0;;;465:73;;;;;;;;;;504:29;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;486:15;;:47;;;;;;;;;;;;;;;;;;65:2709;;;;;;;;;;:::o;:::-;;;;;;;"},"deployedBytecode":{"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:8290:4","statements":[{"body":{"nodeType":"YulBlock","src":"91:261:4","statements":[{"nodeType":"YulAssignment","src":"101:75:4","value":{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"168:6:4"}],"functionName":{"name":"array_allocation_size_t_string_memory_ptr","nodeType":"YulIdentifier","src":"126:41:4"},"nodeType":"YulFunctionCall","src":"126:49:4"}],"functionName":{"name":"allocate_memory","nodeType":"YulIdentifier","src":"110:15:4"},"nodeType":"YulFunctionCall","src":"110:66:4"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"101:5:4"}]},{"expression":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"192:5:4"},{"name":"length","nodeType":"YulIdentifier","src":"199:6:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"185:6:4"},"nodeType":"YulFunctionCall","src":"185:21:4"},"nodeType":"YulExpressionStatement","src":"185:21:4"},{"nodeType":"YulVariableDeclaration","src":"215:27:4","value":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"230:5:4"},{"kind":"number","nodeType":"YulLiteral","src":"237:4:4","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"226:3:4"},"nodeType":"YulFunctionCall","src":"226:16:4"},"variables":[{"name":"dst","nodeType":"YulTypedName","src":"219:3:4","type":""}]},{"body":{"nodeType":"YulBlock","src":"280:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"289:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"292:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"282:6:4"},"nodeType":"YulFunctionCall","src":"282:12:4"},"nodeType":"YulExpressionStatement","src":"282:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"261:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"266:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"257:3:4"},"nodeType":"YulFunctionCall","src":"257:16:4"},{"name":"end","nodeType":"YulIdentifier","src":"275:3:4"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"254:2:4"},"nodeType":"YulFunctionCall","src":"254:25:4"},"nodeType":"YulIf","src":"251:2:4"},{"expression":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"329:3:4"},{"name":"dst","nodeType":"YulIdentifier","src":"334:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"339:6:4"}],"functionName":{"name":"copy_calldata_to_memory","nodeType":"YulIdentifier","src":"305:23:4"},"nodeType":"YulFunctionCall","src":"305:41:4"},"nodeType":"YulExpressionStatement","src":"305:41:4"}]},"name":"abi_decode_available_length_t_string_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"64:3:4","type":""},{"name":"length","nodeType":"YulTypedName","src":"69:6:4","type":""},{"name":"end","nodeType":"YulTypedName","src":"77:3:4","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"85:5:4","type":""}],"src":"7:345:4"},{"body":{"nodeType":"YulBlock","src":"409:86:4","statements":[{"nodeType":"YulAssignment","src":"419:29:4","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"441:6:4"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"428:12:4"},"nodeType":"YulFunctionCall","src":"428:20:4"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"419:5:4"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"483:5:4"}],"functionName":{"name":"validator_revert_t_int256","nodeType":"YulIdentifier","src":"457:25:4"},"nodeType":"YulFunctionCall","src":"457:32:4"},"nodeType":"YulExpressionStatement","src":"457:32:4"}]},"name":"abi_decode_t_int256","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"387:6:4","type":""},{"name":"end","nodeType":"YulTypedName","src":"395:3:4","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"403:5:4","type":""}],"src":"358:137:4"},{"body":{"nodeType":"YulBlock","src":"577:211:4","statements":[{"body":{"nodeType":"YulBlock","src":"626:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"635:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"638:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"628:6:4"},"nodeType":"YulFunctionCall","src":"628:12:4"},"nodeType":"YulExpressionStatement","src":"628:12:4"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"605:6:4"},{"kind":"number","nodeType":"YulLiteral","src":"613:4:4","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"601:3:4"},"nodeType":"YulFunctionCall","src":"601:17:4"},{"name":"end","nodeType":"YulIdentifier","src":"620:3:4"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"597:3:4"},"nodeType":"YulFunctionCall","src":"597:27:4"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"590:6:4"},"nodeType":"YulFunctionCall","src":"590:35:4"},"nodeType":"YulIf","src":"587:2:4"},{"nodeType":"YulVariableDeclaration","src":"651:34:4","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"678:6:4"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"665:12:4"},"nodeType":"YulFunctionCall","src":"665:20:4"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"655:6:4","type":""}]},{"nodeType":"YulAssignment","src":"694:88:4","value":{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"755:6:4"},{"kind":"number","nodeType":"YulLiteral","src":"763:4:4","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"751:3:4"},"nodeType":"YulFunctionCall","src":"751:17:4"},{"name":"length","nodeType":"YulIdentifier","src":"770:6:4"},{"name":"end","nodeType":"YulIdentifier","src":"778:3:4"}],"functionName":{"name":"abi_decode_available_length_t_string_memory_ptr","nodeType":"YulIdentifier","src":"703:47:4"},"nodeType":"YulFunctionCall","src":"703:79:4"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"694:5:4"}]}]},"name":"abi_decode_t_string_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"555:6:4","type":""},{"name":"end","nodeType":"YulTypedName","src":"563:3:4","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"571:5:4","type":""}],"src":"515:273:4"},{"body":{"nodeType":"YulBlock","src":"846:87:4","statements":[{"nodeType":"YulAssignment","src":"856:29:4","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"878:6:4"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"865:12:4"},"nodeType":"YulFunctionCall","src":"865:20:4"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"856:5:4"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"921:5:4"}],"functionName":{"name":"validator_revert_t_uint256","nodeType":"YulIdentifier","src":"894:26:4"},"nodeType":"YulFunctionCall","src":"894:33:4"},"nodeType":"YulExpressionStatement","src":"894:33:4"}]},"name":"abi_decode_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"824:6:4","type":""},{"name":"end","nodeType":"YulTypedName","src":"832:3:4","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"840:5:4","type":""}],"src":"794:139:4"},{"body":{"nodeType":"YulBlock","src":"1004:195:4","statements":[{"body":{"nodeType":"YulBlock","src":"1050:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1059:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1062:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1052:6:4"},"nodeType":"YulFunctionCall","src":"1052:12:4"},"nodeType":"YulExpressionStatement","src":"1052:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1025:7:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"1034:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1021:3:4"},"nodeType":"YulFunctionCall","src":"1021:23:4"},{"kind":"number","nodeType":"YulLiteral","src":"1046:2:4","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1017:3:4"},"nodeType":"YulFunctionCall","src":"1017:32:4"},"nodeType":"YulIf","src":"1014:2:4"},{"nodeType":"YulBlock","src":"1076:116:4","statements":[{"nodeType":"YulVariableDeclaration","src":"1091:15:4","value":{"kind":"number","nodeType":"YulLiteral","src":"1105:1:4","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1095:6:4","type":""}]},{"nodeType":"YulAssignment","src":"1120:62:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1154:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"1165:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1150:3:4"},"nodeType":"YulFunctionCall","src":"1150:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1174:7:4"}],"functionName":{"name":"abi_decode_t_int256","nodeType":"YulIdentifier","src":"1130:19:4"},"nodeType":"YulFunctionCall","src":"1130:52:4"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1120:6:4"}]}]}]},"name":"abi_decode_tuple_t_int256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"974:9:4","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"985:7:4","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"997:6:4","type":""}],"src":"939:260:4"},{"body":{"nodeType":"YulBlock","src":"1281:299:4","statements":[{"body":{"nodeType":"YulBlock","src":"1327:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1336:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1339:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1329:6:4"},"nodeType":"YulFunctionCall","src":"1329:12:4"},"nodeType":"YulExpressionStatement","src":"1329:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1302:7:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"1311:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1298:3:4"},"nodeType":"YulFunctionCall","src":"1298:23:4"},{"kind":"number","nodeType":"YulLiteral","src":"1323:2:4","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1294:3:4"},"nodeType":"YulFunctionCall","src":"1294:32:4"},"nodeType":"YulIf","src":"1291:2:4"},{"nodeType":"YulBlock","src":"1353:220:4","statements":[{"nodeType":"YulVariableDeclaration","src":"1368:45:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1399:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"1410:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1395:3:4"},"nodeType":"YulFunctionCall","src":"1395:17:4"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1382:12:4"},"nodeType":"YulFunctionCall","src":"1382:31:4"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1372:6:4","type":""}]},{"body":{"nodeType":"YulBlock","src":"1460:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1469:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1472:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1462:6:4"},"nodeType":"YulFunctionCall","src":"1462:12:4"},"nodeType":"YulExpressionStatement","src":"1462:12:4"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1432:6:4"},{"kind":"number","nodeType":"YulLiteral","src":"1440:18:4","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1429:2:4"},"nodeType":"YulFunctionCall","src":"1429:30:4"},"nodeType":"YulIf","src":"1426:2:4"},{"nodeType":"YulAssignment","src":"1490:73:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1535:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"1546:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1531:3:4"},"nodeType":"YulFunctionCall","src":"1531:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1555:7:4"}],"functionName":{"name":"abi_decode_t_string_memory_ptr","nodeType":"YulIdentifier","src":"1500:30:4"},"nodeType":"YulFunctionCall","src":"1500:63:4"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1490:6:4"}]}]}]},"name":"abi_decode_tuple_t_string_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1251:9:4","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1262:7:4","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1274:6:4","type":""}],"src":"1205:375:4"},{"body":{"nodeType":"YulBlock","src":"1652:196:4","statements":[{"body":{"nodeType":"YulBlock","src":"1698:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1707:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1710:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1700:6:4"},"nodeType":"YulFunctionCall","src":"1700:12:4"},"nodeType":"YulExpressionStatement","src":"1700:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1673:7:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"1682:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1669:3:4"},"nodeType":"YulFunctionCall","src":"1669:23:4"},{"kind":"number","nodeType":"YulLiteral","src":"1694:2:4","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1665:3:4"},"nodeType":"YulFunctionCall","src":"1665:32:4"},"nodeType":"YulIf","src":"1662:2:4"},{"nodeType":"YulBlock","src":"1724:117:4","statements":[{"nodeType":"YulVariableDeclaration","src":"1739:15:4","value":{"kind":"number","nodeType":"YulLiteral","src":"1753:1:4","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1743:6:4","type":""}]},{"nodeType":"YulAssignment","src":"1768:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1803:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"1814:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1799:3:4"},"nodeType":"YulFunctionCall","src":"1799:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1823:7:4"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"1778:20:4"},"nodeType":"YulFunctionCall","src":"1778:53:4"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1768:6:4"}]}]}]},"name":"abi_decode_tuple_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1622:9:4","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1633:7:4","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1645:6:4","type":""}],"src":"1586:262:4"},{"body":{"nodeType":"YulBlock","src":"1947:427:4","statements":[{"body":{"nodeType":"YulBlock","src":"1993:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2002:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2005:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1995:6:4"},"nodeType":"YulFunctionCall","src":"1995:12:4"},"nodeType":"YulExpressionStatement","src":"1995:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1968:7:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"1977:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1964:3:4"},"nodeType":"YulFunctionCall","src":"1964:23:4"},{"kind":"number","nodeType":"YulLiteral","src":"1989:2:4","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1960:3:4"},"nodeType":"YulFunctionCall","src":"1960:32:4"},"nodeType":"YulIf","src":"1957:2:4"},{"nodeType":"YulBlock","src":"2019:117:4","statements":[{"nodeType":"YulVariableDeclaration","src":"2034:15:4","value":{"kind":"number","nodeType":"YulLiteral","src":"2048:1:4","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"2038:6:4","type":""}]},{"nodeType":"YulAssignment","src":"2063:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2098:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"2109:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2094:3:4"},"nodeType":"YulFunctionCall","src":"2094:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2118:7:4"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"2073:20:4"},"nodeType":"YulFunctionCall","src":"2073:53:4"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2063:6:4"}]}]},{"nodeType":"YulBlock","src":"2146:221:4","statements":[{"nodeType":"YulVariableDeclaration","src":"2161:46:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2192:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"2203:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2188:3:4"},"nodeType":"YulFunctionCall","src":"2188:18:4"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2175:12:4"},"nodeType":"YulFunctionCall","src":"2175:32:4"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"2165:6:4","type":""}]},{"body":{"nodeType":"YulBlock","src":"2254:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2263:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2266:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2256:6:4"},"nodeType":"YulFunctionCall","src":"2256:12:4"},"nodeType":"YulExpressionStatement","src":"2256:12:4"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"2226:6:4"},{"kind":"number","nodeType":"YulLiteral","src":"2234:18:4","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2223:2:4"},"nodeType":"YulFunctionCall","src":"2223:30:4"},"nodeType":"YulIf","src":"2220:2:4"},{"nodeType":"YulAssignment","src":"2284:73:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2329:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"2340:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2325:3:4"},"nodeType":"YulFunctionCall","src":"2325:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2349:7:4"}],"functionName":{"name":"abi_decode_t_string_memory_ptr","nodeType":"YulIdentifier","src":"2294:30:4"},"nodeType":"YulFunctionCall","src":"2294:63:4"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"2284:6:4"}]}]}]},"name":"abi_decode_tuple_t_uint256t_string_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1909:9:4","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1920:7:4","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1932:6:4","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1940:6:4","type":""}],"src":"1854:520:4"},{"body":{"nodeType":"YulBlock","src":"2463:324:4","statements":[{"body":{"nodeType":"YulBlock","src":"2509:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2518:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2521:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2511:6:4"},"nodeType":"YulFunctionCall","src":"2511:12:4"},"nodeType":"YulExpressionStatement","src":"2511:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2484:7:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"2493:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2480:3:4"},"nodeType":"YulFunctionCall","src":"2480:23:4"},{"kind":"number","nodeType":"YulLiteral","src":"2505:2:4","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2476:3:4"},"nodeType":"YulFunctionCall","src":"2476:32:4"},"nodeType":"YulIf","src":"2473:2:4"},{"nodeType":"YulBlock","src":"2535:117:4","statements":[{"nodeType":"YulVariableDeclaration","src":"2550:15:4","value":{"kind":"number","nodeType":"YulLiteral","src":"2564:1:4","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"2554:6:4","type":""}]},{"nodeType":"YulAssignment","src":"2579:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2614:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"2625:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2610:3:4"},"nodeType":"YulFunctionCall","src":"2610:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2634:7:4"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"2589:20:4"},"nodeType":"YulFunctionCall","src":"2589:53:4"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2579:6:4"}]}]},{"nodeType":"YulBlock","src":"2662:118:4","statements":[{"nodeType":"YulVariableDeclaration","src":"2677:16:4","value":{"kind":"number","nodeType":"YulLiteral","src":"2691:2:4","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"2681:6:4","type":""}]},{"nodeType":"YulAssignment","src":"2707:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2742:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"2753:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2738:3:4"},"nodeType":"YulFunctionCall","src":"2738:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2762:7:4"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"2717:20:4"},"nodeType":"YulFunctionCall","src":"2717:53:4"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"2707:6:4"}]}]}]},"name":"abi_decode_tuple_t_uint256t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2425:9:4","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2436:7:4","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2448:6:4","type":""},{"name":"value1","nodeType":"YulTypedName","src":"2456:6:4","type":""}],"src":"2380:407:4"},{"body":{"nodeType":"YulBlock","src":"2856:52:4","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2873:3:4"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2895:5:4"}],"functionName":{"name":"cleanup_t_int256","nodeType":"YulIdentifier","src":"2878:16:4"},"nodeType":"YulFunctionCall","src":"2878:23:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2866:6:4"},"nodeType":"YulFunctionCall","src":"2866:36:4"},"nodeType":"YulExpressionStatement","src":"2866:36:4"}]},"name":"abi_encode_t_int256_to_t_int256_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"2844:5:4","type":""},{"name":"pos","nodeType":"YulTypedName","src":"2851:3:4","type":""}],"src":"2793:115:4"},{"body":{"nodeType":"YulBlock","src":"3006:272:4","statements":[{"nodeType":"YulVariableDeclaration","src":"3016:53:4","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3063:5:4"}],"functionName":{"name":"array_length_t_string_memory_ptr","nodeType":"YulIdentifier","src":"3030:32:4"},"nodeType":"YulFunctionCall","src":"3030:39:4"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"3020:6:4","type":""}]},{"nodeType":"YulAssignment","src":"3078:78:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3144:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"3149:6:4"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"3085:58:4"},"nodeType":"YulFunctionCall","src":"3085:71:4"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"3078:3:4"}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3191:5:4"},{"kind":"number","nodeType":"YulLiteral","src":"3198:4:4","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3187:3:4"},"nodeType":"YulFunctionCall","src":"3187:16:4"},{"name":"pos","nodeType":"YulIdentifier","src":"3205:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"3210:6:4"}],"functionName":{"name":"copy_memory_to_memory","nodeType":"YulIdentifier","src":"3165:21:4"},"nodeType":"YulFunctionCall","src":"3165:52:4"},"nodeType":"YulExpressionStatement","src":"3165:52:4"},{"nodeType":"YulAssignment","src":"3226:46:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3237:3:4"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"3264:6:4"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"3242:21:4"},"nodeType":"YulFunctionCall","src":"3242:29:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3233:3:4"},"nodeType":"YulFunctionCall","src":"3233:39:4"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"3226:3:4"}]}]},"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"2987:5:4","type":""},{"name":"pos","nodeType":"YulTypedName","src":"2994:3:4","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"3002:3:4","type":""}],"src":"2914:364:4"},{"body":{"nodeType":"YulBlock","src":"3444:385:4","statements":[{"nodeType":"YulVariableDeclaration","src":"3454:26:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3470:3:4"},{"kind":"number","nodeType":"YulLiteral","src":"3475:4:4","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3466:3:4"},"nodeType":"YulFunctionCall","src":"3466:14:4"},"variables":[{"name":"tail","nodeType":"YulTypedName","src":"3458:4:4","type":""}]},{"nodeType":"YulBlock","src":"3490:161:4","statements":[{"nodeType":"YulVariableDeclaration","src":"3522:43:4","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3552:5:4"},{"kind":"number","nodeType":"YulLiteral","src":"3559:4:4","type":"","value":"0x00"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3548:3:4"},"nodeType":"YulFunctionCall","src":"3548:16:4"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3542:5:4"},"nodeType":"YulFunctionCall","src":"3542:23:4"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"3526:12:4","type":""}]},{"expression":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"3612:12:4"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3630:3:4"},{"kind":"number","nodeType":"YulLiteral","src":"3635:4:4","type":"","value":"0x00"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3626:3:4"},"nodeType":"YulFunctionCall","src":"3626:14:4"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256","nodeType":"YulIdentifier","src":"3578:33:4"},"nodeType":"YulFunctionCall","src":"3578:63:4"},"nodeType":"YulExpressionStatement","src":"3578:63:4"}]},{"nodeType":"YulBlock","src":"3661:161:4","statements":[{"nodeType":"YulVariableDeclaration","src":"3693:43:4","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3723:5:4"},{"kind":"number","nodeType":"YulLiteral","src":"3730:4:4","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3719:3:4"},"nodeType":"YulFunctionCall","src":"3719:16:4"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3713:5:4"},"nodeType":"YulFunctionCall","src":"3713:23:4"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"3697:12:4","type":""}]},{"expression":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"3783:12:4"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3801:3:4"},{"kind":"number","nodeType":"YulLiteral","src":"3806:4:4","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3797:3:4"},"nodeType":"YulFunctionCall","src":"3797:14:4"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256","nodeType":"YulIdentifier","src":"3749:33:4"},"nodeType":"YulFunctionCall","src":"3749:63:4"},"nodeType":"YulExpressionStatement","src":"3749:63:4"}]}]},"name":"abi_encode_t_struct$_Pair_$412_memory_ptr_to_t_struct$_Pair_$412_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"3431:5:4","type":""},{"name":"pos","nodeType":"YulTypedName","src":"3438:3:4","type":""}],"src":"3336:493:4"},{"body":{"nodeType":"YulBlock","src":"3890:53:4","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3907:3:4"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3930:5:4"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"3912:17:4"},"nodeType":"YulFunctionCall","src":"3912:24:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3900:6:4"},"nodeType":"YulFunctionCall","src":"3900:37:4"},"nodeType":"YulExpressionStatement","src":"3900:37:4"}]},"name":"abi_encode_t_uint256_to_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"3878:5:4","type":""},{"name":"pos","nodeType":"YulTypedName","src":"3885:3:4","type":""}],"src":"3835:108:4"},{"body":{"nodeType":"YulBlock","src":"4014:53:4","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4031:3:4"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4054:5:4"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"4036:17:4"},"nodeType":"YulFunctionCall","src":"4036:24:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4024:6:4"},"nodeType":"YulFunctionCall","src":"4024:37:4"},"nodeType":"YulExpressionStatement","src":"4024:37:4"}]},"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"4002:5:4","type":""},{"name":"pos","nodeType":"YulTypedName","src":"4009:3:4","type":""}],"src":"3949:118:4"},{"body":{"nodeType":"YulBlock","src":"4169:122:4","statements":[{"nodeType":"YulAssignment","src":"4179:26:4","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4191:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"4202:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4187:3:4"},"nodeType":"YulFunctionCall","src":"4187:18:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4179:4:4"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4257:6:4"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4270:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"4281:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4266:3:4"},"nodeType":"YulFunctionCall","src":"4266:17:4"}],"functionName":{"name":"abi_encode_t_int256_to_t_int256_fromStack","nodeType":"YulIdentifier","src":"4215:41:4"},"nodeType":"YulFunctionCall","src":"4215:69:4"},"nodeType":"YulExpressionStatement","src":"4215:69:4"}]},"name":"abi_encode_tuple_t_int256__to_t_int256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4141:9:4","type":""},{"name":"value0","nodeType":"YulTypedName","src":"4153:6:4","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4164:4:4","type":""}],"src":"4073:218:4"},{"body":{"nodeType":"YulBlock","src":"4415:195:4","statements":[{"nodeType":"YulAssignment","src":"4425:26:4","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4437:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"4448:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4433:3:4"},"nodeType":"YulFunctionCall","src":"4433:18:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4425:4:4"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4472:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"4483:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4468:3:4"},"nodeType":"YulFunctionCall","src":"4468:17:4"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"4491:4:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"4497:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4487:3:4"},"nodeType":"YulFunctionCall","src":"4487:20:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4461:6:4"},"nodeType":"YulFunctionCall","src":"4461:47:4"},"nodeType":"YulExpressionStatement","src":"4461:47:4"},{"nodeType":"YulAssignment","src":"4517:86:4","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4589:6:4"},{"name":"tail","nodeType":"YulIdentifier","src":"4598:4:4"}],"functionName":{"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"4525:63:4"},"nodeType":"YulFunctionCall","src":"4525:78:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4517:4:4"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4387:9:4","type":""},{"name":"value0","nodeType":"YulTypedName","src":"4399:6:4","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4410:4:4","type":""}],"src":"4297:313:4"},{"body":{"nodeType":"YulBlock","src":"4756:166:4","statements":[{"nodeType":"YulAssignment","src":"4766:26:4","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4778:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"4789:2:4","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4774:3:4"},"nodeType":"YulFunctionCall","src":"4774:18:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4766:4:4"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4888:6:4"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4901:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"4912:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4897:3:4"},"nodeType":"YulFunctionCall","src":"4897:17:4"}],"functionName":{"name":"abi_encode_t_struct$_Pair_$412_memory_ptr_to_t_struct$_Pair_$412_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"4802:85:4"},"nodeType":"YulFunctionCall","src":"4802:113:4"},"nodeType":"YulExpressionStatement","src":"4802:113:4"}]},"name":"abi_encode_tuple_t_struct$_Pair_$412_memory_ptr__to_t_struct$_Pair_$412_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4728:9:4","type":""},{"name":"value0","nodeType":"YulTypedName","src":"4740:6:4","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4751:4:4","type":""}],"src":"4616:306:4"},{"body":{"nodeType":"YulBlock","src":"5026:124:4","statements":[{"nodeType":"YulAssignment","src":"5036:26:4","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5048:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"5059:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5044:3:4"},"nodeType":"YulFunctionCall","src":"5044:18:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5036:4:4"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5116:6:4"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5129:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"5140:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5125:3:4"},"nodeType":"YulFunctionCall","src":"5125:17:4"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"5072:43:4"},"nodeType":"YulFunctionCall","src":"5072:71:4"},"nodeType":"YulExpressionStatement","src":"5072:71:4"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4998:9:4","type":""},{"name":"value0","nodeType":"YulTypedName","src":"5010:6:4","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5021:4:4","type":""}],"src":"4928:222:4"},{"body":{"nodeType":"YulBlock","src":"5302:277:4","statements":[{"nodeType":"YulAssignment","src":"5312:26:4","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5324:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"5335:2:4","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5320:3:4"},"nodeType":"YulFunctionCall","src":"5320:18:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5312:4:4"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5392:6:4"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5405:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"5416:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5401:3:4"},"nodeType":"YulFunctionCall","src":"5401:17:4"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"5348:43:4"},"nodeType":"YulFunctionCall","src":"5348:71:4"},"nodeType":"YulExpressionStatement","src":"5348:71:4"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5440:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"5451:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5436:3:4"},"nodeType":"YulFunctionCall","src":"5436:18:4"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"5460:4:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"5466:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5456:3:4"},"nodeType":"YulFunctionCall","src":"5456:20:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5429:6:4"},"nodeType":"YulFunctionCall","src":"5429:48:4"},"nodeType":"YulExpressionStatement","src":"5429:48:4"},{"nodeType":"YulAssignment","src":"5486:86:4","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"5558:6:4"},{"name":"tail","nodeType":"YulIdentifier","src":"5567:4:4"}],"functionName":{"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"5494:63:4"},"nodeType":"YulFunctionCall","src":"5494:78:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5486:4:4"}]}]},"name":"abi_encode_tuple_t_uint256_t_string_memory_ptr__to_t_uint256_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5266:9:4","type":""},{"name":"value1","nodeType":"YulTypedName","src":"5278:6:4","type":""},{"name":"value0","nodeType":"YulTypedName","src":"5286:6:4","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5297:4:4","type":""}],"src":"5156:423:4"},{"body":{"nodeType":"YulBlock","src":"5626:88:4","statements":[{"nodeType":"YulAssignment","src":"5636:30:4","value":{"arguments":[],"functionName":{"name":"allocate_unbounded","nodeType":"YulIdentifier","src":"5646:18:4"},"nodeType":"YulFunctionCall","src":"5646:20:4"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"5636:6:4"}]},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"5695:6:4"},{"name":"size","nodeType":"YulIdentifier","src":"5703:4:4"}],"functionName":{"name":"finalize_allocation","nodeType":"YulIdentifier","src":"5675:19:4"},"nodeType":"YulFunctionCall","src":"5675:33:4"},"nodeType":"YulExpressionStatement","src":"5675:33:4"}]},"name":"allocate_memory","nodeType":"YulFunctionDefinition","parameters":[{"name":"size","nodeType":"YulTypedName","src":"5610:4:4","type":""}],"returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"5619:6:4","type":""}],"src":"5585:129:4"},{"body":{"nodeType":"YulBlock","src":"5760:35:4","statements":[{"nodeType":"YulAssignment","src":"5770:19:4","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5786:2:4","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5780:5:4"},"nodeType":"YulFunctionCall","src":"5780:9:4"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"5770:6:4"}]}]},"name":"allocate_unbounded","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"5753:6:4","type":""}],"src":"5720:75:4"},{"body":{"nodeType":"YulBlock","src":"5868:241:4","statements":[{"body":{"nodeType":"YulBlock","src":"5973:22:4","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"5975:16:4"},"nodeType":"YulFunctionCall","src":"5975:18:4"},"nodeType":"YulExpressionStatement","src":"5975:18:4"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"5945:6:4"},{"kind":"number","nodeType":"YulLiteral","src":"5953:18:4","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5942:2:4"},"nodeType":"YulFunctionCall","src":"5942:30:4"},"nodeType":"YulIf","src":"5939:2:4"},{"nodeType":"YulAssignment","src":"6005:37:4","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"6035:6:4"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"6013:21:4"},"nodeType":"YulFunctionCall","src":"6013:29:4"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"6005:4:4"}]},{"nodeType":"YulAssignment","src":"6079:23:4","value":{"arguments":[{"name":"size","nodeType":"YulIdentifier","src":"6091:4:4"},{"kind":"number","nodeType":"YulLiteral","src":"6097:4:4","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6087:3:4"},"nodeType":"YulFunctionCall","src":"6087:15:4"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"6079:4:4"}]}]},"name":"array_allocation_size_t_string_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"length","nodeType":"YulTypedName","src":"5852:6:4","type":""}],"returnVariables":[{"name":"size","nodeType":"YulTypedName","src":"5863:4:4","type":""}],"src":"5801:308:4"},{"body":{"nodeType":"YulBlock","src":"6174:40:4","statements":[{"nodeType":"YulAssignment","src":"6185:22:4","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6201:5:4"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6195:5:4"},"nodeType":"YulFunctionCall","src":"6195:12:4"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"6185:6:4"}]}]},"name":"array_length_t_string_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"6157:5:4","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"6167:6:4","type":""}],"src":"6115:99:4"},{"body":{"nodeType":"YulBlock","src":"6316:73:4","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6333:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"6338:6:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6326:6:4"},"nodeType":"YulFunctionCall","src":"6326:19:4"},"nodeType":"YulExpressionStatement","src":"6326:19:4"},{"nodeType":"YulAssignment","src":"6354:29:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6373:3:4"},{"kind":"number","nodeType":"YulLiteral","src":"6378:4:4","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6369:3:4"},"nodeType":"YulFunctionCall","src":"6369:14:4"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"6354:11:4"}]}]},"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"6288:3:4","type":""},{"name":"length","nodeType":"YulTypedName","src":"6293:6:4","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"6304:11:4","type":""}],"src":"6220:169:4"},{"body":{"nodeType":"YulBlock","src":"6439:32:4","statements":[{"nodeType":"YulAssignment","src":"6449:16:4","value":{"name":"value","nodeType":"YulIdentifier","src":"6460:5:4"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"6449:7:4"}]}]},"name":"cleanup_t_int256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"6421:5:4","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"6431:7:4","type":""}],"src":"6395:76:4"},{"body":{"nodeType":"YulBlock","src":"6522:32:4","statements":[{"nodeType":"YulAssignment","src":"6532:16:4","value":{"name":"value","nodeType":"YulIdentifier","src":"6543:5:4"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"6532:7:4"}]}]},"name":"cleanup_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"6504:5:4","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"6514:7:4","type":""}],"src":"6477:77:4"},{"body":{"nodeType":"YulBlock","src":"6611:103:4","statements":[{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"6634:3:4"},{"name":"src","nodeType":"YulIdentifier","src":"6639:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"6644:6:4"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"6621:12:4"},"nodeType":"YulFunctionCall","src":"6621:30:4"},"nodeType":"YulExpressionStatement","src":"6621:30:4"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"6692:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"6697:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6688:3:4"},"nodeType":"YulFunctionCall","src":"6688:16:4"},{"kind":"number","nodeType":"YulLiteral","src":"6706:1:4","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6681:6:4"},"nodeType":"YulFunctionCall","src":"6681:27:4"},"nodeType":"YulExpressionStatement","src":"6681:27:4"}]},"name":"copy_calldata_to_memory","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"6593:3:4","type":""},{"name":"dst","nodeType":"YulTypedName","src":"6598:3:4","type":""},{"name":"length","nodeType":"YulTypedName","src":"6603:6:4","type":""}],"src":"6560:154:4"},{"body":{"nodeType":"YulBlock","src":"6769:258:4","statements":[{"nodeType":"YulVariableDeclaration","src":"6779:10:4","value":{"kind":"number","nodeType":"YulLiteral","src":"6788:1:4","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"6783:1:4","type":""}]},{"body":{"nodeType":"YulBlock","src":"6848:63:4","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"6873:3:4"},{"name":"i","nodeType":"YulIdentifier","src":"6878:1:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6869:3:4"},"nodeType":"YulFunctionCall","src":"6869:11:4"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"6892:3:4"},{"name":"i","nodeType":"YulIdentifier","src":"6897:1:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6888:3:4"},"nodeType":"YulFunctionCall","src":"6888:11:4"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6882:5:4"},"nodeType":"YulFunctionCall","src":"6882:18:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6862:6:4"},"nodeType":"YulFunctionCall","src":"6862:39:4"},"nodeType":"YulExpressionStatement","src":"6862:39:4"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"6809:1:4"},{"name":"length","nodeType":"YulIdentifier","src":"6812:6:4"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"6806:2:4"},"nodeType":"YulFunctionCall","src":"6806:13:4"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"6820:19:4","statements":[{"nodeType":"YulAssignment","src":"6822:15:4","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"6831:1:4"},{"kind":"number","nodeType":"YulLiteral","src":"6834:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6827:3:4"},"nodeType":"YulFunctionCall","src":"6827:10:4"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"6822:1:4"}]}]},"pre":{"nodeType":"YulBlock","src":"6802:3:4","statements":[]},"src":"6798:113:4"},{"body":{"nodeType":"YulBlock","src":"6945:76:4","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"6995:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"7000:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6991:3:4"},"nodeType":"YulFunctionCall","src":"6991:16:4"},{"kind":"number","nodeType":"YulLiteral","src":"7009:1:4","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6984:6:4"},"nodeType":"YulFunctionCall","src":"6984:27:4"},"nodeType":"YulExpressionStatement","src":"6984:27:4"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"6926:1:4"},{"name":"length","nodeType":"YulIdentifier","src":"6929:6:4"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"6923:2:4"},"nodeType":"YulFunctionCall","src":"6923:13:4"},"nodeType":"YulIf","src":"6920:2:4"}]},"name":"copy_memory_to_memory","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"6751:3:4","type":""},{"name":"dst","nodeType":"YulTypedName","src":"6756:3:4","type":""},{"name":"length","nodeType":"YulTypedName","src":"6761:6:4","type":""}],"src":"6720:307:4"},{"body":{"nodeType":"YulBlock","src":"7076:238:4","statements":[{"nodeType":"YulVariableDeclaration","src":"7086:58:4","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7108:6:4"},{"arguments":[{"name":"size","nodeType":"YulIdentifier","src":"7138:4:4"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"7116:21:4"},"nodeType":"YulFunctionCall","src":"7116:27:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7104:3:4"},"nodeType":"YulFunctionCall","src":"7104:40:4"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"7090:10:4","type":""}]},{"body":{"nodeType":"YulBlock","src":"7255:22:4","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"7257:16:4"},"nodeType":"YulFunctionCall","src":"7257:18:4"},"nodeType":"YulExpressionStatement","src":"7257:18:4"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"7198:10:4"},{"kind":"number","nodeType":"YulLiteral","src":"7210:18:4","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"7195:2:4"},"nodeType":"YulFunctionCall","src":"7195:34:4"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"7234:10:4"},{"name":"memPtr","nodeType":"YulIdentifier","src":"7246:6:4"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"7231:2:4"},"nodeType":"YulFunctionCall","src":"7231:22:4"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"7192:2:4"},"nodeType":"YulFunctionCall","src":"7192:62:4"},"nodeType":"YulIf","src":"7189:2:4"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7293:2:4","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"7297:10:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7286:6:4"},"nodeType":"YulFunctionCall","src":"7286:22:4"},"nodeType":"YulExpressionStatement","src":"7286:22:4"}]},"name":"finalize_allocation","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"7062:6:4","type":""},{"name":"size","nodeType":"YulTypedName","src":"7070:4:4","type":""}],"src":"7033:281:4"},{"body":{"nodeType":"YulBlock","src":"7363:190:4","statements":[{"nodeType":"YulAssignment","src":"7373:33:4","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"7400:5:4"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"7382:17:4"},"nodeType":"YulFunctionCall","src":"7382:24:4"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"7373:5:4"}]},{"body":{"nodeType":"YulBlock","src":"7496:22:4","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"7498:16:4"},"nodeType":"YulFunctionCall","src":"7498:18:4"},"nodeType":"YulExpressionStatement","src":"7498:18:4"}]},"condition":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"7421:5:4"},{"kind":"number","nodeType":"YulLiteral","src":"7428:66:4","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"7418:2:4"},"nodeType":"YulFunctionCall","src":"7418:77:4"},"nodeType":"YulIf","src":"7415:2:4"},{"nodeType":"YulAssignment","src":"7527:20:4","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"7538:5:4"},{"kind":"number","nodeType":"YulLiteral","src":"7545:1:4","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7534:3:4"},"nodeType":"YulFunctionCall","src":"7534:13:4"},"variableNames":[{"name":"ret","nodeType":"YulIdentifier","src":"7527:3:4"}]}]},"name":"increment_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"7349:5:4","type":""}],"returnVariables":[{"name":"ret","nodeType":"YulTypedName","src":"7359:3:4","type":""}],"src":"7320:233:4"},{"body":{"nodeType":"YulBlock","src":"7587:152:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7604:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7607:77:4","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7597:6:4"},"nodeType":"YulFunctionCall","src":"7597:88:4"},"nodeType":"YulExpressionStatement","src":"7597:88:4"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7701:1:4","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"7704:4:4","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7694:6:4"},"nodeType":"YulFunctionCall","src":"7694:15:4"},"nodeType":"YulExpressionStatement","src":"7694:15:4"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7725:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7728:4:4","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7718:6:4"},"nodeType":"YulFunctionCall","src":"7718:15:4"},"nodeType":"YulExpressionStatement","src":"7718:15:4"}]},"name":"panic_error_0x11","nodeType":"YulFunctionDefinition","src":"7559:180:4"},{"body":{"nodeType":"YulBlock","src":"7773:152:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7790:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7793:77:4","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7783:6:4"},"nodeType":"YulFunctionCall","src":"7783:88:4"},"nodeType":"YulExpressionStatement","src":"7783:88:4"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7887:1:4","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"7890:4:4","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7880:6:4"},"nodeType":"YulFunctionCall","src":"7880:15:4"},"nodeType":"YulExpressionStatement","src":"7880:15:4"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7911:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7914:4:4","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7904:6:4"},"nodeType":"YulFunctionCall","src":"7904:15:4"},"nodeType":"YulExpressionStatement","src":"7904:15:4"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"7745:180:4"},{"body":{"nodeType":"YulBlock","src":"7979:54:4","statements":[{"nodeType":"YulAssignment","src":"7989:38:4","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8007:5:4"},{"kind":"number","nodeType":"YulLiteral","src":"8014:2:4","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8003:3:4"},"nodeType":"YulFunctionCall","src":"8003:14:4"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8023:2:4","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"8019:3:4"},"nodeType":"YulFunctionCall","src":"8019:7:4"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7999:3:4"},"nodeType":"YulFunctionCall","src":"7999:28:4"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"7989:6:4"}]}]},"name":"round_up_to_mul_of_32","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"7962:5:4","type":""}],"returnVariables":[{"name":"result","nodeType":"YulTypedName","src":"7972:6:4","type":""}],"src":"7931:102:4"},{"body":{"nodeType":"YulBlock","src":"8081:78:4","statements":[{"body":{"nodeType":"YulBlock","src":"8137:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8146:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8149:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8139:6:4"},"nodeType":"YulFunctionCall","src":"8139:12:4"},"nodeType":"YulExpressionStatement","src":"8139:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8104:5:4"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8128:5:4"}],"functionName":{"name":"cleanup_t_int256","nodeType":"YulIdentifier","src":"8111:16:4"},"nodeType":"YulFunctionCall","src":"8111:23:4"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"8101:2:4"},"nodeType":"YulFunctionCall","src":"8101:34:4"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"8094:6:4"},"nodeType":"YulFunctionCall","src":"8094:42:4"},"nodeType":"YulIf","src":"8091:2:4"}]},"name":"validator_revert_t_int256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"8074:5:4","type":""}],"src":"8039:120:4"},{"body":{"nodeType":"YulBlock","src":"8208:79:4","statements":[{"body":{"nodeType":"YulBlock","src":"8265:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8274:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8277:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8267:6:4"},"nodeType":"YulFunctionCall","src":"8267:12:4"},"nodeType":"YulExpressionStatement","src":"8267:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8231:5:4"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8256:5:4"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"8238:17:4"},"nodeType":"YulFunctionCall","src":"8238:24:4"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"8228:2:4"},"nodeType":"YulFunctionCall","src":"8228:35:4"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"8221:6:4"},"nodeType":"YulFunctionCall","src":"8221:43:4"},"nodeType":"YulIf","src":"8218:2:4"}]},"name":"validator_revert_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"8201:5:4","type":""}],"src":"8165:122:4"}]},"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_int256(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_int256(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_int256(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_int256(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_decode_tuple_t_uint256(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_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_uint256t_string_memory_ptr(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_uint256(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := calldataload(add(headStart, 32))\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n\n value1 := abi_decode_t_string_memory_ptr(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_uint256t_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_uint256(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_encode_t_int256_to_t_int256_fromStack(value, pos) {\n mstore(pos, cleanup_t_int256(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 // struct Matchers.Pair -> struct Matchers.Pair\n function abi_encode_t_struct$_Pair_$412_memory_ptr_to_t_struct$_Pair_$412_memory_ptr_fromStack(value, pos) {\n let tail := add(pos, 0x40)\n\n {\n // a\n\n let memberValue0 := mload(add(value, 0x00))\n abi_encode_t_uint256_to_t_uint256(memberValue0, add(pos, 0x00))\n }\n\n {\n // b\n\n let memberValue0 := mload(add(value, 0x20))\n abi_encode_t_uint256_to_t_uint256(memberValue0, add(pos, 0x20))\n }\n\n }\n\n function abi_encode_t_uint256_to_t_uint256(value, pos) {\n mstore(pos, cleanup_t_uint256(value))\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_int256__to_t_int256__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_int256_to_t_int256_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_struct$_Pair_$412_memory_ptr__to_t_struct$_Pair_$412_memory_ptr__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_struct$_Pair_$412_memory_ptr_to_t_struct$_Pair_$412_memory_ptr_fromStack(value0, add(headStart, 0))\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_string_memory_ptr__to_t_uint256_t_string_memory_ptr__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 mstore(add(headStart, 32), sub(tail, headStart))\n tail := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack(value1, tail)\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 cleanup_t_int256(value) -> cleaned {\n cleaned := value\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 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 increment_t_uint256(value) -> ret {\n value := cleanup_t_uint256(value)\n if eq(value, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) { panic_error_0x11() }\n ret := add(value, 1)\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_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 validator_revert_t_int256(value) {\n if iszero(eq(value, cleanup_t_int256(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":4,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106101425760003560e01c806373d2ea85116100b8578063aac014e01161007c578063aac014e01461028b578063b6bbe06114610295578063bad92aa91461029f578063e0a03812146102a9578063fe276a34146102c5578063ffb4746b146102e157610142565b806373d2ea851461022357806374afd4521461023f578063772f243a146102495780637c3cb0af146102535780638f9330301461026f57610142565b80634b5bbf6a1161010a5780634b5bbf6a146101c157806358a1d1ed146101cb5780635b94e31e146101d5578063622051f1146101df5780636f1fdc31146101e95780636fc588d21461020557610142565b80631b4f3f3d146101475780631f542cf3146101515780633ba4178b1461016d578063467e3d371461018957806347c56769146101a5575b600080fd5b61014f6102eb565b005b61016b60048036038101906101669190610a66565b61030f565b005b61018760048036038101906101829190610a12565b610360565b005b6101a3600480360381019061019e91906109a8565b61039f565b005b6101bf60048036038101906101ba919061097f565b6103e7565b005b6101c9610424565b005b6101d361046d565b005b6101dd61047a565b005b6101e76104b1565b005b61020360048036038101906101fe91906109a8565b610533565b005b61020d610592565b60405161021a9190610b8f565b60405180910390f35b61023d600480360381019061023891906109e9565b61059b565b005b6102476105ef565b005b610251610608565b005b61026d600480360381019061026891906109e9565b6106a3565b005b6102896004803603810190610284919061097f565b6106e0565b005b610293610734565b005b61029d610766565b005b6102a76107b4565b005b6102c360048036038101906102be9190610a66565b6107fd565b005b6102df60048036038101906102da9190610a12565b610865565b005b6102e96108bb565b005b6000808154809291906102fd90610cd3565b9190505550600061030d57600080fd5b565b6040518060400160405280838152602001828152506040517fdecab0e70000000000000000000000000000000000000000000000000000000081526004016103579190610b74565b60405180910390fd5b81816040517fa92ee8e3000000000000000000000000000000000000000000000000000000008152600401610396929190610baa565b60405180910390fd5b600081906103e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103da9190610b52565b60405180910390fd5b5050565b806040517fcdd7a0cc00000000000000000000000000000000000000000000000000000000815260040161041b9190610b37565b60405180910390fd5b60008081548092919061043690610cd3565b91905055506040517fd2c097a600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061047857600080fd5b565b60006104af577f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340d83b246040518163ffffffff1660e01b815260040160006040518083038186803b15801561051957600080fd5b505afa15801561052d573d6000803e3d6000fd5b50505050565b60008081548092919061054590610cd3565b91905055506000819061058e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105859190610b52565b60405180910390fd5b5050565b60008054905090565b6000808154809291906105ad90610cd3565b9190505550806040517f01f4d5d20000000000000000000000000000000000000000000000000000000081526004016105e69190610b8f565b60405180910390fd5b60008081548092919061060190610cd3565b9190505550565b60008081548092919061061a90610cd3565b9190505550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634b2bd7e96040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561068957600080fd5b505af115801561069d573d6000803e3d6000fd5b50505050565b806040517f01f4d5d20000000000000000000000000000000000000000000000000000000081526004016106d79190610b8f565b60405180910390fd5b6000808154809291906106f290610cd3565b9190505550806040517fcdd7a0cc00000000000000000000000000000000000000000000000000000000815260040161072b9190610b37565b60405180910390fd5b6040517fd2c097a600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008081548092919061077890610cd3565b919050555060006107b2577f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b565b6000808154809291906107c690610cd3565b91905055506040517f0bd3d39c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008081548092919061080f90610cd3565b91905055506040518060400160405280838152602001828152506040517fdecab0e700000000000000000000000000000000000000000000000000000000815260040161085c9190610b74565b60405180910390fd5b60008081548092919061087790610cd3565b919050555081816040517fa92ee8e30000000000000000000000000000000000000000000000000000000081526004016108b2929190610baa565b60405180910390fd5b6040517f0bd3d39c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006109006108fb84610bff565b610bda565b90508281526020810184848401111561091857600080fd5b610923848285610c60565b509392505050565b60008135905061093a81610d8b565b92915050565b600082601f83011261095157600080fd5b81356109618482602086016108ed565b91505092915050565b60008135905061097981610da2565b92915050565b60006020828403121561099157600080fd5b600061099f8482850161092b565b91505092915050565b6000602082840312156109ba57600080fd5b600082013567ffffffffffffffff8111156109d457600080fd5b6109e084828501610940565b91505092915050565b6000602082840312156109fb57600080fd5b6000610a098482850161096a565b91505092915050565b60008060408385031215610a2557600080fd5b6000610a338582860161096a565b925050602083013567ffffffffffffffff811115610a5057600080fd5b610a5c85828601610940565b9150509250929050565b60008060408385031215610a7957600080fd5b6000610a878582860161096a565b9250506020610a988582860161096a565b9150509250929050565b610aab81610c4c565b82525050565b6000610abc82610c30565b610ac68185610c3b565b9350610ad6818560208601610c6f565b610adf81610d7a565b840191505092915050565b604082016000820151610b006000850182610b19565b506020820151610b136020850182610b19565b50505050565b610b2281610c56565b82525050565b610b3181610c56565b82525050565b6000602082019050610b4c6000830184610aa2565b92915050565b60006020820190508181036000830152610b6c8184610ab1565b905092915050565b6000604082019050610b896000830184610aea565b92915050565b6000602082019050610ba46000830184610b28565b92915050565b6000604082019050610bbf6000830185610b28565b8181036020830152610bd18184610ab1565b90509392505050565b6000610be4610bf5565b9050610bf08282610ca2565b919050565b6000604051905090565b600067ffffffffffffffff821115610c1a57610c19610d4b565b5b610c2382610d7a565b9050602081019050919050565b600081519050919050565b600082825260208201905092915050565b6000819050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015610c8d578082015181840152602081019050610c72565b83811115610c9c576000848401525b50505050565b610cab82610d7a565b810181811067ffffffffffffffff82111715610cca57610cc9610d4b565b5b80604052505050565b6000610cde82610c56565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415610d1157610d10610d1c565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b610d9481610c4c565b8114610d9f57600080fd5b50565b610dab81610c56565b8114610db657600080fd5b5056fea264697066735822122025e4c9eca28af81eeb16cfbb3832355e24c64c7eae221a5034159a671d61281464736f6c63430008040033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x142 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x73D2EA85 GT PUSH2 0xB8 JUMPI DUP1 PUSH4 0xAAC014E0 GT PUSH2 0x7C JUMPI DUP1 PUSH4 0xAAC014E0 EQ PUSH2 0x28B JUMPI DUP1 PUSH4 0xB6BBE061 EQ PUSH2 0x295 JUMPI DUP1 PUSH4 0xBAD92AA9 EQ PUSH2 0x29F JUMPI DUP1 PUSH4 0xE0A03812 EQ PUSH2 0x2A9 JUMPI DUP1 PUSH4 0xFE276A34 EQ PUSH2 0x2C5 JUMPI DUP1 PUSH4 0xFFB4746B EQ PUSH2 0x2E1 JUMPI PUSH2 0x142 JUMP JUMPDEST DUP1 PUSH4 0x73D2EA85 EQ PUSH2 0x223 JUMPI DUP1 PUSH4 0x74AFD452 EQ PUSH2 0x23F JUMPI DUP1 PUSH4 0x772F243A EQ PUSH2 0x249 JUMPI DUP1 PUSH4 0x7C3CB0AF EQ PUSH2 0x253 JUMPI DUP1 PUSH4 0x8F933030 EQ PUSH2 0x26F JUMPI PUSH2 0x142 JUMP JUMPDEST DUP1 PUSH4 0x4B5BBF6A GT PUSH2 0x10A JUMPI DUP1 PUSH4 0x4B5BBF6A EQ PUSH2 0x1C1 JUMPI DUP1 PUSH4 0x58A1D1ED EQ PUSH2 0x1CB JUMPI DUP1 PUSH4 0x5B94E31E EQ PUSH2 0x1D5 JUMPI DUP1 PUSH4 0x622051F1 EQ PUSH2 0x1DF JUMPI DUP1 PUSH4 0x6F1FDC31 EQ PUSH2 0x1E9 JUMPI DUP1 PUSH4 0x6FC588D2 EQ PUSH2 0x205 JUMPI PUSH2 0x142 JUMP JUMPDEST DUP1 PUSH4 0x1B4F3F3D EQ PUSH2 0x147 JUMPI DUP1 PUSH4 0x1F542CF3 EQ PUSH2 0x151 JUMPI DUP1 PUSH4 0x3BA4178B EQ PUSH2 0x16D JUMPI DUP1 PUSH4 0x467E3D37 EQ PUSH2 0x189 JUMPI DUP1 PUSH4 0x47C56769 EQ PUSH2 0x1A5 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x14F PUSH2 0x2EB JUMP JUMPDEST STOP JUMPDEST PUSH2 0x16B PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x166 SWAP2 SWAP1 PUSH2 0xA66 JUMP JUMPDEST PUSH2 0x30F JUMP JUMPDEST STOP JUMPDEST PUSH2 0x187 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x182 SWAP2 SWAP1 PUSH2 0xA12 JUMP JUMPDEST PUSH2 0x360 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1A3 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x19E SWAP2 SWAP1 PUSH2 0x9A8 JUMP JUMPDEST PUSH2 0x39F JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1BF PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1BA SWAP2 SWAP1 PUSH2 0x97F JUMP JUMPDEST PUSH2 0x3E7 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1C9 PUSH2 0x424 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1D3 PUSH2 0x46D JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1DD PUSH2 0x47A JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1E7 PUSH2 0x4B1 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x203 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1FE SWAP2 SWAP1 PUSH2 0x9A8 JUMP JUMPDEST PUSH2 0x533 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x20D PUSH2 0x592 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x21A SWAP2 SWAP1 PUSH2 0xB8F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x23D PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x238 SWAP2 SWAP1 PUSH2 0x9E9 JUMP JUMPDEST PUSH2 0x59B JUMP JUMPDEST STOP JUMPDEST PUSH2 0x247 PUSH2 0x5EF JUMP JUMPDEST STOP JUMPDEST PUSH2 0x251 PUSH2 0x608 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x26D PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x268 SWAP2 SWAP1 PUSH2 0x9E9 JUMP JUMPDEST PUSH2 0x6A3 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x289 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x284 SWAP2 SWAP1 PUSH2 0x97F JUMP JUMPDEST PUSH2 0x6E0 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x293 PUSH2 0x734 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x29D PUSH2 0x766 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2A7 PUSH2 0x7B4 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2C3 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2BE SWAP2 SWAP1 PUSH2 0xA66 JUMP JUMPDEST PUSH2 0x7FD JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2DF PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2DA SWAP2 SWAP1 PUSH2 0xA12 JUMP JUMPDEST PUSH2 0x865 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2E9 PUSH2 0x8BB JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 DUP2 SLOAD DUP1 SWAP3 SWAP2 SWAP1 PUSH2 0x2FD SWAP1 PUSH2 0xCD3 JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE POP PUSH1 0x0 PUSH2 0x30D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE POP PUSH1 0x40 MLOAD PUSH32 0xDECAB0E700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x357 SWAP2 SWAP1 PUSH2 0xB74 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 DUP2 PUSH1 0x40 MLOAD PUSH32 0xA92EE8E300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x396 SWAP3 SWAP2 SWAP1 PUSH2 0xBAA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 SWAP1 PUSH2 0x3E3 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DA SWAP2 SWAP1 PUSH2 0xB52 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP JUMP JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH32 0xCDD7A0CC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x41B SWAP2 SWAP1 PUSH2 0xB37 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP2 SLOAD DUP1 SWAP3 SWAP2 SWAP1 PUSH2 0x436 SWAP1 PUSH2 0xCD3 JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE POP PUSH1 0x40 MLOAD PUSH32 0xD2C097A600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x478 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4AF JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x1 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x40D83B24 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x519 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x52D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP2 SLOAD DUP1 SWAP3 SWAP2 SWAP1 PUSH2 0x545 SWAP1 PUSH2 0xCD3 JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE POP PUSH1 0x0 DUP2 SWAP1 PUSH2 0x58E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x585 SWAP2 SWAP1 PUSH2 0xB52 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP2 SLOAD DUP1 SWAP3 SWAP2 SWAP1 PUSH2 0x5AD SWAP1 PUSH2 0xCD3 JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE POP DUP1 PUSH1 0x40 MLOAD PUSH32 0x1F4D5D200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5E6 SWAP2 SWAP1 PUSH2 0xB8F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP2 SLOAD DUP1 SWAP3 SWAP2 SWAP1 PUSH2 0x601 SWAP1 PUSH2 0xCD3 JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP2 SLOAD DUP1 SWAP3 SWAP2 SWAP1 PUSH2 0x61A SWAP1 PUSH2 0xCD3 JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE POP PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x4B2BD7E9 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x689 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x69D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMP JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH32 0x1F4D5D200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x6D7 SWAP2 SWAP1 PUSH2 0xB8F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP2 SLOAD DUP1 SWAP3 SWAP2 SWAP1 PUSH2 0x6F2 SWAP1 PUSH2 0xCD3 JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE POP DUP1 PUSH1 0x40 MLOAD PUSH32 0xCDD7A0CC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x72B SWAP2 SWAP1 PUSH2 0xB37 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xD2C097A600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP2 SLOAD DUP1 SWAP3 SWAP2 SWAP1 PUSH2 0x778 SWAP1 PUSH2 0xCD3 JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE POP PUSH1 0x0 PUSH2 0x7B2 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x1 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST JUMP JUMPDEST PUSH1 0x0 DUP1 DUP2 SLOAD DUP1 SWAP3 SWAP2 SWAP1 PUSH2 0x7C6 SWAP1 PUSH2 0xCD3 JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE POP PUSH1 0x40 MLOAD PUSH32 0xBD3D39C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP2 SLOAD DUP1 SWAP3 SWAP2 SWAP1 PUSH2 0x80F SWAP1 PUSH2 0xCD3 JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE POP PUSH1 0x40 MLOAD PUSH32 0xDECAB0E700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x85C SWAP2 SWAP1 PUSH2 0xB74 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP2 SLOAD DUP1 SWAP3 SWAP2 SWAP1 PUSH2 0x877 SWAP1 PUSH2 0xCD3 JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE POP DUP2 DUP2 PUSH1 0x40 MLOAD PUSH32 0xA92EE8E300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x8B2 SWAP3 SWAP2 SWAP1 PUSH2 0xBAA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xBD3D39C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x900 PUSH2 0x8FB DUP5 PUSH2 0xBFF JUMP JUMPDEST PUSH2 0xBDA JUMP JUMPDEST SWAP1 POP DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 DUP5 DUP5 ADD GT ISZERO PUSH2 0x918 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x923 DUP5 DUP3 DUP6 PUSH2 0xC60 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x93A DUP2 PUSH2 0xD8B JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x951 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x961 DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x8ED JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x979 DUP2 PUSH2 0xDA2 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x991 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x99F DUP5 DUP3 DUP6 ADD PUSH2 0x92B JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x9BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x9D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9E0 DUP5 DUP3 DUP6 ADD PUSH2 0x940 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x9FB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xA09 DUP5 DUP3 DUP6 ADD PUSH2 0x96A JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xA25 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xA33 DUP6 DUP3 DUP7 ADD PUSH2 0x96A JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xA50 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA5C DUP6 DUP3 DUP7 ADD PUSH2 0x940 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xA79 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xA87 DUP6 DUP3 DUP7 ADD PUSH2 0x96A JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0xA98 DUP6 DUP3 DUP7 ADD PUSH2 0x96A JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH2 0xAAB DUP2 PUSH2 0xC4C JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xABC DUP3 PUSH2 0xC30 JUMP JUMPDEST PUSH2 0xAC6 DUP2 DUP6 PUSH2 0xC3B JUMP JUMPDEST SWAP4 POP PUSH2 0xAD6 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0xC6F JUMP JUMPDEST PUSH2 0xADF DUP2 PUSH2 0xD7A JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP3 ADD PUSH1 0x0 DUP3 ADD MLOAD PUSH2 0xB00 PUSH1 0x0 DUP6 ADD DUP3 PUSH2 0xB19 JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0xB13 PUSH1 0x20 DUP6 ADD DUP3 PUSH2 0xB19 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0xB22 DUP2 PUSH2 0xC56 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0xB31 DUP2 PUSH2 0xC56 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xB4C PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xAA2 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 0xB6C DUP2 DUP5 PUSH2 0xAB1 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0xB89 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xAEA JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xBA4 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xB28 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0xBBF PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0xB28 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0xBD1 DUP2 DUP5 PUSH2 0xAB1 JUMP JUMPDEST SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xBE4 PUSH2 0xBF5 JUMP JUMPDEST SWAP1 POP PUSH2 0xBF0 DUP3 DUP3 PUSH2 0xCA2 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 0xC1A JUMPI PUSH2 0xC19 PUSH2 0xD4B JUMP JUMPDEST JUMPDEST PUSH2 0xC23 DUP3 PUSH2 0xD7A 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 DUP2 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 0xC8D JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0xC72 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0xC9C JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0xCAB DUP3 PUSH2 0xD7A JUMP JUMPDEST DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0xCCA JUMPI PUSH2 0xCC9 PUSH2 0xD4B JUMP JUMPDEST JUMPDEST DUP1 PUSH1 0x40 MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCDE DUP3 PUSH2 0xC56 JUMP JUMPDEST SWAP2 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 EQ ISZERO PUSH2 0xD11 JUMPI PUSH2 0xD10 PUSH2 0xD1C JUMP JUMPDEST JUMPDEST PUSH1 0x1 DUP3 ADD SWAP1 POP SWAP2 SWAP1 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 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 PUSH2 0xD94 DUP2 PUSH2 0xC4C JUMP JUMPDEST DUP2 EQ PUSH2 0xD9F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0xDAB DUP2 PUSH2 0xC56 JUMP JUMPDEST DUP2 EQ PUSH2 0xDB6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x25 0xE4 0xC9 0xEC LOG2 DUP11 0xF8 0x1E 0xEB AND 0xCF 0xBB CODESIZE ORIGIN CALLDATALOAD 0x5E 0x24 0xC6 0x4C PUSH31 0xAE221A5034159A671D61281464736F6C634300080400330000000000000000 ","sourceMap":"65:2709:2:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;888:73;;;:::i;:::-;;2652:120;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2383:141;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;792:92;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2134:100;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1360:94;;;:::i;:::-;;965:73;;;:::i;:::-;;1109:63;;;:::i;:::-;;1684:128;;;:::i;:::-;;696:92;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;622:70;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1816:103;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;542:76;;;:::i;:::-;;1556:124;;;:::i;:::-;;1923:103;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2030:100;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1458:94;;;:::i;:::-;;1042:63;;;:::i;:::-;;1176:88;;;:::i;:::-;;2528:120;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2238:141;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1268:88;;;:::i;:::-;;888:73;933:1;;:3;;;;;;;;;:::i;:::-;;;;;;950:5;942:14;;;;;;888:73::o;2652:120::-;2756:10;;;;;;;;2761:1;2756:10;;;;2764:1;2756:10;;;2736:31;;;;;;;;;;;:::i;:::-;;;;;;;;2383:141;2514:1;2517;2485:34;;;;;;;;;;;;:::i;:::-;;;;;;;;792:92;865:5;872:6;857:22;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;792:92;:::o;2134:100::-;2227:1;2208:21;;;;;;;;;;;:::i;:::-;;;;;;;;1360:94;1413:1;;:3;;;;;;;;;:::i;:::-;;;;;;1429:20;;;;;;;;;;;;;;965:73;1027:5;1019:14;;;;;;965:73::o;1109:63::-;1161:5;1154:13;;;;;;;;;;;;1109:63::o;1684:128::-;1754:15;;;;;;;;;;;:51;;;:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1684:128::o;696:92::-;752:1;;:3;;;;;;;;;:::i;:::-;;;;;;769:5;776:6;761:22;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;696:92;:::o;622:70::-;667:4;686:1;;679:8;;622:70;:::o;1816:103::-;1876:1;;:3;;;;;;;;;:::i;:::-;;;;;;1912:1;1892:22;;;;;;;;;;;:::i;:::-;;;;;;;;542:76;575:1;;:3;;;;;;;;;:::i;:::-;;;;;;542:76::o;1556:124::-;1617:1;;:3;;;;;;;;;:::i;:::-;;;;;;1626:15;;;;;;;;;;;:47;;;:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1556:124::o;1923:103::-;2019:1;1999:22;;;;;;;;;;;:::i;:::-;;;;;;;;2030:100;2088:1;;:3;;;;;;;;;:::i;:::-;;;;;;2123:1;2104:21;;;;;;;;;;;:::i;:::-;;;;;;;;1458:94;1527:20;;;;;;;;;;;;;;1042:63;1078:1;;:3;;;;;;;;;:::i;:::-;;;;;;1094:5;1087:13;;;;;;;;;;;;1042:63::o;1176:88::-;1226:1;;:3;;;;;;;;;:::i;:::-;;;;;;1242:17;;;;;;;;;;;;;;2528:120;2596:1;;:3;;;;;;;;;:::i;:::-;;;;;;2632:10;;;;;;;;2637:1;2632:10;;;;2640:1;2632:10;;;2612:31;;;;;;;;;;;:::i;:::-;;;;;;;;2238:141;2324:1;;:3;;;;;;;;;:::i;:::-;;;;;;2369:1;2372;2340:34;;;;;;;;;;;;:::i;:::-;;;;;;;;1268:88;1334:17;;;;;;;;;;;;;;7:345:4;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:137::-;403:5;441:6;428:20;419:29;;457:32;483:5;457:32;:::i;:::-;409:86;;;;:::o;515:273::-;571:5;620:3;613:4;605:6;601:17;597:27;587:2;;638:1;635;628:12;587:2;678:6;665:20;703:79;778:3;770:6;763:4;755:6;751:17;703:79;:::i;:::-;694:88;;577:211;;;;;:::o;794:139::-;840:5;878:6;865:20;856:29;;894:33;921:5;894:33;:::i;:::-;846:87;;;;:::o;939:260::-;997:6;1046:2;1034:9;1025:7;1021:23;1017:32;1014:2;;;1062:1;1059;1052:12;1014:2;1105:1;1130:52;1174:7;1165:6;1154:9;1150:22;1130:52;:::i;:::-;1120:62;;1076:116;1004:195;;;;:::o;1205:375::-;1274:6;1323:2;1311:9;1302:7;1298:23;1294:32;1291:2;;;1339:1;1336;1329:12;1291:2;1410:1;1399:9;1395:17;1382:31;1440:18;1432:6;1429:30;1426:2;;;1472:1;1469;1462:12;1426:2;1500:63;1555:7;1546:6;1535:9;1531:22;1500:63;:::i;:::-;1490:73;;1353:220;1281:299;;;;:::o;1586:262::-;1645:6;1694:2;1682:9;1673:7;1669:23;1665:32;1662:2;;;1710:1;1707;1700:12;1662:2;1753:1;1778:53;1823:7;1814:6;1803:9;1799:22;1778:53;:::i;:::-;1768:63;;1724:117;1652:196;;;;:::o;1854:520::-;1932:6;1940;1989:2;1977:9;1968:7;1964:23;1960:32;1957:2;;;2005:1;2002;1995:12;1957:2;2048:1;2073:53;2118:7;2109:6;2098:9;2094:22;2073:53;:::i;:::-;2063:63;;2019:117;2203:2;2192:9;2188:18;2175:32;2234:18;2226:6;2223:30;2220:2;;;2266:1;2263;2256:12;2220:2;2294:63;2349:7;2340:6;2329:9;2325:22;2294:63;:::i;:::-;2284:73;;2146:221;1947:427;;;;;:::o;2380:407::-;2448:6;2456;2505:2;2493:9;2484:7;2480:23;2476:32;2473:2;;;2521:1;2518;2511:12;2473:2;2564:1;2589:53;2634:7;2625:6;2614:9;2610:22;2589:53;:::i;:::-;2579:63;;2535:117;2691:2;2717:53;2762:7;2753:6;2742:9;2738:22;2717:53;:::i;:::-;2707:63;;2662:118;2463:324;;;;;:::o;2793:115::-;2878:23;2895:5;2878:23;:::i;:::-;2873:3;2866:36;2856:52;;:::o;2914:364::-;3002:3;3030:39;3063:5;3030:39;:::i;:::-;3085:71;3149:6;3144:3;3085:71;:::i;:::-;3078:78;;3165:52;3210:6;3205:3;3198:4;3191:5;3187:16;3165:52;:::i;:::-;3242:29;3264:6;3242:29;:::i;:::-;3237:3;3233:39;3226:46;;3006:272;;;;;:::o;3336:493::-;3475:4;3470:3;3466:14;3559:4;3552:5;3548:16;3542:23;3578:63;3635:4;3630:3;3626:14;3612:12;3578:63;:::i;:::-;3490:161;3730:4;3723:5;3719:16;3713:23;3749:63;3806:4;3801:3;3797:14;3783:12;3749:63;:::i;:::-;3661:161;3444:385;;;:::o;3835:108::-;3912:24;3930:5;3912:24;:::i;:::-;3907:3;3900:37;3890:53;;:::o;3949:118::-;4036:24;4054:5;4036:24;:::i;:::-;4031:3;4024:37;4014:53;;:::o;4073:218::-;4164:4;4202:2;4191:9;4187:18;4179:26;;4215:69;4281:1;4270:9;4266:17;4257:6;4215:69;:::i;:::-;4169:122;;;;:::o;4297:313::-;4410:4;4448:2;4437:9;4433:18;4425:26;;4497:9;4491:4;4487:20;4483:1;4472:9;4468:17;4461:47;4525:78;4598:4;4589:6;4525:78;:::i;:::-;4517:86;;4415:195;;;;:::o;4616:306::-;4751:4;4789:2;4778:9;4774:18;4766:26;;4802:113;4912:1;4901:9;4897:17;4888:6;4802:113;:::i;:::-;4756:166;;;;:::o;4928:222::-;5021:4;5059:2;5048:9;5044:18;5036:26;;5072:71;5140:1;5129:9;5125:17;5116:6;5072:71;:::i;:::-;5026:124;;;;:::o;5156:423::-;5297:4;5335:2;5324:9;5320:18;5312:26;;5348:71;5416:1;5405:9;5401:17;5392:6;5348:71;:::i;:::-;5466:9;5460:4;5456:20;5451:2;5440:9;5436:18;5429:48;5494:78;5567:4;5558:6;5494:78;:::i;:::-;5486:86;;5302:277;;;;;:::o;5585:129::-;5619:6;5646:20;;:::i;:::-;5636:30;;5675:33;5703:4;5695:6;5675:33;:::i;:::-;5626:88;;;:::o;5720:75::-;5753:6;5786:2;5780:9;5770:19;;5760:35;:::o;5801:308::-;5863:4;5953:18;5945:6;5942:30;5939:2;;;5975:18;;:::i;:::-;5939:2;6013:29;6035:6;6013:29;:::i;:::-;6005:37;;6097:4;6091;6087:15;6079:23;;5868:241;;;:::o;6115:99::-;6167:6;6201:5;6195:12;6185:22;;6174:40;;;:::o;6220:169::-;6304:11;6338:6;6333:3;6326:19;6378:4;6373:3;6369:14;6354:29;;6316:73;;;;:::o;6395:76::-;6431:7;6460:5;6449:16;;6439:32;;;:::o;6477:77::-;6514:7;6543:5;6532:16;;6522:32;;;:::o;6560:154::-;6644:6;6639:3;6634;6621:30;6706:1;6697:6;6692:3;6688:16;6681:27;6611:103;;;:::o;6720:307::-;6788:1;6798:113;6812:6;6809:1;6806:13;6798:113;;;6897:1;6892:3;6888:11;6882:18;6878:1;6873:3;6869:11;6862:39;6834:2;6831:1;6827:10;6822:15;;6798:113;;;6929:6;6926:1;6923:13;6920:2;;;7009:1;7000:6;6995:3;6991:16;6984:27;6920:2;6769:258;;;;:::o;7033:281::-;7116:27;7138:4;7116:27;:::i;:::-;7108:6;7104:40;7246:6;7234:10;7231:22;7210:18;7198:10;7195:34;7192:62;7189:2;;;7257:18;;:::i;:::-;7189:2;7297:10;7293:2;7286:22;7076:238;;;:::o;7320:233::-;7359:3;7382:24;7400:5;7382:24;:::i;:::-;7373:33;;7428:66;7421:5;7418:77;7415:2;;;7498:18;;:::i;:::-;7415:2;7545:1;7538:5;7534:13;7527:20;;7363:190;;;:::o;7559:180::-;7607:77;7604:1;7597:88;7704:4;7701:1;7694:15;7728:4;7725:1;7718:15;7745:180;7793:77;7790:1;7783:88;7890:4;7887:1;7880:15;7914:4;7911:1;7904:15;7931:102;7972:6;8023:2;8019:7;8014:2;8007:5;8003:14;7999:28;7989:38;;7979:54;;;:::o;8039:120::-;8111:23;8128:5;8111:23;:::i;:::-;8104:5;8101:34;8091:2;;8149:1;8146;8139:12;8091:2;8081:78;:::o;8165:122::-;8238:24;8256:5;8238:24;:::i;:::-;8231:5;8228:35;8218:2;;8277:1;8274;8267:12;8218:2;8208:79;:::o"},"methodIdentifiers":{"panicAssert()":"b6bbe061","panicAssertView()":"5b94e31e","revertWithAnotherContractCustomError()":"772f243a","revertWithAnotherContractCustomErrorView()":"622051f1","revertWithAnotherCustomError()":"4b5bbf6a","revertWithAnotherCustomErrorView()":"aac014e0","revertWithCustomErrorWithInt(int256)":"8f933030","revertWithCustomErrorWithIntView(int256)":"47c56769","revertWithCustomErrorWithPair(uint256,uint256)":"e0a03812","revertWithCustomErrorWithPairView(uint256,uint256)":"1f542cf3","revertWithCustomErrorWithUint(uint256)":"73d2ea85","revertWithCustomErrorWithUintAndString(uint256,string)":"fe276a34","revertWithCustomErrorWithUintAndStringView(uint256,string)":"3ba4178b","revertWithCustomErrorWithUintView(uint256)":"7c3cb0af","revertWithSomeCustomError()":"bad92aa9","revertWithSomeCustomErrorView()":"ffb4746b","revertsWith(string)":"6f1fdc31","revertsWithView(string)":"467e3d37","revertsWithoutReason()":"1b4f3f3d","revertsWithoutReasonView()":"58a1d1ed","succeeds()":"74afd452","succeedsView()":"6fc588d2"}},"metadata":"{\"compiler\":{\"version\":\"0.8.4+commit.c7e474f2\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AnotherCustomError\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"CustomErrorWithInt\",\"type\":\"error\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"a\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"b\",\"type\":\"uint256\"}],\"internalType\":\"struct Matchers.Pair\",\"name\":\"\",\"type\":\"tuple\"}],\"name\":\"CustomErrorWithPair\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"nameToForceEthersToUseAnArrayLikeWithNamedProperties\",\"type\":\"uint256\"}],\"name\":\"CustomErrorWithUint\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"CustomErrorWithUintAndString\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SomeCustomError\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"SomeEvent\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"panicAssert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"panicAssertView\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"revertWithAnotherContractCustomError\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"revertWithAnotherContractCustomErrorView\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"revertWithAnotherCustomError\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"revertWithAnotherCustomErrorView\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"i\",\"type\":\"int256\"}],\"name\":\"revertWithCustomErrorWithInt\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"i\",\"type\":\"int256\"}],\"name\":\"revertWithCustomErrorWithIntView\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"a\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"b\",\"type\":\"uint256\"}],\"name\":\"revertWithCustomErrorWithPair\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"a\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"b\",\"type\":\"uint256\"}],\"name\":\"revertWithCustomErrorWithPairView\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"n\",\"type\":\"uint256\"}],\"name\":\"revertWithCustomErrorWithUint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"n\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"s\",\"type\":\"string\"}],\"name\":\"revertWithCustomErrorWithUintAndString\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"n\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"s\",\"type\":\"string\"}],\"name\":\"revertWithCustomErrorWithUintAndStringView\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"n\",\"type\":\"uint256\"}],\"name\":\"revertWithCustomErrorWithUintView\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"revertWithSomeCustomError\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"revertWithSomeCustomErrorView\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"revertsWith\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"revertsWithView\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"revertsWithoutReason\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"revertsWithoutReasonView\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"succeeds\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"succeedsView\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/Matchers.sol\":\"Matchers\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/Matchers.sol\":{\"keccak256\":\"0x5a69001d60d8f2498c88a26a86619900f4a7d1e7443adcb5f6bf73b112e659df\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://ca96217e25bd9b0beccc5038bcde4bb32fc71f7828c01e2254f7c6eb06b2ec1c\",\"dweb:/ipfs/QmaHs3KgdszUPBCWbYsxriReGFePSG1AE23BxSCa98cnT9\"]}},\"version\":1}"}},"contracts/Token.sol":{"MockToken":{"abi":[{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"remaining","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:516:4","statements":[{"body":{"nodeType":"YulBlock","src":"58:269:4","statements":[{"nodeType":"YulAssignment","src":"68:22:4","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"82:4:4"},{"kind":"number","nodeType":"YulLiteral","src":"88:1:4","type":"","value":"2"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"78:3:4"},"nodeType":"YulFunctionCall","src":"78:12:4"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"68:6:4"}]},{"nodeType":"YulVariableDeclaration","src":"99:38:4","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"129:4:4"},{"kind":"number","nodeType":"YulLiteral","src":"135:1:4","type":"","value":"1"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"125:3:4"},"nodeType":"YulFunctionCall","src":"125:12:4"},"variables":[{"name":"outOfPlaceEncoding","nodeType":"YulTypedName","src":"103:18:4","type":""}]},{"body":{"nodeType":"YulBlock","src":"176:51:4","statements":[{"nodeType":"YulAssignment","src":"190:27:4","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"204:6:4"},{"kind":"number","nodeType":"YulLiteral","src":"212:4:4","type":"","value":"0x7f"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"200:3:4"},"nodeType":"YulFunctionCall","src":"200:17:4"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"190:6:4"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"156:18:4"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"149:6:4"},"nodeType":"YulFunctionCall","src":"149:26:4"},"nodeType":"YulIf","src":"146:2:4"},{"body":{"nodeType":"YulBlock","src":"279:42:4","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x22","nodeType":"YulIdentifier","src":"293:16:4"},"nodeType":"YulFunctionCall","src":"293:18:4"},"nodeType":"YulExpressionStatement","src":"293:18:4"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"243:18:4"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"266:6:4"},{"kind":"number","nodeType":"YulLiteral","src":"274:2:4","type":"","value":"32"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"263:2:4"},"nodeType":"YulFunctionCall","src":"263:14:4"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"240:2:4"},"nodeType":"YulFunctionCall","src":"240:38:4"},"nodeType":"YulIf","src":"237:2:4"}]},"name":"extract_byte_array_length","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"42:4:4","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"51:6:4","type":""}],"src":"7:320:4"},{"body":{"nodeType":"YulBlock","src":"361:152:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"378:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"381:77:4","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"371:6:4"},"nodeType":"YulFunctionCall","src":"371:88:4"},"nodeType":"YulExpressionStatement","src":"371:88:4"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"475:1:4","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"478:4:4","type":"","value":"0x22"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"468:6:4"},"nodeType":"YulFunctionCall","src":"468:15:4"},"nodeType":"YulExpressionStatement","src":"468:15:4"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"499:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"502:4:4","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"492:6:4"},"nodeType":"YulFunctionCall","src":"492:15:4"},"nodeType":"YulExpressionStatement","src":"492:15:4"}]},"name":"panic_error_0x22","nodeType":"YulFunctionDefinition","src":"333:180:4"}]},"contents":"{\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 panic_error_0x22() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n\n}\n","id":4,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"608060405260016000556040518060400160405280600981526020017f4d6f636b546f6b656e000000000000000000000000000000000000000000000081525060049080519060200190620000569291906200010a565b506040518060400160405280600381526020017f4d434b000000000000000000000000000000000000000000000000000000000081525060059080519060200190620000a49291906200010a565b50348015620000b257600080fd5b50633b9aca00600181905550600154600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506200021f565b8280546200011890620001ba565b90600052602060002090601f0160209004810192826200013c576000855562000188565b82601f106200015757805160ff191683800117855562000188565b8280016001018555821562000188579182015b82811115620001875782518255916020019190600101906200016a565b5b5090506200019791906200019b565b5090565b5b80821115620001b65760008160009055506001016200019c565b5090565b60006002820490506001821680620001d357607f821691505b60208210811415620001ea57620001e9620001f0565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b610bad806200022f6000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c8063313ce56711610066578063313ce5671461013457806370a082311461015257806395d89b4114610182578063a9059cbb146101a0578063dd62ed3e146101d057610093565b806306fdde0314610098578063095ea7b3146100b657806318160ddd146100e657806323b872dd14610104575b600080fd5b6100a0610200565b6040516100ad91906108b8565b60405180910390f35b6100d060048036038101906100cb91906107c4565b61028e565b6040516100dd919061089d565b60405180910390f35b6100ee61031b565b6040516100fb919061091a565b60405180910390f35b61011e60048036038101906101199190610775565b610321565b60405161012b919061089d565b60405180910390f35b61013c6104b9565b604051610149919061091a565b60405180910390f35b61016c60048036038101906101679190610710565b6104bf565b604051610179919061091a565b60405180910390f35b61018a6104d7565b60405161019791906108b8565b60405180910390f35b6101ba60048036038101906101b591906107c4565b610565565b6040516101c7919061089d565b60405180910390f35b6101ea60048036038101906101e59190610739565b61065f565b6040516101f7919061091a565b60405180910390f35b6004805461020d90610a56565b80601f016020809104026020016040519081016040528092919081815260200182805461023990610a56565b80156102865780601f1061025b57610100808354040283529160200191610286565b820191906000526020600020905b81548152906001019060200180831161026957829003601f168201915b505050505081565b600081600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001905092915050565b60015481565b60008161032e853361065f565b101561036f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610366906108da565b60405180910390fd5b81600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546103fb91906109a7565b9250508190555081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461045191906109a7565b9250508190555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546104a79190610951565b92505081905550600190509392505050565b60005481565b60026020528060005260406000206000915090505481565b600580546104e490610a56565b80601f016020809104026020016040519081016040528092919081815260200182805461051090610a56565b801561055d5780601f106105325761010080835404028352916020019161055d565b820191906000526020600020905b81548152906001019060200180831161054057829003601f168201915b505050505081565b60008082116105a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105a0906108fa565b60405180910390fd5b81600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546105f891906109a7565b9250508190555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461064e9190610951565b925050819055506001905092915050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000813590506106f581610b49565b92915050565b60008135905061070a81610b60565b92915050565b60006020828403121561072257600080fd5b6000610730848285016106e6565b91505092915050565b6000806040838503121561074c57600080fd5b600061075a858286016106e6565b925050602061076b858286016106e6565b9150509250929050565b60008060006060848603121561078a57600080fd5b6000610798868287016106e6565b93505060206107a9868287016106e6565b92505060406107ba868287016106fb565b9150509250925092565b600080604083850312156107d757600080fd5b60006107e5858286016106e6565b92505060206107f6858286016106fb565b9150509250929050565b610809816109ed565b82525050565b600061081a82610935565b6108248185610940565b9350610834818560208601610a23565b61083d81610ae6565b840191505092915050565b6000610855601683610940565b915061086082610af7565b602082019050919050565b6000610878601983610940565b915061088382610b20565b602082019050919050565b61089781610a19565b82525050565b60006020820190506108b26000830184610800565b92915050565b600060208201905081810360008301526108d2818461080f565b905092915050565b600060208201905081810360008301526108f381610848565b9050919050565b600060208201905081810360008301526109138161086b565b9050919050565b600060208201905061092f600083018461088e565b92915050565b600081519050919050565b600082825260208201905092915050565b600061095c82610a19565b915061096783610a19565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561099c5761099b610a88565b5b828201905092915050565b60006109b282610a19565b91506109bd83610a19565b9250828210156109d0576109cf610a88565b5b828203905092915050565b60006109e6826109f9565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b83811015610a41578082015181840152602081019050610a26565b83811115610a50576000848401525b50505050565b60006002820490506001821680610a6e57607f821691505b60208210811415610a8257610a81610ab7565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f496e73756666696369656e7420616c6c6f77616e636500000000000000000000600082015250565b7f5472616e736665727265642076616c7565206973207a65726f00000000000000600082015250565b610b52816109db565b8114610b5d57600080fd5b50565b610b6981610a19565b8114610b7457600080fd5b5056fea26469706673582212208ce961870c9d6cd505270df5da0c70d49a8f6cb7e04d5a03b16637783be136e764736f6c63430008040033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x1 PUSH1 0x0 SSTORE PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x9 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x4D6F636B546F6B656E0000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x4 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH3 0x56 SWAP3 SWAP2 SWAP1 PUSH3 0x10A JUMP JUMPDEST POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x4D434B0000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x5 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH3 0xA4 SWAP3 SWAP2 SWAP1 PUSH3 0x10A JUMP JUMPDEST POP CALLVALUE DUP1 ISZERO PUSH3 0xB2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH4 0x3B9ACA00 PUSH1 0x1 DUP2 SWAP1 SSTORE POP PUSH1 0x1 SLOAD 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 DUP2 SWAP1 SSTORE POP PUSH3 0x21F JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH3 0x118 SWAP1 PUSH3 0x1BA JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH3 0x13C JUMPI PUSH1 0x0 DUP6 SSTORE PUSH3 0x188 JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH3 0x157 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x188 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x188 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x187 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0x16A JUMP JUMPDEST JUMPDEST POP SWAP1 POP PUSH3 0x197 SWAP2 SWAP1 PUSH3 0x19B JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x1B6 JUMPI PUSH1 0x0 DUP2 PUSH1 0x0 SWAP1 SSTORE POP PUSH1 0x1 ADD PUSH3 0x19C JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x2 DUP3 DIV SWAP1 POP PUSH1 0x1 DUP3 AND DUP1 PUSH3 0x1D3 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 EQ ISZERO PUSH3 0x1EA JUMPI PUSH3 0x1E9 PUSH3 0x1F0 JUMP JUMPDEST JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH2 0xBAD DUP1 PUSH3 0x22F PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x93 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x313CE567 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x134 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x152 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x182 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x1A0 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x1D0 JUMPI PUSH2 0x93 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x98 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0xB6 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0xE6 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x104 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA0 PUSH2 0x200 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xAD SWAP2 SWAP1 PUSH2 0x8B8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xD0 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xCB SWAP2 SWAP1 PUSH2 0x7C4 JUMP JUMPDEST PUSH2 0x28E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xDD SWAP2 SWAP1 PUSH2 0x89D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xEE PUSH2 0x31B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xFB SWAP2 SWAP1 PUSH2 0x91A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x11E PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x119 SWAP2 SWAP1 PUSH2 0x775 JUMP JUMPDEST PUSH2 0x321 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x12B SWAP2 SWAP1 PUSH2 0x89D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x13C PUSH2 0x4B9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x149 SWAP2 SWAP1 PUSH2 0x91A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x16C PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x167 SWAP2 SWAP1 PUSH2 0x710 JUMP JUMPDEST PUSH2 0x4BF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x179 SWAP2 SWAP1 PUSH2 0x91A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x18A PUSH2 0x4D7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x197 SWAP2 SWAP1 PUSH2 0x8B8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1BA PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1B5 SWAP2 SWAP1 PUSH2 0x7C4 JUMP JUMPDEST PUSH2 0x565 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1C7 SWAP2 SWAP1 PUSH2 0x89D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1EA PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1E5 SWAP2 SWAP1 PUSH2 0x739 JUMP JUMPDEST PUSH2 0x65F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1F7 SWAP2 SWAP1 PUSH2 0x91A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH2 0x20D SWAP1 PUSH2 0xA56 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 0x239 SWAP1 PUSH2 0xA56 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x286 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x25B JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x286 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 0x269 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x3 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 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP PUSH1 0x1 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x32E DUP6 CALLER PUSH2 0x65F JUMP JUMPDEST LT ISZERO PUSH2 0x36F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x366 SWAP1 PUSH2 0x8DA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 PUSH1 0x3 PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 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 0x3FB SWAP2 SWAP1 PUSH2 0x9A7 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x2 PUSH1 0x0 DUP7 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 0x451 SWAP2 SWAP1 PUSH2 0x9A7 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x2 PUSH1 0x0 DUP6 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 0x4A7 SWAP2 SWAP1 PUSH2 0x951 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH1 0x1 SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD 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 0x5 DUP1 SLOAD PUSH2 0x4E4 SWAP1 PUSH2 0xA56 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 0x510 SWAP1 PUSH2 0xA56 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x55D JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x532 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x55D 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 0x540 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 GT PUSH2 0x5A9 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5A0 SWAP1 PUSH2 0x8FA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 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 0x5F8 SWAP2 SWAP1 PUSH2 0x9A7 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x2 PUSH1 0x0 DUP6 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 0x64E SWAP2 SWAP1 PUSH2 0x951 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH1 0x1 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x3 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x6F5 DUP2 PUSH2 0xB49 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x70A DUP2 PUSH2 0xB60 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x722 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x730 DUP5 DUP3 DUP6 ADD PUSH2 0x6E6 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x74C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x75A DUP6 DUP3 DUP7 ADD PUSH2 0x6E6 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x76B DUP6 DUP3 DUP7 ADD PUSH2 0x6E6 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x78A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x798 DUP7 DUP3 DUP8 ADD PUSH2 0x6E6 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x7A9 DUP7 DUP3 DUP8 ADD PUSH2 0x6E6 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x7BA DUP7 DUP3 DUP8 ADD PUSH2 0x6FB JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x7D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x7E5 DUP6 DUP3 DUP7 ADD PUSH2 0x6E6 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x7F6 DUP6 DUP3 DUP7 ADD PUSH2 0x6FB JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH2 0x809 DUP2 PUSH2 0x9ED JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x81A DUP3 PUSH2 0x935 JUMP JUMPDEST PUSH2 0x824 DUP2 DUP6 PUSH2 0x940 JUMP JUMPDEST SWAP4 POP PUSH2 0x834 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0xA23 JUMP JUMPDEST PUSH2 0x83D DUP2 PUSH2 0xAE6 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x855 PUSH1 0x16 DUP4 PUSH2 0x940 JUMP JUMPDEST SWAP2 POP PUSH2 0x860 DUP3 PUSH2 0xAF7 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x878 PUSH1 0x19 DUP4 PUSH2 0x940 JUMP JUMPDEST SWAP2 POP PUSH2 0x883 DUP3 PUSH2 0xB20 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x897 DUP2 PUSH2 0xA19 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x8B2 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x800 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 0x8D2 DUP2 DUP5 PUSH2 0x80F 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 0x8F3 DUP2 PUSH2 0x848 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 0x913 DUP2 PUSH2 0x86B JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x92F PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x88E JUMP JUMPDEST SWAP3 SWAP2 POP 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 0x95C DUP3 PUSH2 0xA19 JUMP JUMPDEST SWAP2 POP PUSH2 0x967 DUP4 PUSH2 0xA19 JUMP JUMPDEST SWAP3 POP DUP3 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SUB DUP3 GT ISZERO PUSH2 0x99C JUMPI PUSH2 0x99B PUSH2 0xA88 JUMP JUMPDEST JUMPDEST DUP3 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9B2 DUP3 PUSH2 0xA19 JUMP JUMPDEST SWAP2 POP PUSH2 0x9BD DUP4 PUSH2 0xA19 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 LT ISZERO PUSH2 0x9D0 JUMPI PUSH2 0x9CF PUSH2 0xA88 JUMP JUMPDEST JUMPDEST DUP3 DUP3 SUB SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9E6 DUP3 PUSH2 0x9F9 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO ISZERO 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 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xA41 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0xA26 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0xA50 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 0xA6E JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 EQ ISZERO PUSH2 0xA82 JUMPI PUSH2 0xA81 PUSH2 0xAB7 JUMP JUMPDEST JUMPDEST POP SWAP2 SWAP1 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 PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x496E73756666696369656E7420616C6C6F77616E636500000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH32 0x5472616E736665727265642076616C7565206973207A65726F00000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH2 0xB52 DUP2 PUSH2 0x9DB JUMP JUMPDEST DUP2 EQ PUSH2 0xB5D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0xB69 DUP2 PUSH2 0xA19 JUMP JUMPDEST DUP2 EQ PUSH2 0xB74 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP13 0xE9 PUSH2 0x870C SWAP14 PUSH13 0xD505270DF5DA0C70D49A8F6CB7 0xE0 0x4D GAS SUB 0xB1 PUSH7 0x37783BE136E764 PUSH20 0x6F6C634300080400330000000000000000000000 ","sourceMap":"1241:119:3:-:0;;;119:1;96:24;;1293:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1329:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1241:119;;;;;;;;;;292:13;278:11;:27;;;;335:11;;311:9;:21;321:10;311:21;;;;;;;;;;;;;;;:35;;;;1241:119;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;7:320:4:-;51:6;88:1;82:4;78:12;68:22;;135:1;129:4;125:12;156:18;146:2;;212:4;204:6;200:17;190:27;;146:2;274;266:6;263:14;243:18;240:38;237:2;;;293:18;;:::i;:::-;237:2;58:269;;;;:::o;333:180::-;381:77;378:1;371:88;478:4;475:1;468:15;502:4;499:1;492:15;1241:119:3;;;;;;;"},"deployedBytecode":{"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:7847:4","statements":[{"body":{"nodeType":"YulBlock","src":"59:87:4","statements":[{"nodeType":"YulAssignment","src":"69:29:4","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"91:6:4"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"78:12:4"},"nodeType":"YulFunctionCall","src":"78:20:4"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"69:5:4"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"134:5:4"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"107:26:4"},"nodeType":"YulFunctionCall","src":"107:33:4"},"nodeType":"YulExpressionStatement","src":"107:33:4"}]},"name":"abi_decode_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"37:6:4","type":""},{"name":"end","nodeType":"YulTypedName","src":"45:3:4","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"53:5:4","type":""}],"src":"7:139:4"},{"body":{"nodeType":"YulBlock","src":"204:87:4","statements":[{"nodeType":"YulAssignment","src":"214:29:4","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"236:6:4"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"223:12:4"},"nodeType":"YulFunctionCall","src":"223:20:4"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"214:5:4"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"279:5:4"}],"functionName":{"name":"validator_revert_t_uint256","nodeType":"YulIdentifier","src":"252:26:4"},"nodeType":"YulFunctionCall","src":"252:33:4"},"nodeType":"YulExpressionStatement","src":"252:33:4"}]},"name":"abi_decode_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"182:6:4","type":""},{"name":"end","nodeType":"YulTypedName","src":"190:3:4","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"198:5:4","type":""}],"src":"152:139:4"},{"body":{"nodeType":"YulBlock","src":"363:196:4","statements":[{"body":{"nodeType":"YulBlock","src":"409:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"418:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"421:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"411:6:4"},"nodeType":"YulFunctionCall","src":"411:12:4"},"nodeType":"YulExpressionStatement","src":"411:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"384:7:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"393:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"380:3:4"},"nodeType":"YulFunctionCall","src":"380:23:4"},{"kind":"number","nodeType":"YulLiteral","src":"405:2:4","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"376:3:4"},"nodeType":"YulFunctionCall","src":"376:32:4"},"nodeType":"YulIf","src":"373:2:4"},{"nodeType":"YulBlock","src":"435:117:4","statements":[{"nodeType":"YulVariableDeclaration","src":"450:15:4","value":{"kind":"number","nodeType":"YulLiteral","src":"464:1:4","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"454:6:4","type":""}]},{"nodeType":"YulAssignment","src":"479:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"514:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"525:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"510:3:4"},"nodeType":"YulFunctionCall","src":"510:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"534:7:4"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"489:20:4"},"nodeType":"YulFunctionCall","src":"489:53:4"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"479:6:4"}]}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"333:9:4","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"344:7:4","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"356:6:4","type":""}],"src":"297:262:4"},{"body":{"nodeType":"YulBlock","src":"648:324:4","statements":[{"body":{"nodeType":"YulBlock","src":"694:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"703:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"706:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"696:6:4"},"nodeType":"YulFunctionCall","src":"696:12:4"},"nodeType":"YulExpressionStatement","src":"696:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"669:7:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"678:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"665:3:4"},"nodeType":"YulFunctionCall","src":"665:23:4"},{"kind":"number","nodeType":"YulLiteral","src":"690:2:4","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"661:3:4"},"nodeType":"YulFunctionCall","src":"661:32:4"},"nodeType":"YulIf","src":"658:2:4"},{"nodeType":"YulBlock","src":"720:117:4","statements":[{"nodeType":"YulVariableDeclaration","src":"735:15:4","value":{"kind":"number","nodeType":"YulLiteral","src":"749:1:4","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"739:6:4","type":""}]},{"nodeType":"YulAssignment","src":"764:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"799:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"810:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"795:3:4"},"nodeType":"YulFunctionCall","src":"795:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"819:7:4"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"774:20:4"},"nodeType":"YulFunctionCall","src":"774:53:4"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"764:6:4"}]}]},{"nodeType":"YulBlock","src":"847:118:4","statements":[{"nodeType":"YulVariableDeclaration","src":"862:16:4","value":{"kind":"number","nodeType":"YulLiteral","src":"876:2:4","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"866:6:4","type":""}]},{"nodeType":"YulAssignment","src":"892:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"927:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"938:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"923:3:4"},"nodeType":"YulFunctionCall","src":"923:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"947:7:4"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"902:20:4"},"nodeType":"YulFunctionCall","src":"902:53:4"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"892:6:4"}]}]}]},"name":"abi_decode_tuple_t_addresst_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"610:9:4","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"621:7:4","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"633:6:4","type":""},{"name":"value1","nodeType":"YulTypedName","src":"641:6:4","type":""}],"src":"565:407:4"},{"body":{"nodeType":"YulBlock","src":"1078:452:4","statements":[{"body":{"nodeType":"YulBlock","src":"1124:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1133:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1136:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1126:6:4"},"nodeType":"YulFunctionCall","src":"1126:12:4"},"nodeType":"YulExpressionStatement","src":"1126:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1099:7:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"1108:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1095:3:4"},"nodeType":"YulFunctionCall","src":"1095:23:4"},{"kind":"number","nodeType":"YulLiteral","src":"1120:2:4","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1091:3:4"},"nodeType":"YulFunctionCall","src":"1091:32:4"},"nodeType":"YulIf","src":"1088:2:4"},{"nodeType":"YulBlock","src":"1150:117:4","statements":[{"nodeType":"YulVariableDeclaration","src":"1165:15:4","value":{"kind":"number","nodeType":"YulLiteral","src":"1179:1:4","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1169:6:4","type":""}]},{"nodeType":"YulAssignment","src":"1194:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1229:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"1240:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1225:3:4"},"nodeType":"YulFunctionCall","src":"1225:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1249:7:4"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"1204:20:4"},"nodeType":"YulFunctionCall","src":"1204:53:4"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1194:6:4"}]}]},{"nodeType":"YulBlock","src":"1277:118:4","statements":[{"nodeType":"YulVariableDeclaration","src":"1292:16:4","value":{"kind":"number","nodeType":"YulLiteral","src":"1306:2:4","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1296:6:4","type":""}]},{"nodeType":"YulAssignment","src":"1322:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1357:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"1368:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1353:3:4"},"nodeType":"YulFunctionCall","src":"1353:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1377:7:4"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"1332:20:4"},"nodeType":"YulFunctionCall","src":"1332:53:4"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1322:6:4"}]}]},{"nodeType":"YulBlock","src":"1405:118:4","statements":[{"nodeType":"YulVariableDeclaration","src":"1420:16:4","value":{"kind":"number","nodeType":"YulLiteral","src":"1434:2:4","type":"","value":"64"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1424:6:4","type":""}]},{"nodeType":"YulAssignment","src":"1450:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1485:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"1496:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1481:3:4"},"nodeType":"YulFunctionCall","src":"1481:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1505:7:4"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"1460:20:4"},"nodeType":"YulFunctionCall","src":"1460:53:4"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"1450:6:4"}]}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1032:9:4","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1043:7:4","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1055:6:4","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1063:6:4","type":""},{"name":"value2","nodeType":"YulTypedName","src":"1071:6:4","type":""}],"src":"978:552:4"},{"body":{"nodeType":"YulBlock","src":"1619:324:4","statements":[{"body":{"nodeType":"YulBlock","src":"1665:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1674:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1677:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1667:6:4"},"nodeType":"YulFunctionCall","src":"1667:12:4"},"nodeType":"YulExpressionStatement","src":"1667:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1640:7:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"1649:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1636:3:4"},"nodeType":"YulFunctionCall","src":"1636:23:4"},{"kind":"number","nodeType":"YulLiteral","src":"1661:2:4","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1632:3:4"},"nodeType":"YulFunctionCall","src":"1632:32:4"},"nodeType":"YulIf","src":"1629:2:4"},{"nodeType":"YulBlock","src":"1691:117:4","statements":[{"nodeType":"YulVariableDeclaration","src":"1706:15:4","value":{"kind":"number","nodeType":"YulLiteral","src":"1720:1:4","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1710:6:4","type":""}]},{"nodeType":"YulAssignment","src":"1735:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1770:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"1781:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1766:3:4"},"nodeType":"YulFunctionCall","src":"1766:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1790:7:4"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"1745:20:4"},"nodeType":"YulFunctionCall","src":"1745:53:4"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1735:6:4"}]}]},{"nodeType":"YulBlock","src":"1818:118:4","statements":[{"nodeType":"YulVariableDeclaration","src":"1833:16:4","value":{"kind":"number","nodeType":"YulLiteral","src":"1847:2:4","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1837:6:4","type":""}]},{"nodeType":"YulAssignment","src":"1863:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1898:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"1909:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1894:3:4"},"nodeType":"YulFunctionCall","src":"1894:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1918:7:4"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"1873:20:4"},"nodeType":"YulFunctionCall","src":"1873:53:4"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1863:6:4"}]}]}]},"name":"abi_decode_tuple_t_addresst_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1581:9:4","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1592:7:4","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1604:6:4","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1612:6:4","type":""}],"src":"1536:407:4"},{"body":{"nodeType":"YulBlock","src":"2008:50:4","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2025:3:4"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2045:5:4"}],"functionName":{"name":"cleanup_t_bool","nodeType":"YulIdentifier","src":"2030:14:4"},"nodeType":"YulFunctionCall","src":"2030:21:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2018:6:4"},"nodeType":"YulFunctionCall","src":"2018:34:4"},"nodeType":"YulExpressionStatement","src":"2018:34:4"}]},"name":"abi_encode_t_bool_to_t_bool_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1996:5:4","type":""},{"name":"pos","nodeType":"YulTypedName","src":"2003:3:4","type":""}],"src":"1949:109:4"},{"body":{"nodeType":"YulBlock","src":"2156:272:4","statements":[{"nodeType":"YulVariableDeclaration","src":"2166:53:4","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2213:5:4"}],"functionName":{"name":"array_length_t_string_memory_ptr","nodeType":"YulIdentifier","src":"2180:32:4"},"nodeType":"YulFunctionCall","src":"2180:39:4"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"2170:6:4","type":""}]},{"nodeType":"YulAssignment","src":"2228:78:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2294:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"2299:6:4"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"2235:58:4"},"nodeType":"YulFunctionCall","src":"2235:71:4"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"2228:3:4"}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2341:5:4"},{"kind":"number","nodeType":"YulLiteral","src":"2348:4:4","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2337:3:4"},"nodeType":"YulFunctionCall","src":"2337:16:4"},{"name":"pos","nodeType":"YulIdentifier","src":"2355:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"2360:6:4"}],"functionName":{"name":"copy_memory_to_memory","nodeType":"YulIdentifier","src":"2315:21:4"},"nodeType":"YulFunctionCall","src":"2315:52:4"},"nodeType":"YulExpressionStatement","src":"2315:52:4"},{"nodeType":"YulAssignment","src":"2376:46:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2387:3:4"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"2414:6:4"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"2392:21:4"},"nodeType":"YulFunctionCall","src":"2392:29:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2383:3:4"},"nodeType":"YulFunctionCall","src":"2383:39:4"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"2376:3:4"}]}]},"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"2137:5:4","type":""},{"name":"pos","nodeType":"YulTypedName","src":"2144:3:4","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"2152:3:4","type":""}],"src":"2064:364:4"},{"body":{"nodeType":"YulBlock","src":"2580:220:4","statements":[{"nodeType":"YulAssignment","src":"2590:74:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2656:3:4"},{"kind":"number","nodeType":"YulLiteral","src":"2661:2:4","type":"","value":"22"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"2597:58:4"},"nodeType":"YulFunctionCall","src":"2597:67:4"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"2590:3:4"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2762:3:4"}],"functionName":{"name":"store_literal_in_memory_45e3d26e36c3151c7f92a1eee9add9658cbb8e14605ee2452ec007389b9744bc","nodeType":"YulIdentifier","src":"2673:88:4"},"nodeType":"YulFunctionCall","src":"2673:93:4"},"nodeType":"YulExpressionStatement","src":"2673:93:4"},{"nodeType":"YulAssignment","src":"2775:19:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2786:3:4"},{"kind":"number","nodeType":"YulLiteral","src":"2791:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2782:3:4"},"nodeType":"YulFunctionCall","src":"2782:12:4"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"2775:3:4"}]}]},"name":"abi_encode_t_stringliteral_45e3d26e36c3151c7f92a1eee9add9658cbb8e14605ee2452ec007389b9744bc_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"2568:3:4","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"2576:3:4","type":""}],"src":"2434:366:4"},{"body":{"nodeType":"YulBlock","src":"2952:220:4","statements":[{"nodeType":"YulAssignment","src":"2962:74:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3028:3:4"},{"kind":"number","nodeType":"YulLiteral","src":"3033:2:4","type":"","value":"25"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"2969:58:4"},"nodeType":"YulFunctionCall","src":"2969:67:4"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"2962:3:4"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3134:3:4"}],"functionName":{"name":"store_literal_in_memory_4ca3cd75a1831a94a24913bfd2c9b9d35acbb11ac3447f65bb0682cf14f63f5c","nodeType":"YulIdentifier","src":"3045:88:4"},"nodeType":"YulFunctionCall","src":"3045:93:4"},"nodeType":"YulExpressionStatement","src":"3045:93:4"},{"nodeType":"YulAssignment","src":"3147:19:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3158:3:4"},{"kind":"number","nodeType":"YulLiteral","src":"3163:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3154:3:4"},"nodeType":"YulFunctionCall","src":"3154:12:4"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"3147:3:4"}]}]},"name":"abi_encode_t_stringliteral_4ca3cd75a1831a94a24913bfd2c9b9d35acbb11ac3447f65bb0682cf14f63f5c_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"2940:3:4","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"2948:3:4","type":""}],"src":"2806:366:4"},{"body":{"nodeType":"YulBlock","src":"3243:53:4","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3260:3:4"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3283:5:4"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"3265:17:4"},"nodeType":"YulFunctionCall","src":"3265:24:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3253:6:4"},"nodeType":"YulFunctionCall","src":"3253:37:4"},"nodeType":"YulExpressionStatement","src":"3253:37:4"}]},"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"3231:5:4","type":""},{"name":"pos","nodeType":"YulTypedName","src":"3238:3:4","type":""}],"src":"3178:118:4"},{"body":{"nodeType":"YulBlock","src":"3394:118:4","statements":[{"nodeType":"YulAssignment","src":"3404:26:4","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3416:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"3427:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3412:3:4"},"nodeType":"YulFunctionCall","src":"3412:18:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3404:4:4"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3478:6:4"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3491:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"3502:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3487:3:4"},"nodeType":"YulFunctionCall","src":"3487:17:4"}],"functionName":{"name":"abi_encode_t_bool_to_t_bool_fromStack","nodeType":"YulIdentifier","src":"3440:37:4"},"nodeType":"YulFunctionCall","src":"3440:65:4"},"nodeType":"YulExpressionStatement","src":"3440:65:4"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3366:9:4","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3378:6:4","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3389:4:4","type":""}],"src":"3302:210:4"},{"body":{"nodeType":"YulBlock","src":"3636:195:4","statements":[{"nodeType":"YulAssignment","src":"3646:26:4","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3658:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"3669:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3654:3:4"},"nodeType":"YulFunctionCall","src":"3654:18:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3646:4:4"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3693:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"3704:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3689:3:4"},"nodeType":"YulFunctionCall","src":"3689:17:4"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"3712:4:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"3718:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3708:3:4"},"nodeType":"YulFunctionCall","src":"3708:20:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3682:6:4"},"nodeType":"YulFunctionCall","src":"3682:47:4"},"nodeType":"YulExpressionStatement","src":"3682:47:4"},{"nodeType":"YulAssignment","src":"3738:86:4","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3810:6:4"},{"name":"tail","nodeType":"YulIdentifier","src":"3819:4:4"}],"functionName":{"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"3746:63:4"},"nodeType":"YulFunctionCall","src":"3746:78:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3738:4:4"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3608:9:4","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3620:6:4","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3631:4:4","type":""}],"src":"3518:313:4"},{"body":{"nodeType":"YulBlock","src":"4008:248:4","statements":[{"nodeType":"YulAssignment","src":"4018:26:4","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4030:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"4041:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4026:3:4"},"nodeType":"YulFunctionCall","src":"4026:18:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4018:4:4"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4065:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"4076:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4061:3:4"},"nodeType":"YulFunctionCall","src":"4061:17:4"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"4084:4:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"4090:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4080:3:4"},"nodeType":"YulFunctionCall","src":"4080:20:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4054:6:4"},"nodeType":"YulFunctionCall","src":"4054:47:4"},"nodeType":"YulExpressionStatement","src":"4054:47:4"},{"nodeType":"YulAssignment","src":"4110:139:4","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"4244:4:4"}],"functionName":{"name":"abi_encode_t_stringliteral_45e3d26e36c3151c7f92a1eee9add9658cbb8e14605ee2452ec007389b9744bc_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"4118:124:4"},"nodeType":"YulFunctionCall","src":"4118:131:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4110:4:4"}]}]},"name":"abi_encode_tuple_t_stringliteral_45e3d26e36c3151c7f92a1eee9add9658cbb8e14605ee2452ec007389b9744bc__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3988:9:4","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4003:4:4","type":""}],"src":"3837:419:4"},{"body":{"nodeType":"YulBlock","src":"4433:248:4","statements":[{"nodeType":"YulAssignment","src":"4443:26:4","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4455:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"4466:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4451:3:4"},"nodeType":"YulFunctionCall","src":"4451:18:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4443:4:4"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4490:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"4501:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4486:3:4"},"nodeType":"YulFunctionCall","src":"4486:17:4"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"4509:4:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"4515:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4505:3:4"},"nodeType":"YulFunctionCall","src":"4505:20:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4479:6:4"},"nodeType":"YulFunctionCall","src":"4479:47:4"},"nodeType":"YulExpressionStatement","src":"4479:47:4"},{"nodeType":"YulAssignment","src":"4535:139:4","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"4669:4:4"}],"functionName":{"name":"abi_encode_t_stringliteral_4ca3cd75a1831a94a24913bfd2c9b9d35acbb11ac3447f65bb0682cf14f63f5c_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"4543:124:4"},"nodeType":"YulFunctionCall","src":"4543:131:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4535:4:4"}]}]},"name":"abi_encode_tuple_t_stringliteral_4ca3cd75a1831a94a24913bfd2c9b9d35acbb11ac3447f65bb0682cf14f63f5c__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4413:9:4","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4428:4:4","type":""}],"src":"4262:419:4"},{"body":{"nodeType":"YulBlock","src":"4785:124:4","statements":[{"nodeType":"YulAssignment","src":"4795:26:4","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4807:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"4818:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4803:3:4"},"nodeType":"YulFunctionCall","src":"4803:18:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4795:4:4"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4875:6:4"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4888:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"4899:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4884:3:4"},"nodeType":"YulFunctionCall","src":"4884:17:4"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"4831:43:4"},"nodeType":"YulFunctionCall","src":"4831:71:4"},"nodeType":"YulExpressionStatement","src":"4831:71:4"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4757:9:4","type":""},{"name":"value0","nodeType":"YulTypedName","src":"4769:6:4","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4780:4:4","type":""}],"src":"4687:222:4"},{"body":{"nodeType":"YulBlock","src":"4974:40:4","statements":[{"nodeType":"YulAssignment","src":"4985:22:4","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5001:5:4"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4995:5:4"},"nodeType":"YulFunctionCall","src":"4995:12:4"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"4985:6:4"}]}]},"name":"array_length_t_string_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"4957:5:4","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"4967:6:4","type":""}],"src":"4915:99:4"},{"body":{"nodeType":"YulBlock","src":"5116:73:4","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5133:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"5138:6:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5126:6:4"},"nodeType":"YulFunctionCall","src":"5126:19:4"},"nodeType":"YulExpressionStatement","src":"5126:19:4"},{"nodeType":"YulAssignment","src":"5154:29:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5173:3:4"},{"kind":"number","nodeType":"YulLiteral","src":"5178:4:4","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5169:3:4"},"nodeType":"YulFunctionCall","src":"5169:14:4"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"5154:11:4"}]}]},"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"5088:3:4","type":""},{"name":"length","nodeType":"YulTypedName","src":"5093:6:4","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"5104:11:4","type":""}],"src":"5020:169:4"},{"body":{"nodeType":"YulBlock","src":"5239:261:4","statements":[{"nodeType":"YulAssignment","src":"5249:25:4","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"5272:1:4"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"5254:17:4"},"nodeType":"YulFunctionCall","src":"5254:20:4"},"variableNames":[{"name":"x","nodeType":"YulIdentifier","src":"5249:1:4"}]},{"nodeType":"YulAssignment","src":"5283:25:4","value":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"5306:1:4"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"5288:17:4"},"nodeType":"YulFunctionCall","src":"5288:20:4"},"variableNames":[{"name":"y","nodeType":"YulIdentifier","src":"5283:1:4"}]},{"body":{"nodeType":"YulBlock","src":"5446:22:4","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"5448:16:4"},"nodeType":"YulFunctionCall","src":"5448:18:4"},"nodeType":"YulExpressionStatement","src":"5448:18:4"}]},"condition":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"5367:1:4"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5374:66:4","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"},{"name":"y","nodeType":"YulIdentifier","src":"5442:1:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5370:3:4"},"nodeType":"YulFunctionCall","src":"5370:74:4"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5364:2:4"},"nodeType":"YulFunctionCall","src":"5364:81:4"},"nodeType":"YulIf","src":"5361:2:4"},{"nodeType":"YulAssignment","src":"5478:16:4","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"5489:1:4"},{"name":"y","nodeType":"YulIdentifier","src":"5492:1:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5485:3:4"},"nodeType":"YulFunctionCall","src":"5485:9:4"},"variableNames":[{"name":"sum","nodeType":"YulIdentifier","src":"5478:3:4"}]}]},"name":"checked_add_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"5226:1:4","type":""},{"name":"y","nodeType":"YulTypedName","src":"5229:1:4","type":""}],"returnVariables":[{"name":"sum","nodeType":"YulTypedName","src":"5235:3:4","type":""}],"src":"5195:305:4"},{"body":{"nodeType":"YulBlock","src":"5551:146:4","statements":[{"nodeType":"YulAssignment","src":"5561:25:4","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"5584:1:4"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"5566:17:4"},"nodeType":"YulFunctionCall","src":"5566:20:4"},"variableNames":[{"name":"x","nodeType":"YulIdentifier","src":"5561:1:4"}]},{"nodeType":"YulAssignment","src":"5595:25:4","value":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"5618:1:4"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"5600:17:4"},"nodeType":"YulFunctionCall","src":"5600:20:4"},"variableNames":[{"name":"y","nodeType":"YulIdentifier","src":"5595:1:4"}]},{"body":{"nodeType":"YulBlock","src":"5642:22:4","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"5644:16:4"},"nodeType":"YulFunctionCall","src":"5644:18:4"},"nodeType":"YulExpressionStatement","src":"5644:18:4"}]},"condition":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"5636:1:4"},{"name":"y","nodeType":"YulIdentifier","src":"5639:1:4"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"5633:2:4"},"nodeType":"YulFunctionCall","src":"5633:8:4"},"nodeType":"YulIf","src":"5630:2:4"},{"nodeType":"YulAssignment","src":"5674:17:4","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"5686:1:4"},{"name":"y","nodeType":"YulIdentifier","src":"5689:1:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5682:3:4"},"nodeType":"YulFunctionCall","src":"5682:9:4"},"variableNames":[{"name":"diff","nodeType":"YulIdentifier","src":"5674:4:4"}]}]},"name":"checked_sub_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"5537:1:4","type":""},{"name":"y","nodeType":"YulTypedName","src":"5540:1:4","type":""}],"returnVariables":[{"name":"diff","nodeType":"YulTypedName","src":"5546:4:4","type":""}],"src":"5506:191:4"},{"body":{"nodeType":"YulBlock","src":"5748:51:4","statements":[{"nodeType":"YulAssignment","src":"5758:35:4","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5787:5:4"}],"functionName":{"name":"cleanup_t_uint160","nodeType":"YulIdentifier","src":"5769:17:4"},"nodeType":"YulFunctionCall","src":"5769:24:4"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"5758:7:4"}]}]},"name":"cleanup_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"5730:5:4","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"5740:7:4","type":""}],"src":"5703:96:4"},{"body":{"nodeType":"YulBlock","src":"5847:48:4","statements":[{"nodeType":"YulAssignment","src":"5857:32:4","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5882:5:4"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"5875:6:4"},"nodeType":"YulFunctionCall","src":"5875:13:4"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"5868:6:4"},"nodeType":"YulFunctionCall","src":"5868:21:4"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"5857:7:4"}]}]},"name":"cleanup_t_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"5829:5:4","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"5839:7:4","type":""}],"src":"5805:90:4"},{"body":{"nodeType":"YulBlock","src":"5946:81:4","statements":[{"nodeType":"YulAssignment","src":"5956:65:4","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5971:5:4"},{"kind":"number","nodeType":"YulLiteral","src":"5978:42:4","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5967:3:4"},"nodeType":"YulFunctionCall","src":"5967:54:4"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"5956:7:4"}]}]},"name":"cleanup_t_uint160","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"5928:5:4","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"5938:7:4","type":""}],"src":"5901:126:4"},{"body":{"nodeType":"YulBlock","src":"6078:32:4","statements":[{"nodeType":"YulAssignment","src":"6088:16:4","value":{"name":"value","nodeType":"YulIdentifier","src":"6099:5:4"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"6088:7:4"}]}]},"name":"cleanup_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"6060:5:4","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"6070:7:4","type":""}],"src":"6033:77:4"},{"body":{"nodeType":"YulBlock","src":"6165:258:4","statements":[{"nodeType":"YulVariableDeclaration","src":"6175:10:4","value":{"kind":"number","nodeType":"YulLiteral","src":"6184:1:4","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"6179:1:4","type":""}]},{"body":{"nodeType":"YulBlock","src":"6244:63:4","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"6269:3:4"},{"name":"i","nodeType":"YulIdentifier","src":"6274:1:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6265:3:4"},"nodeType":"YulFunctionCall","src":"6265:11:4"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"6288:3:4"},{"name":"i","nodeType":"YulIdentifier","src":"6293:1:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6284:3:4"},"nodeType":"YulFunctionCall","src":"6284:11:4"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6278:5:4"},"nodeType":"YulFunctionCall","src":"6278:18:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6258:6:4"},"nodeType":"YulFunctionCall","src":"6258:39:4"},"nodeType":"YulExpressionStatement","src":"6258:39:4"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"6205:1:4"},{"name":"length","nodeType":"YulIdentifier","src":"6208:6:4"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"6202:2:4"},"nodeType":"YulFunctionCall","src":"6202:13:4"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"6216:19:4","statements":[{"nodeType":"YulAssignment","src":"6218:15:4","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"6227:1:4"},{"kind":"number","nodeType":"YulLiteral","src":"6230:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6223:3:4"},"nodeType":"YulFunctionCall","src":"6223:10:4"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"6218:1:4"}]}]},"pre":{"nodeType":"YulBlock","src":"6198:3:4","statements":[]},"src":"6194:113:4"},{"body":{"nodeType":"YulBlock","src":"6341:76:4","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"6391:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"6396:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6387:3:4"},"nodeType":"YulFunctionCall","src":"6387:16:4"},{"kind":"number","nodeType":"YulLiteral","src":"6405:1:4","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6380:6:4"},"nodeType":"YulFunctionCall","src":"6380:27:4"},"nodeType":"YulExpressionStatement","src":"6380:27:4"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"6322:1:4"},{"name":"length","nodeType":"YulIdentifier","src":"6325:6:4"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"6319:2:4"},"nodeType":"YulFunctionCall","src":"6319:13:4"},"nodeType":"YulIf","src":"6316:2:4"}]},"name":"copy_memory_to_memory","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"6147:3:4","type":""},{"name":"dst","nodeType":"YulTypedName","src":"6152:3:4","type":""},{"name":"length","nodeType":"YulTypedName","src":"6157:6:4","type":""}],"src":"6116:307:4"},{"body":{"nodeType":"YulBlock","src":"6480:269:4","statements":[{"nodeType":"YulAssignment","src":"6490:22:4","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"6504:4:4"},{"kind":"number","nodeType":"YulLiteral","src":"6510:1:4","type":"","value":"2"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"6500:3:4"},"nodeType":"YulFunctionCall","src":"6500:12:4"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"6490:6:4"}]},{"nodeType":"YulVariableDeclaration","src":"6521:38:4","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"6551:4:4"},{"kind":"number","nodeType":"YulLiteral","src":"6557:1:4","type":"","value":"1"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"6547:3:4"},"nodeType":"YulFunctionCall","src":"6547:12:4"},"variables":[{"name":"outOfPlaceEncoding","nodeType":"YulTypedName","src":"6525:18:4","type":""}]},{"body":{"nodeType":"YulBlock","src":"6598:51:4","statements":[{"nodeType":"YulAssignment","src":"6612:27:4","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"6626:6:4"},{"kind":"number","nodeType":"YulLiteral","src":"6634:4:4","type":"","value":"0x7f"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"6622:3:4"},"nodeType":"YulFunctionCall","src":"6622:17:4"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"6612:6:4"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"6578:18:4"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"6571:6:4"},"nodeType":"YulFunctionCall","src":"6571:26:4"},"nodeType":"YulIf","src":"6568:2:4"},{"body":{"nodeType":"YulBlock","src":"6701:42:4","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x22","nodeType":"YulIdentifier","src":"6715:16:4"},"nodeType":"YulFunctionCall","src":"6715:18:4"},"nodeType":"YulExpressionStatement","src":"6715:18:4"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"6665:18:4"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"6688:6:4"},{"kind":"number","nodeType":"YulLiteral","src":"6696:2:4","type":"","value":"32"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"6685:2:4"},"nodeType":"YulFunctionCall","src":"6685:14:4"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"6662:2:4"},"nodeType":"YulFunctionCall","src":"6662:38:4"},"nodeType":"YulIf","src":"6659:2:4"}]},"name":"extract_byte_array_length","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"6464:4:4","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"6473:6:4","type":""}],"src":"6429:320:4"},{"body":{"nodeType":"YulBlock","src":"6783:152:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6800:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6803:77:4","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6793:6:4"},"nodeType":"YulFunctionCall","src":"6793:88:4"},"nodeType":"YulExpressionStatement","src":"6793:88:4"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6897:1:4","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"6900:4:4","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6890:6:4"},"nodeType":"YulFunctionCall","src":"6890:15:4"},"nodeType":"YulExpressionStatement","src":"6890:15:4"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6921:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6924:4:4","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6914:6:4"},"nodeType":"YulFunctionCall","src":"6914:15:4"},"nodeType":"YulExpressionStatement","src":"6914:15:4"}]},"name":"panic_error_0x11","nodeType":"YulFunctionDefinition","src":"6755:180:4"},{"body":{"nodeType":"YulBlock","src":"6969:152:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6986:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6989:77:4","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6979:6:4"},"nodeType":"YulFunctionCall","src":"6979:88:4"},"nodeType":"YulExpressionStatement","src":"6979:88:4"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7083:1:4","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"7086:4:4","type":"","value":"0x22"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7076:6:4"},"nodeType":"YulFunctionCall","src":"7076:15:4"},"nodeType":"YulExpressionStatement","src":"7076:15:4"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7107:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7110:4:4","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7100:6:4"},"nodeType":"YulFunctionCall","src":"7100:15:4"},"nodeType":"YulExpressionStatement","src":"7100:15:4"}]},"name":"panic_error_0x22","nodeType":"YulFunctionDefinition","src":"6941:180:4"},{"body":{"nodeType":"YulBlock","src":"7175:54:4","statements":[{"nodeType":"YulAssignment","src":"7185:38:4","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"7203:5:4"},{"kind":"number","nodeType":"YulLiteral","src":"7210:2:4","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7199:3:4"},"nodeType":"YulFunctionCall","src":"7199:14:4"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7219:2:4","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"7215:3:4"},"nodeType":"YulFunctionCall","src":"7215:7:4"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7195:3:4"},"nodeType":"YulFunctionCall","src":"7195:28:4"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"7185:6:4"}]}]},"name":"round_up_to_mul_of_32","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"7158:5:4","type":""}],"returnVariables":[{"name":"result","nodeType":"YulTypedName","src":"7168:6:4","type":""}],"src":"7127:102:4"},{"body":{"nodeType":"YulBlock","src":"7341:66:4","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7363:6:4"},{"kind":"number","nodeType":"YulLiteral","src":"7371:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7359:3:4"},"nodeType":"YulFunctionCall","src":"7359:14:4"},{"kind":"string","nodeType":"YulLiteral","src":"7375:24:4","type":"","value":"Insufficient allowance"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7352:6:4"},"nodeType":"YulFunctionCall","src":"7352:48:4"},"nodeType":"YulExpressionStatement","src":"7352:48:4"}]},"name":"store_literal_in_memory_45e3d26e36c3151c7f92a1eee9add9658cbb8e14605ee2452ec007389b9744bc","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"7333:6:4","type":""}],"src":"7235:172:4"},{"body":{"nodeType":"YulBlock","src":"7519:69:4","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7541:6:4"},{"kind":"number","nodeType":"YulLiteral","src":"7549:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7537:3:4"},"nodeType":"YulFunctionCall","src":"7537:14:4"},{"kind":"string","nodeType":"YulLiteral","src":"7553:27:4","type":"","value":"Transferred value is zero"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7530:6:4"},"nodeType":"YulFunctionCall","src":"7530:51:4"},"nodeType":"YulExpressionStatement","src":"7530:51:4"}]},"name":"store_literal_in_memory_4ca3cd75a1831a94a24913bfd2c9b9d35acbb11ac3447f65bb0682cf14f63f5c","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"7511:6:4","type":""}],"src":"7413:175:4"},{"body":{"nodeType":"YulBlock","src":"7637:79:4","statements":[{"body":{"nodeType":"YulBlock","src":"7694:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7703:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7706:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7696:6:4"},"nodeType":"YulFunctionCall","src":"7696:12:4"},"nodeType":"YulExpressionStatement","src":"7696:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"7660:5:4"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"7685:5:4"}],"functionName":{"name":"cleanup_t_address","nodeType":"YulIdentifier","src":"7667:17:4"},"nodeType":"YulFunctionCall","src":"7667:24:4"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"7657:2:4"},"nodeType":"YulFunctionCall","src":"7657:35:4"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"7650:6:4"},"nodeType":"YulFunctionCall","src":"7650:43:4"},"nodeType":"YulIf","src":"7647:2:4"}]},"name":"validator_revert_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"7630:5:4","type":""}],"src":"7594:122:4"},{"body":{"nodeType":"YulBlock","src":"7765:79:4","statements":[{"body":{"nodeType":"YulBlock","src":"7822:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7831:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7834:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7824:6:4"},"nodeType":"YulFunctionCall","src":"7824:12:4"},"nodeType":"YulExpressionStatement","src":"7824:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"7788:5:4"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"7813:5:4"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"7795:17:4"},"nodeType":"YulFunctionCall","src":"7795:24:4"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"7785:2:4"},"nodeType":"YulFunctionCall","src":"7785:35:4"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"7778:6:4"},"nodeType":"YulFunctionCall","src":"7778:43:4"},"nodeType":"YulIf","src":"7775:2:4"}]},"name":"validator_revert_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"7758:5:4","type":""}],"src":"7722:122:4"}]},"contents":"{\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_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_addresst_address(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(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2 {\n if slt(sub(dataEnd, headStart), 96) { 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 let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_addresst_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(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_encode_t_bool_to_t_bool_fromStack(value, pos) {\n mstore(pos, cleanup_t_bool(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_45e3d26e36c3151c7f92a1eee9add9658cbb8e14605ee2452ec007389b9744bc_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 22)\n store_literal_in_memory_45e3d26e36c3151c7f92a1eee9add9658cbb8e14605ee2452ec007389b9744bc(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_t_stringliteral_4ca3cd75a1831a94a24913bfd2c9b9d35acbb11ac3447f65bb0682cf14f63f5c_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 25)\n store_literal_in_memory_4ca3cd75a1831a94a24913bfd2c9b9d35acbb11ac3447f65bb0682cf14f63f5c(pos)\n end := add(pos, 32)\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_bool__to_t_bool__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_bool_to_t_bool_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_45e3d26e36c3151c7f92a1eee9add9658cbb8e14605ee2452ec007389b9744bc__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_45e3d26e36c3151c7f92a1eee9add9658cbb8e14605ee2452ec007389b9744bc_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function abi_encode_tuple_t_stringliteral_4ca3cd75a1831a94a24913bfd2c9b9d35acbb11ac3447f65bb0682cf14f63f5c__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_4ca3cd75a1831a94a24913bfd2c9b9d35acbb11ac3447f65bb0682cf14f63f5c_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 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_bool(value) -> cleaned {\n cleaned := iszero(iszero(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_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 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 round_up_to_mul_of_32(value) -> result {\n result := and(add(value, 31), not(31))\n }\n\n function store_literal_in_memory_45e3d26e36c3151c7f92a1eee9add9658cbb8e14605ee2452ec007389b9744bc(memPtr) {\n\n mstore(add(memPtr, 0), \"Insufficient allowance\")\n\n }\n\n function store_literal_in_memory_4ca3cd75a1831a94a24913bfd2c9b9d35acbb11ac3447f65bb0682cf14f63f5c(memPtr) {\n\n mstore(add(memPtr, 0), \"Transferred value is zero\")\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_uint256(value) {\n if iszero(eq(value, cleanup_t_uint256(value))) { revert(0, 0) }\n }\n\n}\n","id":4,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100935760003560e01c8063313ce56711610066578063313ce5671461013457806370a082311461015257806395d89b4114610182578063a9059cbb146101a0578063dd62ed3e146101d057610093565b806306fdde0314610098578063095ea7b3146100b657806318160ddd146100e657806323b872dd14610104575b600080fd5b6100a0610200565b6040516100ad91906108b8565b60405180910390f35b6100d060048036038101906100cb91906107c4565b61028e565b6040516100dd919061089d565b60405180910390f35b6100ee61031b565b6040516100fb919061091a565b60405180910390f35b61011e60048036038101906101199190610775565b610321565b60405161012b919061089d565b60405180910390f35b61013c6104b9565b604051610149919061091a565b60405180910390f35b61016c60048036038101906101679190610710565b6104bf565b604051610179919061091a565b60405180910390f35b61018a6104d7565b60405161019791906108b8565b60405180910390f35b6101ba60048036038101906101b591906107c4565b610565565b6040516101c7919061089d565b60405180910390f35b6101ea60048036038101906101e59190610739565b61065f565b6040516101f7919061091a565b60405180910390f35b6004805461020d90610a56565b80601f016020809104026020016040519081016040528092919081815260200182805461023990610a56565b80156102865780601f1061025b57610100808354040283529160200191610286565b820191906000526020600020905b81548152906001019060200180831161026957829003601f168201915b505050505081565b600081600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001905092915050565b60015481565b60008161032e853361065f565b101561036f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610366906108da565b60405180910390fd5b81600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546103fb91906109a7565b9250508190555081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461045191906109a7565b9250508190555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546104a79190610951565b92505081905550600190509392505050565b60005481565b60026020528060005260406000206000915090505481565b600580546104e490610a56565b80601f016020809104026020016040519081016040528092919081815260200182805461051090610a56565b801561055d5780601f106105325761010080835404028352916020019161055d565b820191906000526020600020905b81548152906001019060200180831161054057829003601f168201915b505050505081565b60008082116105a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105a0906108fa565b60405180910390fd5b81600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546105f891906109a7565b9250508190555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461064e9190610951565b925050819055506001905092915050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000813590506106f581610b49565b92915050565b60008135905061070a81610b60565b92915050565b60006020828403121561072257600080fd5b6000610730848285016106e6565b91505092915050565b6000806040838503121561074c57600080fd5b600061075a858286016106e6565b925050602061076b858286016106e6565b9150509250929050565b60008060006060848603121561078a57600080fd5b6000610798868287016106e6565b93505060206107a9868287016106e6565b92505060406107ba868287016106fb565b9150509250925092565b600080604083850312156107d757600080fd5b60006107e5858286016106e6565b92505060206107f6858286016106fb565b9150509250929050565b610809816109ed565b82525050565b600061081a82610935565b6108248185610940565b9350610834818560208601610a23565b61083d81610ae6565b840191505092915050565b6000610855601683610940565b915061086082610af7565b602082019050919050565b6000610878601983610940565b915061088382610b20565b602082019050919050565b61089781610a19565b82525050565b60006020820190506108b26000830184610800565b92915050565b600060208201905081810360008301526108d2818461080f565b905092915050565b600060208201905081810360008301526108f381610848565b9050919050565b600060208201905081810360008301526109138161086b565b9050919050565b600060208201905061092f600083018461088e565b92915050565b600081519050919050565b600082825260208201905092915050565b600061095c82610a19565b915061096783610a19565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561099c5761099b610a88565b5b828201905092915050565b60006109b282610a19565b91506109bd83610a19565b9250828210156109d0576109cf610a88565b5b828203905092915050565b60006109e6826109f9565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b83811015610a41578082015181840152602081019050610a26565b83811115610a50576000848401525b50505050565b60006002820490506001821680610a6e57607f821691505b60208210811415610a8257610a81610ab7565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f496e73756666696369656e7420616c6c6f77616e636500000000000000000000600082015250565b7f5472616e736665727265642076616c7565206973207a65726f00000000000000600082015250565b610b52816109db565b8114610b5d57600080fd5b50565b610b6981610a19565b8114610b7457600080fd5b5056fea26469706673582212208ce961870c9d6cd505270df5da0c70d49a8f6cb7e04d5a03b16637783be136e764736f6c63430008040033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x93 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x313CE567 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x134 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x152 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x182 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x1A0 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x1D0 JUMPI PUSH2 0x93 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x98 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0xB6 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0xE6 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x104 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA0 PUSH2 0x200 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xAD SWAP2 SWAP1 PUSH2 0x8B8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xD0 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xCB SWAP2 SWAP1 PUSH2 0x7C4 JUMP JUMPDEST PUSH2 0x28E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xDD SWAP2 SWAP1 PUSH2 0x89D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xEE PUSH2 0x31B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xFB SWAP2 SWAP1 PUSH2 0x91A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x11E PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x119 SWAP2 SWAP1 PUSH2 0x775 JUMP JUMPDEST PUSH2 0x321 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x12B SWAP2 SWAP1 PUSH2 0x89D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x13C PUSH2 0x4B9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x149 SWAP2 SWAP1 PUSH2 0x91A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x16C PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x167 SWAP2 SWAP1 PUSH2 0x710 JUMP JUMPDEST PUSH2 0x4BF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x179 SWAP2 SWAP1 PUSH2 0x91A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x18A PUSH2 0x4D7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x197 SWAP2 SWAP1 PUSH2 0x8B8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1BA PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1B5 SWAP2 SWAP1 PUSH2 0x7C4 JUMP JUMPDEST PUSH2 0x565 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1C7 SWAP2 SWAP1 PUSH2 0x89D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1EA PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1E5 SWAP2 SWAP1 PUSH2 0x739 JUMP JUMPDEST PUSH2 0x65F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1F7 SWAP2 SWAP1 PUSH2 0x91A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH2 0x20D SWAP1 PUSH2 0xA56 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 0x239 SWAP1 PUSH2 0xA56 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x286 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x25B JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x286 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 0x269 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x3 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 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP PUSH1 0x1 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x32E DUP6 CALLER PUSH2 0x65F JUMP JUMPDEST LT ISZERO PUSH2 0x36F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x366 SWAP1 PUSH2 0x8DA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 PUSH1 0x3 PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 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 0x3FB SWAP2 SWAP1 PUSH2 0x9A7 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x2 PUSH1 0x0 DUP7 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 0x451 SWAP2 SWAP1 PUSH2 0x9A7 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x2 PUSH1 0x0 DUP6 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 0x4A7 SWAP2 SWAP1 PUSH2 0x951 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH1 0x1 SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD 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 0x5 DUP1 SLOAD PUSH2 0x4E4 SWAP1 PUSH2 0xA56 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 0x510 SWAP1 PUSH2 0xA56 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x55D JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x532 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x55D 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 0x540 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 GT PUSH2 0x5A9 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5A0 SWAP1 PUSH2 0x8FA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 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 0x5F8 SWAP2 SWAP1 PUSH2 0x9A7 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x2 PUSH1 0x0 DUP6 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 0x64E SWAP2 SWAP1 PUSH2 0x951 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH1 0x1 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x3 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x6F5 DUP2 PUSH2 0xB49 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x70A DUP2 PUSH2 0xB60 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x722 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x730 DUP5 DUP3 DUP6 ADD PUSH2 0x6E6 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x74C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x75A DUP6 DUP3 DUP7 ADD PUSH2 0x6E6 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x76B DUP6 DUP3 DUP7 ADD PUSH2 0x6E6 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x78A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x798 DUP7 DUP3 DUP8 ADD PUSH2 0x6E6 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x7A9 DUP7 DUP3 DUP8 ADD PUSH2 0x6E6 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x7BA DUP7 DUP3 DUP8 ADD PUSH2 0x6FB JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x7D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x7E5 DUP6 DUP3 DUP7 ADD PUSH2 0x6E6 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x7F6 DUP6 DUP3 DUP7 ADD PUSH2 0x6FB JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH2 0x809 DUP2 PUSH2 0x9ED JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x81A DUP3 PUSH2 0x935 JUMP JUMPDEST PUSH2 0x824 DUP2 DUP6 PUSH2 0x940 JUMP JUMPDEST SWAP4 POP PUSH2 0x834 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0xA23 JUMP JUMPDEST PUSH2 0x83D DUP2 PUSH2 0xAE6 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x855 PUSH1 0x16 DUP4 PUSH2 0x940 JUMP JUMPDEST SWAP2 POP PUSH2 0x860 DUP3 PUSH2 0xAF7 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x878 PUSH1 0x19 DUP4 PUSH2 0x940 JUMP JUMPDEST SWAP2 POP PUSH2 0x883 DUP3 PUSH2 0xB20 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x897 DUP2 PUSH2 0xA19 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x8B2 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x800 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 0x8D2 DUP2 DUP5 PUSH2 0x80F 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 0x8F3 DUP2 PUSH2 0x848 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 0x913 DUP2 PUSH2 0x86B JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x92F PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x88E JUMP JUMPDEST SWAP3 SWAP2 POP 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 0x95C DUP3 PUSH2 0xA19 JUMP JUMPDEST SWAP2 POP PUSH2 0x967 DUP4 PUSH2 0xA19 JUMP JUMPDEST SWAP3 POP DUP3 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SUB DUP3 GT ISZERO PUSH2 0x99C JUMPI PUSH2 0x99B PUSH2 0xA88 JUMP JUMPDEST JUMPDEST DUP3 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9B2 DUP3 PUSH2 0xA19 JUMP JUMPDEST SWAP2 POP PUSH2 0x9BD DUP4 PUSH2 0xA19 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 LT ISZERO PUSH2 0x9D0 JUMPI PUSH2 0x9CF PUSH2 0xA88 JUMP JUMPDEST JUMPDEST DUP3 DUP3 SUB SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9E6 DUP3 PUSH2 0x9F9 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO ISZERO 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 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xA41 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0xA26 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0xA50 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 0xA6E JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 EQ ISZERO PUSH2 0xA82 JUMPI PUSH2 0xA81 PUSH2 0xAB7 JUMP JUMPDEST JUMPDEST POP SWAP2 SWAP1 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 PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x496E73756666696369656E7420616C6C6F77616E636500000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH32 0x5472616E736665727265642076616C7565206973207A65726F00000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH2 0xB52 DUP2 PUSH2 0x9DB JUMP JUMPDEST DUP2 EQ PUSH2 0xB5D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0xB69 DUP2 PUSH2 0xA19 JUMP JUMPDEST DUP2 EQ PUSH2 0xB74 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP13 0xE9 PUSH2 0x870C SWAP14 PUSH13 0xD505270DF5DA0C70D49A8F6CB7 0xE0 0x4D GAS SUB 0xB1 PUSH7 0x37783BE136E764 PUSH20 0x6F6C634300080400330000000000000000000000 ","sourceMap":"1241:119:3:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1293:32;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;703:146;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;125:23;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;853:287;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;96:24;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;152:41;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1329:28;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;355:205;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;564:135;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1293:32;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;703:146::-;768:12;822:5;788:10;:22;799:10;788:22;;;;;;;;;;;;;;;:31;811:7;788:31;;;;;;;;;;;;;;;:39;;;;840:4;833:11;;703:146;;;;:::o;125:23::-;;;;:::o;853:287::-;932:4;983:5;952:27;962:4;968:10;952:9;:27::i;:::-;:36;;944:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;1054:5;1022:10;:16;1033:4;1022:16;;;;;;;;;;;;;;;:28;1039:10;1022:28;;;;;;;;;;;;;;;;:37;;;;;;;:::i;:::-;;;;;;;;1084:5;1065:9;:15;1075:4;1065:15;;;;;;;;;;;;;;;;:24;;;;;;;:::i;:::-;;;;;;;;1112:5;1095:9;:13;1105:2;1095:13;;;;;;;;;;;;;;;;:22;;;;;;;:::i;:::-;;;;;;;;1131:4;1124:11;;853:287;;;;;:::o;96:24::-;;;;:::o;152:41::-;;;;;;;;;;;;;;;;;:::o;1329:28::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;355:205::-;413:4;441:1;433:5;:9;425:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;504:5;479:9;:21;489:10;479:21;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;532:5;515:9;:13;525:2;515:13;;;;;;;;;;;;;;;;:22;;;;;;;:::i;:::-;;;;;;;;551:4;544:11;;355:205;;;;:::o;564:135::-;636:17;668:10;:17;679:5;668:17;;;;;;;;;;;;;;;:26;686:7;668:26;;;;;;;;;;;;;;;;661:33;;564:135;;;;:::o;7:139:4:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:139::-;198:5;236:6;223:20;214:29;;252:33;279:5;252:33;:::i;:::-;204:87;;;;:::o;297:262::-;356:6;405:2;393:9;384:7;380:23;376:32;373:2;;;421:1;418;411:12;373:2;464:1;489:53;534:7;525:6;514:9;510:22;489:53;:::i;:::-;479:63;;435:117;363:196;;;;:::o;565:407::-;633:6;641;690:2;678:9;669:7;665:23;661:32;658:2;;;706:1;703;696:12;658:2;749:1;774:53;819:7;810:6;799:9;795:22;774:53;:::i;:::-;764:63;;720:117;876:2;902:53;947:7;938:6;927:9;923:22;902:53;:::i;:::-;892:63;;847:118;648:324;;;;;:::o;978:552::-;1055:6;1063;1071;1120:2;1108:9;1099:7;1095:23;1091:32;1088:2;;;1136:1;1133;1126:12;1088:2;1179:1;1204:53;1249:7;1240:6;1229:9;1225:22;1204:53;:::i;:::-;1194:63;;1150:117;1306:2;1332:53;1377:7;1368:6;1357:9;1353:22;1332:53;:::i;:::-;1322:63;;1277:118;1434:2;1460:53;1505:7;1496:6;1485:9;1481:22;1460:53;:::i;:::-;1450:63;;1405:118;1078:452;;;;;:::o;1536:407::-;1604:6;1612;1661:2;1649:9;1640:7;1636:23;1632:32;1629:2;;;1677:1;1674;1667:12;1629:2;1720:1;1745:53;1790:7;1781:6;1770:9;1766:22;1745:53;:::i;:::-;1735:63;;1691:117;1847:2;1873:53;1918:7;1909:6;1898:9;1894:22;1873:53;:::i;:::-;1863:63;;1818:118;1619:324;;;;;:::o;1949:109::-;2030:21;2045:5;2030:21;:::i;:::-;2025:3;2018:34;2008:50;;:::o;2064:364::-;2152:3;2180:39;2213:5;2180:39;:::i;:::-;2235:71;2299:6;2294:3;2235:71;:::i;:::-;2228:78;;2315:52;2360:6;2355:3;2348:4;2341:5;2337:16;2315:52;:::i;:::-;2392:29;2414:6;2392:29;:::i;:::-;2387:3;2383:39;2376:46;;2156:272;;;;;:::o;2434:366::-;2576:3;2597:67;2661:2;2656:3;2597:67;:::i;:::-;2590:74;;2673:93;2762:3;2673:93;:::i;:::-;2791:2;2786:3;2782:12;2775:19;;2580:220;;;:::o;2806:366::-;2948:3;2969:67;3033:2;3028:3;2969:67;:::i;:::-;2962:74;;3045:93;3134:3;3045:93;:::i;:::-;3163:2;3158:3;3154:12;3147:19;;2952:220;;;:::o;3178:118::-;3265:24;3283:5;3265:24;:::i;:::-;3260:3;3253:37;3243:53;;:::o;3302:210::-;3389:4;3427:2;3416:9;3412:18;3404:26;;3440:65;3502:1;3491:9;3487:17;3478:6;3440:65;:::i;:::-;3394:118;;;;:::o;3518:313::-;3631:4;3669:2;3658:9;3654:18;3646:26;;3718:9;3712:4;3708:20;3704:1;3693:9;3689:17;3682:47;3746:78;3819:4;3810:6;3746:78;:::i;:::-;3738:86;;3636:195;;;;:::o;3837:419::-;4003:4;4041:2;4030:9;4026:18;4018:26;;4090:9;4084:4;4080:20;4076:1;4065:9;4061:17;4054:47;4118:131;4244:4;4118:131;:::i;:::-;4110:139;;4008:248;;;:::o;4262:419::-;4428:4;4466:2;4455:9;4451:18;4443:26;;4515:9;4509:4;4505:20;4501:1;4490:9;4486:17;4479:47;4543:131;4669:4;4543:131;:::i;:::-;4535:139;;4433:248;;;:::o;4687:222::-;4780:4;4818:2;4807:9;4803:18;4795:26;;4831:71;4899:1;4888:9;4884:17;4875:6;4831:71;:::i;:::-;4785:124;;;;:::o;4915:99::-;4967:6;5001:5;4995:12;4985:22;;4974:40;;;:::o;5020:169::-;5104:11;5138:6;5133:3;5126:19;5178:4;5173:3;5169:14;5154:29;;5116:73;;;;:::o;5195:305::-;5235:3;5254:20;5272:1;5254:20;:::i;:::-;5249:25;;5288:20;5306:1;5288:20;:::i;:::-;5283:25;;5442:1;5374:66;5370:74;5367:1;5364:81;5361:2;;;5448:18;;:::i;:::-;5361:2;5492:1;5489;5485:9;5478:16;;5239:261;;;;:::o;5506:191::-;5546:4;5566:20;5584:1;5566:20;:::i;:::-;5561:25;;5600:20;5618:1;5600:20;:::i;:::-;5595:25;;5639:1;5636;5633:8;5630:2;;;5644:18;;:::i;:::-;5630:2;5689:1;5686;5682:9;5674:17;;5551:146;;;;:::o;5703:96::-;5740:7;5769:24;5787:5;5769:24;:::i;:::-;5758:35;;5748:51;;;:::o;5805:90::-;5839:7;5882:5;5875:13;5868:21;5857:32;;5847:48;;;:::o;5901:126::-;5938:7;5978:42;5971:5;5967:54;5956:65;;5946:81;;;:::o;6033:77::-;6070:7;6099:5;6088:16;;6078:32;;;:::o;6116:307::-;6184:1;6194:113;6208:6;6205:1;6202:13;6194:113;;;6293:1;6288:3;6284:11;6278:18;6274:1;6269:3;6265:11;6258:39;6230:2;6227:1;6223:10;6218:15;;6194:113;;;6325:6;6322:1;6319:13;6316:2;;;6405:1;6396:6;6391:3;6387:16;6380:27;6316:2;6165:258;;;;:::o;6429:320::-;6473:6;6510:1;6504:4;6500:12;6490:22;;6557:1;6551:4;6547:12;6578:18;6568:2;;6634:4;6626:6;6622:17;6612:27;;6568:2;6696;6688:6;6685:14;6665:18;6662:38;6659:2;;;6715:18;;:::i;:::-;6659:2;6480:269;;;;:::o;6755:180::-;6803:77;6800:1;6793:88;6900:4;6897:1;6890:15;6924:4;6921:1;6914:15;6941:180;6989:77;6986:1;6979:88;7086:4;7083:1;7076:15;7110:4;7107:1;7100:15;7127:102;7168:6;7219:2;7215:7;7210:2;7203:5;7199:14;7195:28;7185:38;;7175:54;;;:::o;7235:172::-;7375:24;7371:1;7363:6;7359:14;7352:48;7341:66;:::o;7413:175::-;7553:27;7549:1;7541:6;7537:14;7530:51;7519:69;:::o;7594:122::-;7667:24;7685:5;7667:24;:::i;:::-;7660:5;7657:35;7647:2;;7706:1;7703;7696:12;7647:2;7637:79;:::o;7722:122::-;7795:24;7813:5;7795:24;:::i;:::-;7788:5;7785:35;7775:2;;7834:1;7831;7824:12;7775:2;7765:79;:::o"},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","name()":"06fdde03","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.4+commit.c7e474f2\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"remaining\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/Token.sol\":\"MockToken\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/Token.sol\":{\"keccak256\":\"0x3c98df2a7295115a107e950c40733f37ce5384cf18a0b5efb948ccf6d1acaa59\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://21c0d9ad7fee4c50e057a477ec0c151985566e51e1df46d3dc42f4320eceeccf\",\"dweb:/ipfs/QmSVvnCWd9MH3F93atgJGuwbHMJpifnoMLSosQsZUKUrZ8\"]}},\"version\":1}"},"NotAToken":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"6080604052348015600f57600080fd5b50603f80601d6000396000f3fe6080604052600080fdfea26469706673582212209449725821c33b87347a40f451b2c6483bf5505349fe39bcd25604669e50f33364736f6c63430008040033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x3F DUP1 PUSH1 0x1D PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP5 0x49 PUSH19 0x5821C33B87347A40F451B2C6483BF5505349FE CODECOPY 0xBC 0xD2 JUMP DIV PUSH7 0x9E50F33364736F PUSH13 0x63430008040033000000000000 ","sourceMap":"1362:21:3:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"6080604052600080fdfea26469706673582212209449725821c33b87347a40f451b2c6483bf5505349fe39bcd25604669e50f33364736f6c63430008040033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP5 0x49 PUSH19 0x5821C33B87347A40F451B2C6483BF5505349FE CODECOPY 0xBC 0xD2 JUMP DIV PUSH7 0x9E50F33364736F PUSH13 0x63430008040033000000000000 ","sourceMap":"1362:21:3:-:0;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.4+commit.c7e474f2\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/Token.sol\":\"NotAToken\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/Token.sol\":{\"keccak256\":\"0x3c98df2a7295115a107e950c40733f37ce5384cf18a0b5efb948ccf6d1acaa59\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://21c0d9ad7fee4c50e057a477ec0c151985566e51e1df46d3dc42f4320eceeccf\",\"dweb:/ipfs/QmSVvnCWd9MH3F93atgJGuwbHMJpifnoMLSosQsZUKUrZ8\"]}},\"version\":1}"},"TokenWithOnlyName":{"abi":[{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"remaining","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:516:4","statements":[{"body":{"nodeType":"YulBlock","src":"58:269:4","statements":[{"nodeType":"YulAssignment","src":"68:22:4","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"82:4:4"},{"kind":"number","nodeType":"YulLiteral","src":"88:1:4","type":"","value":"2"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"78:3:4"},"nodeType":"YulFunctionCall","src":"78:12:4"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"68:6:4"}]},{"nodeType":"YulVariableDeclaration","src":"99:38:4","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"129:4:4"},{"kind":"number","nodeType":"YulLiteral","src":"135:1:4","type":"","value":"1"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"125:3:4"},"nodeType":"YulFunctionCall","src":"125:12:4"},"variables":[{"name":"outOfPlaceEncoding","nodeType":"YulTypedName","src":"103:18:4","type":""}]},{"body":{"nodeType":"YulBlock","src":"176:51:4","statements":[{"nodeType":"YulAssignment","src":"190:27:4","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"204:6:4"},{"kind":"number","nodeType":"YulLiteral","src":"212:4:4","type":"","value":"0x7f"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"200:3:4"},"nodeType":"YulFunctionCall","src":"200:17:4"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"190:6:4"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"156:18:4"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"149:6:4"},"nodeType":"YulFunctionCall","src":"149:26:4"},"nodeType":"YulIf","src":"146:2:4"},{"body":{"nodeType":"YulBlock","src":"279:42:4","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x22","nodeType":"YulIdentifier","src":"293:16:4"},"nodeType":"YulFunctionCall","src":"293:18:4"},"nodeType":"YulExpressionStatement","src":"293:18:4"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"243:18:4"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"266:6:4"},{"kind":"number","nodeType":"YulLiteral","src":"274:2:4","type":"","value":"32"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"263:2:4"},"nodeType":"YulFunctionCall","src":"263:14:4"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"240:2:4"},"nodeType":"YulFunctionCall","src":"240:38:4"},"nodeType":"YulIf","src":"237:2:4"}]},"name":"extract_byte_array_length","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"42:4:4","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"51:6:4","type":""}],"src":"7:320:4"},{"body":{"nodeType":"YulBlock","src":"361:152:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"378:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"381:77:4","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"371:6:4"},"nodeType":"YulFunctionCall","src":"371:88:4"},"nodeType":"YulExpressionStatement","src":"371:88:4"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"475:1:4","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"478:4:4","type":"","value":"0x22"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"468:6:4"},"nodeType":"YulFunctionCall","src":"468:15:4"},"nodeType":"YulExpressionStatement","src":"468:15:4"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"499:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"502:4:4","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"492:6:4"},"nodeType":"YulFunctionCall","src":"492:15:4"},"nodeType":"YulExpressionStatement","src":"492:15:4"}]},"name":"panic_error_0x22","nodeType":"YulFunctionDefinition","src":"333:180:4"}]},"contents":"{\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 panic_error_0x22() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n\n}\n","id":4,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"608060405260016000556040518060400160405280600981526020017f4d6f636b546f6b656e0000000000000000000000000000000000000000000000815250600490805190602001906100549291906100b8565b5034801561006157600080fd5b50633b9aca00600181905550600154600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506101bc565b8280546100c49061015b565b90600052602060002090601f0160209004810192826100e6576000855561012d565b82601f106100ff57805160ff191683800117855561012d565b8280016001018555821561012d579182015b8281111561012c578251825591602001919060010190610111565b5b50905061013a919061013e565b5090565b5b8082111561015757600081600090555060010161013f565b5090565b6000600282049050600182168061017357607f821691505b602082108114156101875761018661018d565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b610af6806101cb6000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063313ce5671161005b578063313ce5671461012957806370a0823114610147578063a9059cbb14610177578063dd62ed3e146101a757610088565b806306fdde031461008d578063095ea7b3146100ab57806318160ddd146100db57806323b872dd146100f9575b600080fd5b6100956101d7565b6040516100a29190610801565b60405180910390f35b6100c560048036038101906100c0919061070d565b610265565b6040516100d291906107e6565b60405180910390f35b6100e36102f2565b6040516100f09190610863565b60405180910390f35b610113600480360381019061010e91906106be565b6102f8565b60405161012091906107e6565b60405180910390f35b610131610490565b60405161013e9190610863565b60405180910390f35b610161600480360381019061015c9190610659565b610496565b60405161016e9190610863565b60405180910390f35b610191600480360381019061018c919061070d565b6104ae565b60405161019e91906107e6565b60405180910390f35b6101c160048036038101906101bc9190610682565b6105a8565b6040516101ce9190610863565b60405180910390f35b600480546101e49061099f565b80601f01602080910402602001604051908101604052809291908181526020018280546102109061099f565b801561025d5780601f106102325761010080835404028352916020019161025d565b820191906000526020600020905b81548152906001019060200180831161024057829003601f168201915b505050505081565b600081600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001905092915050565b60015481565b60008161030585336105a8565b1015610346576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161033d90610823565b60405180910390fd5b81600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546103d291906108f0565b9250508190555081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461042891906108f0565b9250508190555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461047e919061089a565b92505081905550600190509392505050565b60005481565b60026020528060005260406000206000915090505481565b60008082116104f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104e990610843565b60405180910390fd5b81600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461054191906108f0565b9250508190555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610597919061089a565b925050819055506001905092915050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008135905061063e81610a92565b92915050565b60008135905061065381610aa9565b92915050565b60006020828403121561066b57600080fd5b60006106798482850161062f565b91505092915050565b6000806040838503121561069557600080fd5b60006106a38582860161062f565b92505060206106b48582860161062f565b9150509250929050565b6000806000606084860312156106d357600080fd5b60006106e18682870161062f565b93505060206106f28682870161062f565b925050604061070386828701610644565b9150509250925092565b6000806040838503121561072057600080fd5b600061072e8582860161062f565b925050602061073f85828601610644565b9150509250929050565b61075281610936565b82525050565b60006107638261087e565b61076d8185610889565b935061077d81856020860161096c565b61078681610a2f565b840191505092915050565b600061079e601683610889565b91506107a982610a40565b602082019050919050565b60006107c1601983610889565b91506107cc82610a69565b602082019050919050565b6107e081610962565b82525050565b60006020820190506107fb6000830184610749565b92915050565b6000602082019050818103600083015261081b8184610758565b905092915050565b6000602082019050818103600083015261083c81610791565b9050919050565b6000602082019050818103600083015261085c816107b4565b9050919050565b600060208201905061087860008301846107d7565b92915050565b600081519050919050565b600082825260208201905092915050565b60006108a582610962565b91506108b083610962565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156108e5576108e46109d1565b5b828201905092915050565b60006108fb82610962565b915061090683610962565b925082821015610919576109186109d1565b5b828203905092915050565b600061092f82610942565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b8381101561098a57808201518184015260208101905061096f565b83811115610999576000848401525b50505050565b600060028204905060018216806109b757607f821691505b602082108114156109cb576109ca610a00565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f496e73756666696369656e7420616c6c6f77616e636500000000000000000000600082015250565b7f5472616e736665727265642076616c7565206973207a65726f00000000000000600082015250565b610a9b81610924565b8114610aa657600080fd5b50565b610ab281610962565b8114610abd57600080fd5b5056fea2646970667358221220a6fcd04aa893368d0e3e9a004a848844c520623183d6b2111fbc6f837204d0fa64736f6c63430008040033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x1 PUSH1 0x0 SSTORE PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x9 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x4D6F636B546F6B656E0000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x4 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0x54 SWAP3 SWAP2 SWAP1 PUSH2 0xB8 JUMP JUMPDEST POP CALLVALUE DUP1 ISZERO PUSH2 0x61 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH4 0x3B9ACA00 PUSH1 0x1 DUP2 SWAP1 SSTORE POP PUSH1 0x1 SLOAD 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 DUP2 SWAP1 SSTORE POP PUSH2 0x1BC JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH2 0xC4 SWAP1 PUSH2 0x15B JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH2 0xE6 JUMPI PUSH1 0x0 DUP6 SSTORE PUSH2 0x12D JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH2 0xFF JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x12D JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x12D JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x12C JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x111 JUMP JUMPDEST JUMPDEST POP SWAP1 POP PUSH2 0x13A SWAP2 SWAP1 PUSH2 0x13E JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x157 JUMPI PUSH1 0x0 DUP2 PUSH1 0x0 SWAP1 SSTORE POP PUSH1 0x1 ADD PUSH2 0x13F JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x2 DUP3 DIV SWAP1 POP PUSH1 0x1 DUP3 AND DUP1 PUSH2 0x173 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 EQ ISZERO PUSH2 0x187 JUMPI PUSH2 0x186 PUSH2 0x18D JUMP JUMPDEST JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH2 0xAF6 DUP1 PUSH2 0x1CB PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x88 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x313CE567 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x129 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x147 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x177 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x1A7 JUMPI PUSH2 0x88 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x8D JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0xAB JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0xDB JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0xF9 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x95 PUSH2 0x1D7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xA2 SWAP2 SWAP1 PUSH2 0x801 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xC5 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xC0 SWAP2 SWAP1 PUSH2 0x70D JUMP JUMPDEST PUSH2 0x265 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xD2 SWAP2 SWAP1 PUSH2 0x7E6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xE3 PUSH2 0x2F2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xF0 SWAP2 SWAP1 PUSH2 0x863 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x113 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x10E SWAP2 SWAP1 PUSH2 0x6BE JUMP JUMPDEST PUSH2 0x2F8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x120 SWAP2 SWAP1 PUSH2 0x7E6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x131 PUSH2 0x490 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x13E SWAP2 SWAP1 PUSH2 0x863 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x161 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x15C SWAP2 SWAP1 PUSH2 0x659 JUMP JUMPDEST PUSH2 0x496 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x16E SWAP2 SWAP1 PUSH2 0x863 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x191 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x18C SWAP2 SWAP1 PUSH2 0x70D JUMP JUMPDEST PUSH2 0x4AE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x19E SWAP2 SWAP1 PUSH2 0x7E6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1C1 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1BC SWAP2 SWAP1 PUSH2 0x682 JUMP JUMPDEST PUSH2 0x5A8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1CE SWAP2 SWAP1 PUSH2 0x863 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH2 0x1E4 SWAP1 PUSH2 0x99F 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 0x210 SWAP1 PUSH2 0x99F JUMP JUMPDEST DUP1 ISZERO PUSH2 0x25D JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x232 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x25D 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 0x240 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x3 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 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP PUSH1 0x1 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x305 DUP6 CALLER PUSH2 0x5A8 JUMP JUMPDEST LT ISZERO PUSH2 0x346 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x33D SWAP1 PUSH2 0x823 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 PUSH1 0x3 PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 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 0x3D2 SWAP2 SWAP1 PUSH2 0x8F0 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x2 PUSH1 0x0 DUP7 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 0x428 SWAP2 SWAP1 PUSH2 0x8F0 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x2 PUSH1 0x0 DUP6 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 0x47E SWAP2 SWAP1 PUSH2 0x89A JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH1 0x1 SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD 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 DUP3 GT PUSH2 0x4F2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4E9 SWAP1 PUSH2 0x843 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 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 0x541 SWAP2 SWAP1 PUSH2 0x8F0 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x2 PUSH1 0x0 DUP6 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 0x597 SWAP2 SWAP1 PUSH2 0x89A JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH1 0x1 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x3 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x63E DUP2 PUSH2 0xA92 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x653 DUP2 PUSH2 0xAA9 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x66B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x679 DUP5 DUP3 DUP6 ADD PUSH2 0x62F JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x695 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x6A3 DUP6 DUP3 DUP7 ADD PUSH2 0x62F JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x6B4 DUP6 DUP3 DUP7 ADD PUSH2 0x62F JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x6D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x6E1 DUP7 DUP3 DUP8 ADD PUSH2 0x62F JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x6F2 DUP7 DUP3 DUP8 ADD PUSH2 0x62F JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x703 DUP7 DUP3 DUP8 ADD PUSH2 0x644 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x720 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x72E DUP6 DUP3 DUP7 ADD PUSH2 0x62F JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x73F DUP6 DUP3 DUP7 ADD PUSH2 0x644 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH2 0x752 DUP2 PUSH2 0x936 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x763 DUP3 PUSH2 0x87E JUMP JUMPDEST PUSH2 0x76D DUP2 DUP6 PUSH2 0x889 JUMP JUMPDEST SWAP4 POP PUSH2 0x77D DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x96C JUMP JUMPDEST PUSH2 0x786 DUP2 PUSH2 0xA2F JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x79E PUSH1 0x16 DUP4 PUSH2 0x889 JUMP JUMPDEST SWAP2 POP PUSH2 0x7A9 DUP3 PUSH2 0xA40 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7C1 PUSH1 0x19 DUP4 PUSH2 0x889 JUMP JUMPDEST SWAP2 POP PUSH2 0x7CC DUP3 PUSH2 0xA69 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x7E0 DUP2 PUSH2 0x962 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x7FB PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x749 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 0x81B DUP2 DUP5 PUSH2 0x758 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 0x83C DUP2 PUSH2 0x791 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 0x85C DUP2 PUSH2 0x7B4 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x878 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x7D7 JUMP JUMPDEST SWAP3 SWAP2 POP 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 0x8A5 DUP3 PUSH2 0x962 JUMP JUMPDEST SWAP2 POP PUSH2 0x8B0 DUP4 PUSH2 0x962 JUMP JUMPDEST SWAP3 POP DUP3 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SUB DUP3 GT ISZERO PUSH2 0x8E5 JUMPI PUSH2 0x8E4 PUSH2 0x9D1 JUMP JUMPDEST JUMPDEST DUP3 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8FB DUP3 PUSH2 0x962 JUMP JUMPDEST SWAP2 POP PUSH2 0x906 DUP4 PUSH2 0x962 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 LT ISZERO PUSH2 0x919 JUMPI PUSH2 0x918 PUSH2 0x9D1 JUMP JUMPDEST JUMPDEST DUP3 DUP3 SUB SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x92F DUP3 PUSH2 0x942 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO ISZERO 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 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x98A JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x96F JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x999 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 0x9B7 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 EQ ISZERO PUSH2 0x9CB JUMPI PUSH2 0x9CA PUSH2 0xA00 JUMP JUMPDEST JUMPDEST POP SWAP2 SWAP1 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 PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x496E73756666696369656E7420616C6C6F77616E636500000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH32 0x5472616E736665727265642076616C7565206973207A65726F00000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH2 0xA9B DUP2 PUSH2 0x924 JUMP JUMPDEST DUP2 EQ PUSH2 0xAA6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0xAB2 DUP2 PUSH2 0x962 JUMP JUMPDEST DUP2 EQ PUSH2 0xABD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xA6 0xFC 0xD0 0x4A 0xA8 SWAP4 CALLDATASIZE DUP14 0xE RETURNDATACOPY SWAP11 STOP 0x4A DUP5 DUP9 DIFFICULTY 0xC5 KECCAK256 PUSH3 0x3183D6 0xB2 GT 0x1F 0xBC PUSH16 0x837204D0FA64736F6C63430008040033 ","sourceMap":"1144:95:3:-:0;;;119:1;96:24;;1204:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1144:95;;;;;;;;;;292:13;278:11;:27;;;;335:11;;311:9;:21;321:10;311:21;;;;;;;;;;;;;;;:35;;;;1144:95;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;7:320:4:-;51:6;88:1;82:4;78:12;68:22;;135:1;129:4;125:12;156:18;146:2;;212:4;204:6;200:17;190:27;;146:2;274;266:6;263:14;243:18;240:38;237:2;;;293:18;;:::i;:::-;237:2;58:269;;;;:::o;333:180::-;381:77;378:1;371:88;478:4;475:1;468:15;502:4;499:1;492:15;1144:95:3;;;;;;;"},"deployedBytecode":{"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:7847:4","statements":[{"body":{"nodeType":"YulBlock","src":"59:87:4","statements":[{"nodeType":"YulAssignment","src":"69:29:4","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"91:6:4"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"78:12:4"},"nodeType":"YulFunctionCall","src":"78:20:4"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"69:5:4"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"134:5:4"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"107:26:4"},"nodeType":"YulFunctionCall","src":"107:33:4"},"nodeType":"YulExpressionStatement","src":"107:33:4"}]},"name":"abi_decode_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"37:6:4","type":""},{"name":"end","nodeType":"YulTypedName","src":"45:3:4","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"53:5:4","type":""}],"src":"7:139:4"},{"body":{"nodeType":"YulBlock","src":"204:87:4","statements":[{"nodeType":"YulAssignment","src":"214:29:4","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"236:6:4"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"223:12:4"},"nodeType":"YulFunctionCall","src":"223:20:4"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"214:5:4"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"279:5:4"}],"functionName":{"name":"validator_revert_t_uint256","nodeType":"YulIdentifier","src":"252:26:4"},"nodeType":"YulFunctionCall","src":"252:33:4"},"nodeType":"YulExpressionStatement","src":"252:33:4"}]},"name":"abi_decode_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"182:6:4","type":""},{"name":"end","nodeType":"YulTypedName","src":"190:3:4","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"198:5:4","type":""}],"src":"152:139:4"},{"body":{"nodeType":"YulBlock","src":"363:196:4","statements":[{"body":{"nodeType":"YulBlock","src":"409:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"418:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"421:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"411:6:4"},"nodeType":"YulFunctionCall","src":"411:12:4"},"nodeType":"YulExpressionStatement","src":"411:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"384:7:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"393:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"380:3:4"},"nodeType":"YulFunctionCall","src":"380:23:4"},{"kind":"number","nodeType":"YulLiteral","src":"405:2:4","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"376:3:4"},"nodeType":"YulFunctionCall","src":"376:32:4"},"nodeType":"YulIf","src":"373:2:4"},{"nodeType":"YulBlock","src":"435:117:4","statements":[{"nodeType":"YulVariableDeclaration","src":"450:15:4","value":{"kind":"number","nodeType":"YulLiteral","src":"464:1:4","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"454:6:4","type":""}]},{"nodeType":"YulAssignment","src":"479:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"514:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"525:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"510:3:4"},"nodeType":"YulFunctionCall","src":"510:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"534:7:4"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"489:20:4"},"nodeType":"YulFunctionCall","src":"489:53:4"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"479:6:4"}]}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"333:9:4","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"344:7:4","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"356:6:4","type":""}],"src":"297:262:4"},{"body":{"nodeType":"YulBlock","src":"648:324:4","statements":[{"body":{"nodeType":"YulBlock","src":"694:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"703:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"706:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"696:6:4"},"nodeType":"YulFunctionCall","src":"696:12:4"},"nodeType":"YulExpressionStatement","src":"696:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"669:7:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"678:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"665:3:4"},"nodeType":"YulFunctionCall","src":"665:23:4"},{"kind":"number","nodeType":"YulLiteral","src":"690:2:4","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"661:3:4"},"nodeType":"YulFunctionCall","src":"661:32:4"},"nodeType":"YulIf","src":"658:2:4"},{"nodeType":"YulBlock","src":"720:117:4","statements":[{"nodeType":"YulVariableDeclaration","src":"735:15:4","value":{"kind":"number","nodeType":"YulLiteral","src":"749:1:4","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"739:6:4","type":""}]},{"nodeType":"YulAssignment","src":"764:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"799:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"810:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"795:3:4"},"nodeType":"YulFunctionCall","src":"795:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"819:7:4"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"774:20:4"},"nodeType":"YulFunctionCall","src":"774:53:4"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"764:6:4"}]}]},{"nodeType":"YulBlock","src":"847:118:4","statements":[{"nodeType":"YulVariableDeclaration","src":"862:16:4","value":{"kind":"number","nodeType":"YulLiteral","src":"876:2:4","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"866:6:4","type":""}]},{"nodeType":"YulAssignment","src":"892:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"927:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"938:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"923:3:4"},"nodeType":"YulFunctionCall","src":"923:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"947:7:4"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"902:20:4"},"nodeType":"YulFunctionCall","src":"902:53:4"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"892:6:4"}]}]}]},"name":"abi_decode_tuple_t_addresst_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"610:9:4","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"621:7:4","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"633:6:4","type":""},{"name":"value1","nodeType":"YulTypedName","src":"641:6:4","type":""}],"src":"565:407:4"},{"body":{"nodeType":"YulBlock","src":"1078:452:4","statements":[{"body":{"nodeType":"YulBlock","src":"1124:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1133:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1136:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1126:6:4"},"nodeType":"YulFunctionCall","src":"1126:12:4"},"nodeType":"YulExpressionStatement","src":"1126:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1099:7:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"1108:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1095:3:4"},"nodeType":"YulFunctionCall","src":"1095:23:4"},{"kind":"number","nodeType":"YulLiteral","src":"1120:2:4","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1091:3:4"},"nodeType":"YulFunctionCall","src":"1091:32:4"},"nodeType":"YulIf","src":"1088:2:4"},{"nodeType":"YulBlock","src":"1150:117:4","statements":[{"nodeType":"YulVariableDeclaration","src":"1165:15:4","value":{"kind":"number","nodeType":"YulLiteral","src":"1179:1:4","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1169:6:4","type":""}]},{"nodeType":"YulAssignment","src":"1194:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1229:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"1240:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1225:3:4"},"nodeType":"YulFunctionCall","src":"1225:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1249:7:4"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"1204:20:4"},"nodeType":"YulFunctionCall","src":"1204:53:4"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1194:6:4"}]}]},{"nodeType":"YulBlock","src":"1277:118:4","statements":[{"nodeType":"YulVariableDeclaration","src":"1292:16:4","value":{"kind":"number","nodeType":"YulLiteral","src":"1306:2:4","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1296:6:4","type":""}]},{"nodeType":"YulAssignment","src":"1322:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1357:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"1368:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1353:3:4"},"nodeType":"YulFunctionCall","src":"1353:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1377:7:4"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"1332:20:4"},"nodeType":"YulFunctionCall","src":"1332:53:4"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1322:6:4"}]}]},{"nodeType":"YulBlock","src":"1405:118:4","statements":[{"nodeType":"YulVariableDeclaration","src":"1420:16:4","value":{"kind":"number","nodeType":"YulLiteral","src":"1434:2:4","type":"","value":"64"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1424:6:4","type":""}]},{"nodeType":"YulAssignment","src":"1450:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1485:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"1496:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1481:3:4"},"nodeType":"YulFunctionCall","src":"1481:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1505:7:4"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"1460:20:4"},"nodeType":"YulFunctionCall","src":"1460:53:4"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"1450:6:4"}]}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1032:9:4","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1043:7:4","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1055:6:4","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1063:6:4","type":""},{"name":"value2","nodeType":"YulTypedName","src":"1071:6:4","type":""}],"src":"978:552:4"},{"body":{"nodeType":"YulBlock","src":"1619:324:4","statements":[{"body":{"nodeType":"YulBlock","src":"1665:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1674:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1677:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1667:6:4"},"nodeType":"YulFunctionCall","src":"1667:12:4"},"nodeType":"YulExpressionStatement","src":"1667:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1640:7:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"1649:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1636:3:4"},"nodeType":"YulFunctionCall","src":"1636:23:4"},{"kind":"number","nodeType":"YulLiteral","src":"1661:2:4","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1632:3:4"},"nodeType":"YulFunctionCall","src":"1632:32:4"},"nodeType":"YulIf","src":"1629:2:4"},{"nodeType":"YulBlock","src":"1691:117:4","statements":[{"nodeType":"YulVariableDeclaration","src":"1706:15:4","value":{"kind":"number","nodeType":"YulLiteral","src":"1720:1:4","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1710:6:4","type":""}]},{"nodeType":"YulAssignment","src":"1735:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1770:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"1781:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1766:3:4"},"nodeType":"YulFunctionCall","src":"1766:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1790:7:4"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"1745:20:4"},"nodeType":"YulFunctionCall","src":"1745:53:4"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1735:6:4"}]}]},{"nodeType":"YulBlock","src":"1818:118:4","statements":[{"nodeType":"YulVariableDeclaration","src":"1833:16:4","value":{"kind":"number","nodeType":"YulLiteral","src":"1847:2:4","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1837:6:4","type":""}]},{"nodeType":"YulAssignment","src":"1863:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1898:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"1909:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1894:3:4"},"nodeType":"YulFunctionCall","src":"1894:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1918:7:4"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"1873:20:4"},"nodeType":"YulFunctionCall","src":"1873:53:4"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1863:6:4"}]}]}]},"name":"abi_decode_tuple_t_addresst_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1581:9:4","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1592:7:4","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1604:6:4","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1612:6:4","type":""}],"src":"1536:407:4"},{"body":{"nodeType":"YulBlock","src":"2008:50:4","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2025:3:4"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2045:5:4"}],"functionName":{"name":"cleanup_t_bool","nodeType":"YulIdentifier","src":"2030:14:4"},"nodeType":"YulFunctionCall","src":"2030:21:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2018:6:4"},"nodeType":"YulFunctionCall","src":"2018:34:4"},"nodeType":"YulExpressionStatement","src":"2018:34:4"}]},"name":"abi_encode_t_bool_to_t_bool_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1996:5:4","type":""},{"name":"pos","nodeType":"YulTypedName","src":"2003:3:4","type":""}],"src":"1949:109:4"},{"body":{"nodeType":"YulBlock","src":"2156:272:4","statements":[{"nodeType":"YulVariableDeclaration","src":"2166:53:4","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2213:5:4"}],"functionName":{"name":"array_length_t_string_memory_ptr","nodeType":"YulIdentifier","src":"2180:32:4"},"nodeType":"YulFunctionCall","src":"2180:39:4"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"2170:6:4","type":""}]},{"nodeType":"YulAssignment","src":"2228:78:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2294:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"2299:6:4"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"2235:58:4"},"nodeType":"YulFunctionCall","src":"2235:71:4"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"2228:3:4"}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2341:5:4"},{"kind":"number","nodeType":"YulLiteral","src":"2348:4:4","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2337:3:4"},"nodeType":"YulFunctionCall","src":"2337:16:4"},{"name":"pos","nodeType":"YulIdentifier","src":"2355:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"2360:6:4"}],"functionName":{"name":"copy_memory_to_memory","nodeType":"YulIdentifier","src":"2315:21:4"},"nodeType":"YulFunctionCall","src":"2315:52:4"},"nodeType":"YulExpressionStatement","src":"2315:52:4"},{"nodeType":"YulAssignment","src":"2376:46:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2387:3:4"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"2414:6:4"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"2392:21:4"},"nodeType":"YulFunctionCall","src":"2392:29:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2383:3:4"},"nodeType":"YulFunctionCall","src":"2383:39:4"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"2376:3:4"}]}]},"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"2137:5:4","type":""},{"name":"pos","nodeType":"YulTypedName","src":"2144:3:4","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"2152:3:4","type":""}],"src":"2064:364:4"},{"body":{"nodeType":"YulBlock","src":"2580:220:4","statements":[{"nodeType":"YulAssignment","src":"2590:74:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2656:3:4"},{"kind":"number","nodeType":"YulLiteral","src":"2661:2:4","type":"","value":"22"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"2597:58:4"},"nodeType":"YulFunctionCall","src":"2597:67:4"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"2590:3:4"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2762:3:4"}],"functionName":{"name":"store_literal_in_memory_45e3d26e36c3151c7f92a1eee9add9658cbb8e14605ee2452ec007389b9744bc","nodeType":"YulIdentifier","src":"2673:88:4"},"nodeType":"YulFunctionCall","src":"2673:93:4"},"nodeType":"YulExpressionStatement","src":"2673:93:4"},{"nodeType":"YulAssignment","src":"2775:19:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2786:3:4"},{"kind":"number","nodeType":"YulLiteral","src":"2791:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2782:3:4"},"nodeType":"YulFunctionCall","src":"2782:12:4"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"2775:3:4"}]}]},"name":"abi_encode_t_stringliteral_45e3d26e36c3151c7f92a1eee9add9658cbb8e14605ee2452ec007389b9744bc_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"2568:3:4","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"2576:3:4","type":""}],"src":"2434:366:4"},{"body":{"nodeType":"YulBlock","src":"2952:220:4","statements":[{"nodeType":"YulAssignment","src":"2962:74:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3028:3:4"},{"kind":"number","nodeType":"YulLiteral","src":"3033:2:4","type":"","value":"25"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"2969:58:4"},"nodeType":"YulFunctionCall","src":"2969:67:4"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"2962:3:4"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3134:3:4"}],"functionName":{"name":"store_literal_in_memory_4ca3cd75a1831a94a24913bfd2c9b9d35acbb11ac3447f65bb0682cf14f63f5c","nodeType":"YulIdentifier","src":"3045:88:4"},"nodeType":"YulFunctionCall","src":"3045:93:4"},"nodeType":"YulExpressionStatement","src":"3045:93:4"},{"nodeType":"YulAssignment","src":"3147:19:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3158:3:4"},{"kind":"number","nodeType":"YulLiteral","src":"3163:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3154:3:4"},"nodeType":"YulFunctionCall","src":"3154:12:4"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"3147:3:4"}]}]},"name":"abi_encode_t_stringliteral_4ca3cd75a1831a94a24913bfd2c9b9d35acbb11ac3447f65bb0682cf14f63f5c_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"2940:3:4","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"2948:3:4","type":""}],"src":"2806:366:4"},{"body":{"nodeType":"YulBlock","src":"3243:53:4","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3260:3:4"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3283:5:4"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"3265:17:4"},"nodeType":"YulFunctionCall","src":"3265:24:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3253:6:4"},"nodeType":"YulFunctionCall","src":"3253:37:4"},"nodeType":"YulExpressionStatement","src":"3253:37:4"}]},"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"3231:5:4","type":""},{"name":"pos","nodeType":"YulTypedName","src":"3238:3:4","type":""}],"src":"3178:118:4"},{"body":{"nodeType":"YulBlock","src":"3394:118:4","statements":[{"nodeType":"YulAssignment","src":"3404:26:4","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3416:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"3427:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3412:3:4"},"nodeType":"YulFunctionCall","src":"3412:18:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3404:4:4"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3478:6:4"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3491:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"3502:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3487:3:4"},"nodeType":"YulFunctionCall","src":"3487:17:4"}],"functionName":{"name":"abi_encode_t_bool_to_t_bool_fromStack","nodeType":"YulIdentifier","src":"3440:37:4"},"nodeType":"YulFunctionCall","src":"3440:65:4"},"nodeType":"YulExpressionStatement","src":"3440:65:4"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3366:9:4","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3378:6:4","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3389:4:4","type":""}],"src":"3302:210:4"},{"body":{"nodeType":"YulBlock","src":"3636:195:4","statements":[{"nodeType":"YulAssignment","src":"3646:26:4","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3658:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"3669:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3654:3:4"},"nodeType":"YulFunctionCall","src":"3654:18:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3646:4:4"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3693:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"3704:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3689:3:4"},"nodeType":"YulFunctionCall","src":"3689:17:4"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"3712:4:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"3718:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3708:3:4"},"nodeType":"YulFunctionCall","src":"3708:20:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3682:6:4"},"nodeType":"YulFunctionCall","src":"3682:47:4"},"nodeType":"YulExpressionStatement","src":"3682:47:4"},{"nodeType":"YulAssignment","src":"3738:86:4","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3810:6:4"},{"name":"tail","nodeType":"YulIdentifier","src":"3819:4:4"}],"functionName":{"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"3746:63:4"},"nodeType":"YulFunctionCall","src":"3746:78:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3738:4:4"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3608:9:4","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3620:6:4","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3631:4:4","type":""}],"src":"3518:313:4"},{"body":{"nodeType":"YulBlock","src":"4008:248:4","statements":[{"nodeType":"YulAssignment","src":"4018:26:4","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4030:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"4041:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4026:3:4"},"nodeType":"YulFunctionCall","src":"4026:18:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4018:4:4"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4065:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"4076:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4061:3:4"},"nodeType":"YulFunctionCall","src":"4061:17:4"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"4084:4:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"4090:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4080:3:4"},"nodeType":"YulFunctionCall","src":"4080:20:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4054:6:4"},"nodeType":"YulFunctionCall","src":"4054:47:4"},"nodeType":"YulExpressionStatement","src":"4054:47:4"},{"nodeType":"YulAssignment","src":"4110:139:4","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"4244:4:4"}],"functionName":{"name":"abi_encode_t_stringliteral_45e3d26e36c3151c7f92a1eee9add9658cbb8e14605ee2452ec007389b9744bc_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"4118:124:4"},"nodeType":"YulFunctionCall","src":"4118:131:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4110:4:4"}]}]},"name":"abi_encode_tuple_t_stringliteral_45e3d26e36c3151c7f92a1eee9add9658cbb8e14605ee2452ec007389b9744bc__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3988:9:4","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4003:4:4","type":""}],"src":"3837:419:4"},{"body":{"nodeType":"YulBlock","src":"4433:248:4","statements":[{"nodeType":"YulAssignment","src":"4443:26:4","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4455:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"4466:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4451:3:4"},"nodeType":"YulFunctionCall","src":"4451:18:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4443:4:4"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4490:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"4501:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4486:3:4"},"nodeType":"YulFunctionCall","src":"4486:17:4"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"4509:4:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"4515:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4505:3:4"},"nodeType":"YulFunctionCall","src":"4505:20:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4479:6:4"},"nodeType":"YulFunctionCall","src":"4479:47:4"},"nodeType":"YulExpressionStatement","src":"4479:47:4"},{"nodeType":"YulAssignment","src":"4535:139:4","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"4669:4:4"}],"functionName":{"name":"abi_encode_t_stringliteral_4ca3cd75a1831a94a24913bfd2c9b9d35acbb11ac3447f65bb0682cf14f63f5c_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"4543:124:4"},"nodeType":"YulFunctionCall","src":"4543:131:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4535:4:4"}]}]},"name":"abi_encode_tuple_t_stringliteral_4ca3cd75a1831a94a24913bfd2c9b9d35acbb11ac3447f65bb0682cf14f63f5c__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4413:9:4","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4428:4:4","type":""}],"src":"4262:419:4"},{"body":{"nodeType":"YulBlock","src":"4785:124:4","statements":[{"nodeType":"YulAssignment","src":"4795:26:4","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4807:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"4818:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4803:3:4"},"nodeType":"YulFunctionCall","src":"4803:18:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4795:4:4"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4875:6:4"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4888:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"4899:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4884:3:4"},"nodeType":"YulFunctionCall","src":"4884:17:4"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"4831:43:4"},"nodeType":"YulFunctionCall","src":"4831:71:4"},"nodeType":"YulExpressionStatement","src":"4831:71:4"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4757:9:4","type":""},{"name":"value0","nodeType":"YulTypedName","src":"4769:6:4","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4780:4:4","type":""}],"src":"4687:222:4"},{"body":{"nodeType":"YulBlock","src":"4974:40:4","statements":[{"nodeType":"YulAssignment","src":"4985:22:4","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5001:5:4"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4995:5:4"},"nodeType":"YulFunctionCall","src":"4995:12:4"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"4985:6:4"}]}]},"name":"array_length_t_string_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"4957:5:4","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"4967:6:4","type":""}],"src":"4915:99:4"},{"body":{"nodeType":"YulBlock","src":"5116:73:4","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5133:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"5138:6:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5126:6:4"},"nodeType":"YulFunctionCall","src":"5126:19:4"},"nodeType":"YulExpressionStatement","src":"5126:19:4"},{"nodeType":"YulAssignment","src":"5154:29:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5173:3:4"},{"kind":"number","nodeType":"YulLiteral","src":"5178:4:4","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5169:3:4"},"nodeType":"YulFunctionCall","src":"5169:14:4"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"5154:11:4"}]}]},"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"5088:3:4","type":""},{"name":"length","nodeType":"YulTypedName","src":"5093:6:4","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"5104:11:4","type":""}],"src":"5020:169:4"},{"body":{"nodeType":"YulBlock","src":"5239:261:4","statements":[{"nodeType":"YulAssignment","src":"5249:25:4","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"5272:1:4"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"5254:17:4"},"nodeType":"YulFunctionCall","src":"5254:20:4"},"variableNames":[{"name":"x","nodeType":"YulIdentifier","src":"5249:1:4"}]},{"nodeType":"YulAssignment","src":"5283:25:4","value":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"5306:1:4"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"5288:17:4"},"nodeType":"YulFunctionCall","src":"5288:20:4"},"variableNames":[{"name":"y","nodeType":"YulIdentifier","src":"5283:1:4"}]},{"body":{"nodeType":"YulBlock","src":"5446:22:4","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"5448:16:4"},"nodeType":"YulFunctionCall","src":"5448:18:4"},"nodeType":"YulExpressionStatement","src":"5448:18:4"}]},"condition":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"5367:1:4"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5374:66:4","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"},{"name":"y","nodeType":"YulIdentifier","src":"5442:1:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5370:3:4"},"nodeType":"YulFunctionCall","src":"5370:74:4"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5364:2:4"},"nodeType":"YulFunctionCall","src":"5364:81:4"},"nodeType":"YulIf","src":"5361:2:4"},{"nodeType":"YulAssignment","src":"5478:16:4","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"5489:1:4"},{"name":"y","nodeType":"YulIdentifier","src":"5492:1:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5485:3:4"},"nodeType":"YulFunctionCall","src":"5485:9:4"},"variableNames":[{"name":"sum","nodeType":"YulIdentifier","src":"5478:3:4"}]}]},"name":"checked_add_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"5226:1:4","type":""},{"name":"y","nodeType":"YulTypedName","src":"5229:1:4","type":""}],"returnVariables":[{"name":"sum","nodeType":"YulTypedName","src":"5235:3:4","type":""}],"src":"5195:305:4"},{"body":{"nodeType":"YulBlock","src":"5551:146:4","statements":[{"nodeType":"YulAssignment","src":"5561:25:4","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"5584:1:4"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"5566:17:4"},"nodeType":"YulFunctionCall","src":"5566:20:4"},"variableNames":[{"name":"x","nodeType":"YulIdentifier","src":"5561:1:4"}]},{"nodeType":"YulAssignment","src":"5595:25:4","value":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"5618:1:4"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"5600:17:4"},"nodeType":"YulFunctionCall","src":"5600:20:4"},"variableNames":[{"name":"y","nodeType":"YulIdentifier","src":"5595:1:4"}]},{"body":{"nodeType":"YulBlock","src":"5642:22:4","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"5644:16:4"},"nodeType":"YulFunctionCall","src":"5644:18:4"},"nodeType":"YulExpressionStatement","src":"5644:18:4"}]},"condition":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"5636:1:4"},{"name":"y","nodeType":"YulIdentifier","src":"5639:1:4"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"5633:2:4"},"nodeType":"YulFunctionCall","src":"5633:8:4"},"nodeType":"YulIf","src":"5630:2:4"},{"nodeType":"YulAssignment","src":"5674:17:4","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"5686:1:4"},{"name":"y","nodeType":"YulIdentifier","src":"5689:1:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5682:3:4"},"nodeType":"YulFunctionCall","src":"5682:9:4"},"variableNames":[{"name":"diff","nodeType":"YulIdentifier","src":"5674:4:4"}]}]},"name":"checked_sub_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"5537:1:4","type":""},{"name":"y","nodeType":"YulTypedName","src":"5540:1:4","type":""}],"returnVariables":[{"name":"diff","nodeType":"YulTypedName","src":"5546:4:4","type":""}],"src":"5506:191:4"},{"body":{"nodeType":"YulBlock","src":"5748:51:4","statements":[{"nodeType":"YulAssignment","src":"5758:35:4","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5787:5:4"}],"functionName":{"name":"cleanup_t_uint160","nodeType":"YulIdentifier","src":"5769:17:4"},"nodeType":"YulFunctionCall","src":"5769:24:4"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"5758:7:4"}]}]},"name":"cleanup_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"5730:5:4","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"5740:7:4","type":""}],"src":"5703:96:4"},{"body":{"nodeType":"YulBlock","src":"5847:48:4","statements":[{"nodeType":"YulAssignment","src":"5857:32:4","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5882:5:4"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"5875:6:4"},"nodeType":"YulFunctionCall","src":"5875:13:4"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"5868:6:4"},"nodeType":"YulFunctionCall","src":"5868:21:4"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"5857:7:4"}]}]},"name":"cleanup_t_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"5829:5:4","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"5839:7:4","type":""}],"src":"5805:90:4"},{"body":{"nodeType":"YulBlock","src":"5946:81:4","statements":[{"nodeType":"YulAssignment","src":"5956:65:4","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5971:5:4"},{"kind":"number","nodeType":"YulLiteral","src":"5978:42:4","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5967:3:4"},"nodeType":"YulFunctionCall","src":"5967:54:4"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"5956:7:4"}]}]},"name":"cleanup_t_uint160","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"5928:5:4","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"5938:7:4","type":""}],"src":"5901:126:4"},{"body":{"nodeType":"YulBlock","src":"6078:32:4","statements":[{"nodeType":"YulAssignment","src":"6088:16:4","value":{"name":"value","nodeType":"YulIdentifier","src":"6099:5:4"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"6088:7:4"}]}]},"name":"cleanup_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"6060:5:4","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"6070:7:4","type":""}],"src":"6033:77:4"},{"body":{"nodeType":"YulBlock","src":"6165:258:4","statements":[{"nodeType":"YulVariableDeclaration","src":"6175:10:4","value":{"kind":"number","nodeType":"YulLiteral","src":"6184:1:4","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"6179:1:4","type":""}]},{"body":{"nodeType":"YulBlock","src":"6244:63:4","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"6269:3:4"},{"name":"i","nodeType":"YulIdentifier","src":"6274:1:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6265:3:4"},"nodeType":"YulFunctionCall","src":"6265:11:4"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"6288:3:4"},{"name":"i","nodeType":"YulIdentifier","src":"6293:1:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6284:3:4"},"nodeType":"YulFunctionCall","src":"6284:11:4"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6278:5:4"},"nodeType":"YulFunctionCall","src":"6278:18:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6258:6:4"},"nodeType":"YulFunctionCall","src":"6258:39:4"},"nodeType":"YulExpressionStatement","src":"6258:39:4"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"6205:1:4"},{"name":"length","nodeType":"YulIdentifier","src":"6208:6:4"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"6202:2:4"},"nodeType":"YulFunctionCall","src":"6202:13:4"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"6216:19:4","statements":[{"nodeType":"YulAssignment","src":"6218:15:4","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"6227:1:4"},{"kind":"number","nodeType":"YulLiteral","src":"6230:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6223:3:4"},"nodeType":"YulFunctionCall","src":"6223:10:4"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"6218:1:4"}]}]},"pre":{"nodeType":"YulBlock","src":"6198:3:4","statements":[]},"src":"6194:113:4"},{"body":{"nodeType":"YulBlock","src":"6341:76:4","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"6391:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"6396:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6387:3:4"},"nodeType":"YulFunctionCall","src":"6387:16:4"},{"kind":"number","nodeType":"YulLiteral","src":"6405:1:4","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6380:6:4"},"nodeType":"YulFunctionCall","src":"6380:27:4"},"nodeType":"YulExpressionStatement","src":"6380:27:4"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"6322:1:4"},{"name":"length","nodeType":"YulIdentifier","src":"6325:6:4"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"6319:2:4"},"nodeType":"YulFunctionCall","src":"6319:13:4"},"nodeType":"YulIf","src":"6316:2:4"}]},"name":"copy_memory_to_memory","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"6147:3:4","type":""},{"name":"dst","nodeType":"YulTypedName","src":"6152:3:4","type":""},{"name":"length","nodeType":"YulTypedName","src":"6157:6:4","type":""}],"src":"6116:307:4"},{"body":{"nodeType":"YulBlock","src":"6480:269:4","statements":[{"nodeType":"YulAssignment","src":"6490:22:4","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"6504:4:4"},{"kind":"number","nodeType":"YulLiteral","src":"6510:1:4","type":"","value":"2"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"6500:3:4"},"nodeType":"YulFunctionCall","src":"6500:12:4"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"6490:6:4"}]},{"nodeType":"YulVariableDeclaration","src":"6521:38:4","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"6551:4:4"},{"kind":"number","nodeType":"YulLiteral","src":"6557:1:4","type":"","value":"1"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"6547:3:4"},"nodeType":"YulFunctionCall","src":"6547:12:4"},"variables":[{"name":"outOfPlaceEncoding","nodeType":"YulTypedName","src":"6525:18:4","type":""}]},{"body":{"nodeType":"YulBlock","src":"6598:51:4","statements":[{"nodeType":"YulAssignment","src":"6612:27:4","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"6626:6:4"},{"kind":"number","nodeType":"YulLiteral","src":"6634:4:4","type":"","value":"0x7f"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"6622:3:4"},"nodeType":"YulFunctionCall","src":"6622:17:4"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"6612:6:4"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"6578:18:4"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"6571:6:4"},"nodeType":"YulFunctionCall","src":"6571:26:4"},"nodeType":"YulIf","src":"6568:2:4"},{"body":{"nodeType":"YulBlock","src":"6701:42:4","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x22","nodeType":"YulIdentifier","src":"6715:16:4"},"nodeType":"YulFunctionCall","src":"6715:18:4"},"nodeType":"YulExpressionStatement","src":"6715:18:4"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"6665:18:4"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"6688:6:4"},{"kind":"number","nodeType":"YulLiteral","src":"6696:2:4","type":"","value":"32"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"6685:2:4"},"nodeType":"YulFunctionCall","src":"6685:14:4"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"6662:2:4"},"nodeType":"YulFunctionCall","src":"6662:38:4"},"nodeType":"YulIf","src":"6659:2:4"}]},"name":"extract_byte_array_length","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"6464:4:4","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"6473:6:4","type":""}],"src":"6429:320:4"},{"body":{"nodeType":"YulBlock","src":"6783:152:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6800:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6803:77:4","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6793:6:4"},"nodeType":"YulFunctionCall","src":"6793:88:4"},"nodeType":"YulExpressionStatement","src":"6793:88:4"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6897:1:4","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"6900:4:4","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6890:6:4"},"nodeType":"YulFunctionCall","src":"6890:15:4"},"nodeType":"YulExpressionStatement","src":"6890:15:4"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6921:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6924:4:4","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6914:6:4"},"nodeType":"YulFunctionCall","src":"6914:15:4"},"nodeType":"YulExpressionStatement","src":"6914:15:4"}]},"name":"panic_error_0x11","nodeType":"YulFunctionDefinition","src":"6755:180:4"},{"body":{"nodeType":"YulBlock","src":"6969:152:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6986:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6989:77:4","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6979:6:4"},"nodeType":"YulFunctionCall","src":"6979:88:4"},"nodeType":"YulExpressionStatement","src":"6979:88:4"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7083:1:4","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"7086:4:4","type":"","value":"0x22"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7076:6:4"},"nodeType":"YulFunctionCall","src":"7076:15:4"},"nodeType":"YulExpressionStatement","src":"7076:15:4"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7107:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7110:4:4","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7100:6:4"},"nodeType":"YulFunctionCall","src":"7100:15:4"},"nodeType":"YulExpressionStatement","src":"7100:15:4"}]},"name":"panic_error_0x22","nodeType":"YulFunctionDefinition","src":"6941:180:4"},{"body":{"nodeType":"YulBlock","src":"7175:54:4","statements":[{"nodeType":"YulAssignment","src":"7185:38:4","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"7203:5:4"},{"kind":"number","nodeType":"YulLiteral","src":"7210:2:4","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7199:3:4"},"nodeType":"YulFunctionCall","src":"7199:14:4"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7219:2:4","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"7215:3:4"},"nodeType":"YulFunctionCall","src":"7215:7:4"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7195:3:4"},"nodeType":"YulFunctionCall","src":"7195:28:4"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"7185:6:4"}]}]},"name":"round_up_to_mul_of_32","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"7158:5:4","type":""}],"returnVariables":[{"name":"result","nodeType":"YulTypedName","src":"7168:6:4","type":""}],"src":"7127:102:4"},{"body":{"nodeType":"YulBlock","src":"7341:66:4","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7363:6:4"},{"kind":"number","nodeType":"YulLiteral","src":"7371:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7359:3:4"},"nodeType":"YulFunctionCall","src":"7359:14:4"},{"kind":"string","nodeType":"YulLiteral","src":"7375:24:4","type":"","value":"Insufficient allowance"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7352:6:4"},"nodeType":"YulFunctionCall","src":"7352:48:4"},"nodeType":"YulExpressionStatement","src":"7352:48:4"}]},"name":"store_literal_in_memory_45e3d26e36c3151c7f92a1eee9add9658cbb8e14605ee2452ec007389b9744bc","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"7333:6:4","type":""}],"src":"7235:172:4"},{"body":{"nodeType":"YulBlock","src":"7519:69:4","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7541:6:4"},{"kind":"number","nodeType":"YulLiteral","src":"7549:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7537:3:4"},"nodeType":"YulFunctionCall","src":"7537:14:4"},{"kind":"string","nodeType":"YulLiteral","src":"7553:27:4","type":"","value":"Transferred value is zero"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7530:6:4"},"nodeType":"YulFunctionCall","src":"7530:51:4"},"nodeType":"YulExpressionStatement","src":"7530:51:4"}]},"name":"store_literal_in_memory_4ca3cd75a1831a94a24913bfd2c9b9d35acbb11ac3447f65bb0682cf14f63f5c","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"7511:6:4","type":""}],"src":"7413:175:4"},{"body":{"nodeType":"YulBlock","src":"7637:79:4","statements":[{"body":{"nodeType":"YulBlock","src":"7694:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7703:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7706:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7696:6:4"},"nodeType":"YulFunctionCall","src":"7696:12:4"},"nodeType":"YulExpressionStatement","src":"7696:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"7660:5:4"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"7685:5:4"}],"functionName":{"name":"cleanup_t_address","nodeType":"YulIdentifier","src":"7667:17:4"},"nodeType":"YulFunctionCall","src":"7667:24:4"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"7657:2:4"},"nodeType":"YulFunctionCall","src":"7657:35:4"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"7650:6:4"},"nodeType":"YulFunctionCall","src":"7650:43:4"},"nodeType":"YulIf","src":"7647:2:4"}]},"name":"validator_revert_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"7630:5:4","type":""}],"src":"7594:122:4"},{"body":{"nodeType":"YulBlock","src":"7765:79:4","statements":[{"body":{"nodeType":"YulBlock","src":"7822:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7831:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7834:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7824:6:4"},"nodeType":"YulFunctionCall","src":"7824:12:4"},"nodeType":"YulExpressionStatement","src":"7824:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"7788:5:4"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"7813:5:4"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"7795:17:4"},"nodeType":"YulFunctionCall","src":"7795:24:4"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"7785:2:4"},"nodeType":"YulFunctionCall","src":"7785:35:4"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"7778:6:4"},"nodeType":"YulFunctionCall","src":"7778:43:4"},"nodeType":"YulIf","src":"7775:2:4"}]},"name":"validator_revert_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"7758:5:4","type":""}],"src":"7722:122:4"}]},"contents":"{\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_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_addresst_address(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(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2 {\n if slt(sub(dataEnd, headStart), 96) { 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 let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_addresst_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(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_encode_t_bool_to_t_bool_fromStack(value, pos) {\n mstore(pos, cleanup_t_bool(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_45e3d26e36c3151c7f92a1eee9add9658cbb8e14605ee2452ec007389b9744bc_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 22)\n store_literal_in_memory_45e3d26e36c3151c7f92a1eee9add9658cbb8e14605ee2452ec007389b9744bc(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_t_stringliteral_4ca3cd75a1831a94a24913bfd2c9b9d35acbb11ac3447f65bb0682cf14f63f5c_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 25)\n store_literal_in_memory_4ca3cd75a1831a94a24913bfd2c9b9d35acbb11ac3447f65bb0682cf14f63f5c(pos)\n end := add(pos, 32)\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_bool__to_t_bool__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_bool_to_t_bool_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_45e3d26e36c3151c7f92a1eee9add9658cbb8e14605ee2452ec007389b9744bc__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_45e3d26e36c3151c7f92a1eee9add9658cbb8e14605ee2452ec007389b9744bc_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function abi_encode_tuple_t_stringliteral_4ca3cd75a1831a94a24913bfd2c9b9d35acbb11ac3447f65bb0682cf14f63f5c__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_4ca3cd75a1831a94a24913bfd2c9b9d35acbb11ac3447f65bb0682cf14f63f5c_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 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_bool(value) -> cleaned {\n cleaned := iszero(iszero(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_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 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 round_up_to_mul_of_32(value) -> result {\n result := and(add(value, 31), not(31))\n }\n\n function store_literal_in_memory_45e3d26e36c3151c7f92a1eee9add9658cbb8e14605ee2452ec007389b9744bc(memPtr) {\n\n mstore(add(memPtr, 0), \"Insufficient allowance\")\n\n }\n\n function store_literal_in_memory_4ca3cd75a1831a94a24913bfd2c9b9d35acbb11ac3447f65bb0682cf14f63f5c(memPtr) {\n\n mstore(add(memPtr, 0), \"Transferred value is zero\")\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_uint256(value) {\n if iszero(eq(value, cleanup_t_uint256(value))) { revert(0, 0) }\n }\n\n}\n","id":4,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100885760003560e01c8063313ce5671161005b578063313ce5671461012957806370a0823114610147578063a9059cbb14610177578063dd62ed3e146101a757610088565b806306fdde031461008d578063095ea7b3146100ab57806318160ddd146100db57806323b872dd146100f9575b600080fd5b6100956101d7565b6040516100a29190610801565b60405180910390f35b6100c560048036038101906100c0919061070d565b610265565b6040516100d291906107e6565b60405180910390f35b6100e36102f2565b6040516100f09190610863565b60405180910390f35b610113600480360381019061010e91906106be565b6102f8565b60405161012091906107e6565b60405180910390f35b610131610490565b60405161013e9190610863565b60405180910390f35b610161600480360381019061015c9190610659565b610496565b60405161016e9190610863565b60405180910390f35b610191600480360381019061018c919061070d565b6104ae565b60405161019e91906107e6565b60405180910390f35b6101c160048036038101906101bc9190610682565b6105a8565b6040516101ce9190610863565b60405180910390f35b600480546101e49061099f565b80601f01602080910402602001604051908101604052809291908181526020018280546102109061099f565b801561025d5780601f106102325761010080835404028352916020019161025d565b820191906000526020600020905b81548152906001019060200180831161024057829003601f168201915b505050505081565b600081600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001905092915050565b60015481565b60008161030585336105a8565b1015610346576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161033d90610823565b60405180910390fd5b81600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546103d291906108f0565b9250508190555081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461042891906108f0565b9250508190555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461047e919061089a565b92505081905550600190509392505050565b60005481565b60026020528060005260406000206000915090505481565b60008082116104f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104e990610843565b60405180910390fd5b81600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461054191906108f0565b9250508190555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610597919061089a565b925050819055506001905092915050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008135905061063e81610a92565b92915050565b60008135905061065381610aa9565b92915050565b60006020828403121561066b57600080fd5b60006106798482850161062f565b91505092915050565b6000806040838503121561069557600080fd5b60006106a38582860161062f565b92505060206106b48582860161062f565b9150509250929050565b6000806000606084860312156106d357600080fd5b60006106e18682870161062f565b93505060206106f28682870161062f565b925050604061070386828701610644565b9150509250925092565b6000806040838503121561072057600080fd5b600061072e8582860161062f565b925050602061073f85828601610644565b9150509250929050565b61075281610936565b82525050565b60006107638261087e565b61076d8185610889565b935061077d81856020860161096c565b61078681610a2f565b840191505092915050565b600061079e601683610889565b91506107a982610a40565b602082019050919050565b60006107c1601983610889565b91506107cc82610a69565b602082019050919050565b6107e081610962565b82525050565b60006020820190506107fb6000830184610749565b92915050565b6000602082019050818103600083015261081b8184610758565b905092915050565b6000602082019050818103600083015261083c81610791565b9050919050565b6000602082019050818103600083015261085c816107b4565b9050919050565b600060208201905061087860008301846107d7565b92915050565b600081519050919050565b600082825260208201905092915050565b60006108a582610962565b91506108b083610962565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156108e5576108e46109d1565b5b828201905092915050565b60006108fb82610962565b915061090683610962565b925082821015610919576109186109d1565b5b828203905092915050565b600061092f82610942565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b8381101561098a57808201518184015260208101905061096f565b83811115610999576000848401525b50505050565b600060028204905060018216806109b757607f821691505b602082108114156109cb576109ca610a00565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f496e73756666696369656e7420616c6c6f77616e636500000000000000000000600082015250565b7f5472616e736665727265642076616c7565206973207a65726f00000000000000600082015250565b610a9b81610924565b8114610aa657600080fd5b50565b610ab281610962565b8114610abd57600080fd5b5056fea2646970667358221220a6fcd04aa893368d0e3e9a004a848844c520623183d6b2111fbc6f837204d0fa64736f6c63430008040033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x88 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x313CE567 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x129 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x147 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x177 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x1A7 JUMPI PUSH2 0x88 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x8D JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0xAB JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0xDB JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0xF9 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x95 PUSH2 0x1D7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xA2 SWAP2 SWAP1 PUSH2 0x801 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xC5 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xC0 SWAP2 SWAP1 PUSH2 0x70D JUMP JUMPDEST PUSH2 0x265 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xD2 SWAP2 SWAP1 PUSH2 0x7E6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xE3 PUSH2 0x2F2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xF0 SWAP2 SWAP1 PUSH2 0x863 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x113 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x10E SWAP2 SWAP1 PUSH2 0x6BE JUMP JUMPDEST PUSH2 0x2F8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x120 SWAP2 SWAP1 PUSH2 0x7E6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x131 PUSH2 0x490 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x13E SWAP2 SWAP1 PUSH2 0x863 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x161 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x15C SWAP2 SWAP1 PUSH2 0x659 JUMP JUMPDEST PUSH2 0x496 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x16E SWAP2 SWAP1 PUSH2 0x863 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x191 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x18C SWAP2 SWAP1 PUSH2 0x70D JUMP JUMPDEST PUSH2 0x4AE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x19E SWAP2 SWAP1 PUSH2 0x7E6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1C1 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1BC SWAP2 SWAP1 PUSH2 0x682 JUMP JUMPDEST PUSH2 0x5A8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1CE SWAP2 SWAP1 PUSH2 0x863 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH2 0x1E4 SWAP1 PUSH2 0x99F 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 0x210 SWAP1 PUSH2 0x99F JUMP JUMPDEST DUP1 ISZERO PUSH2 0x25D JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x232 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x25D 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 0x240 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x3 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 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP PUSH1 0x1 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x305 DUP6 CALLER PUSH2 0x5A8 JUMP JUMPDEST LT ISZERO PUSH2 0x346 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x33D SWAP1 PUSH2 0x823 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 PUSH1 0x3 PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 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 0x3D2 SWAP2 SWAP1 PUSH2 0x8F0 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x2 PUSH1 0x0 DUP7 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 0x428 SWAP2 SWAP1 PUSH2 0x8F0 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x2 PUSH1 0x0 DUP6 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 0x47E SWAP2 SWAP1 PUSH2 0x89A JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH1 0x1 SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD 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 DUP3 GT PUSH2 0x4F2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4E9 SWAP1 PUSH2 0x843 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 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 0x541 SWAP2 SWAP1 PUSH2 0x8F0 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x2 PUSH1 0x0 DUP6 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 0x597 SWAP2 SWAP1 PUSH2 0x89A JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH1 0x1 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x3 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x63E DUP2 PUSH2 0xA92 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x653 DUP2 PUSH2 0xAA9 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x66B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x679 DUP5 DUP3 DUP6 ADD PUSH2 0x62F JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x695 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x6A3 DUP6 DUP3 DUP7 ADD PUSH2 0x62F JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x6B4 DUP6 DUP3 DUP7 ADD PUSH2 0x62F JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x6D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x6E1 DUP7 DUP3 DUP8 ADD PUSH2 0x62F JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x6F2 DUP7 DUP3 DUP8 ADD PUSH2 0x62F JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x703 DUP7 DUP3 DUP8 ADD PUSH2 0x644 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x720 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x72E DUP6 DUP3 DUP7 ADD PUSH2 0x62F JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x73F DUP6 DUP3 DUP7 ADD PUSH2 0x644 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH2 0x752 DUP2 PUSH2 0x936 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x763 DUP3 PUSH2 0x87E JUMP JUMPDEST PUSH2 0x76D DUP2 DUP6 PUSH2 0x889 JUMP JUMPDEST SWAP4 POP PUSH2 0x77D DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x96C JUMP JUMPDEST PUSH2 0x786 DUP2 PUSH2 0xA2F JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x79E PUSH1 0x16 DUP4 PUSH2 0x889 JUMP JUMPDEST SWAP2 POP PUSH2 0x7A9 DUP3 PUSH2 0xA40 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7C1 PUSH1 0x19 DUP4 PUSH2 0x889 JUMP JUMPDEST SWAP2 POP PUSH2 0x7CC DUP3 PUSH2 0xA69 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x7E0 DUP2 PUSH2 0x962 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x7FB PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x749 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 0x81B DUP2 DUP5 PUSH2 0x758 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 0x83C DUP2 PUSH2 0x791 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 0x85C DUP2 PUSH2 0x7B4 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x878 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x7D7 JUMP JUMPDEST SWAP3 SWAP2 POP 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 0x8A5 DUP3 PUSH2 0x962 JUMP JUMPDEST SWAP2 POP PUSH2 0x8B0 DUP4 PUSH2 0x962 JUMP JUMPDEST SWAP3 POP DUP3 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SUB DUP3 GT ISZERO PUSH2 0x8E5 JUMPI PUSH2 0x8E4 PUSH2 0x9D1 JUMP JUMPDEST JUMPDEST DUP3 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8FB DUP3 PUSH2 0x962 JUMP JUMPDEST SWAP2 POP PUSH2 0x906 DUP4 PUSH2 0x962 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 LT ISZERO PUSH2 0x919 JUMPI PUSH2 0x918 PUSH2 0x9D1 JUMP JUMPDEST JUMPDEST DUP3 DUP3 SUB SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x92F DUP3 PUSH2 0x942 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO ISZERO 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 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x98A JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x96F JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x999 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 0x9B7 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 EQ ISZERO PUSH2 0x9CB JUMPI PUSH2 0x9CA PUSH2 0xA00 JUMP JUMPDEST JUMPDEST POP SWAP2 SWAP1 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 PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x496E73756666696369656E7420616C6C6F77616E636500000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH32 0x5472616E736665727265642076616C7565206973207A65726F00000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH2 0xA9B DUP2 PUSH2 0x924 JUMP JUMPDEST DUP2 EQ PUSH2 0xAA6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0xAB2 DUP2 PUSH2 0x962 JUMP JUMPDEST DUP2 EQ PUSH2 0xABD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xA6 0xFC 0xD0 0x4A 0xA8 SWAP4 CALLDATASIZE DUP14 0xE RETURNDATACOPY SWAP11 STOP 0x4A DUP5 DUP9 DIFFICULTY 0xC5 KECCAK256 PUSH3 0x3183D6 0xB2 GT 0x1F 0xBC PUSH16 0x837204D0FA64736F6C63430008040033 ","sourceMap":"1144:95:3:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1204:32;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;703:146;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;125:23;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;853:287;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;96:24;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;152:41;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;355:205;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;564:135;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1204:32;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;703:146::-;768:12;822:5;788:10;:22;799:10;788:22;;;;;;;;;;;;;;;:31;811:7;788:31;;;;;;;;;;;;;;;:39;;;;840:4;833:11;;703:146;;;;:::o;125:23::-;;;;:::o;853:287::-;932:4;983:5;952:27;962:4;968:10;952:9;:27::i;:::-;:36;;944:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;1054:5;1022:10;:16;1033:4;1022:16;;;;;;;;;;;;;;;:28;1039:10;1022:28;;;;;;;;;;;;;;;;:37;;;;;;;:::i;:::-;;;;;;;;1084:5;1065:9;:15;1075:4;1065:15;;;;;;;;;;;;;;;;:24;;;;;;;:::i;:::-;;;;;;;;1112:5;1095:9;:13;1105:2;1095:13;;;;;;;;;;;;;;;;:22;;;;;;;:::i;:::-;;;;;;;;1131:4;1124:11;;853:287;;;;;:::o;96:24::-;;;;:::o;152:41::-;;;;;;;;;;;;;;;;;:::o;355:205::-;413:4;441:1;433:5;:9;425:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;504:5;479:9;:21;489:10;479:21;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;532:5;515:9;:13;525:2;515:13;;;;;;;;;;;;;;;;:22;;;;;;;:::i;:::-;;;;;;;;551:4;544:11;;355:205;;;;:::o;564:135::-;636:17;668:10;:17;679:5;668:17;;;;;;;;;;;;;;;:26;686:7;668:26;;;;;;;;;;;;;;;;661:33;;564:135;;;;:::o;7:139:4:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:139::-;198:5;236:6;223:20;214:29;;252:33;279:5;252:33;:::i;:::-;204:87;;;;:::o;297:262::-;356:6;405:2;393:9;384:7;380:23;376:32;373:2;;;421:1;418;411:12;373:2;464:1;489:53;534:7;525:6;514:9;510:22;489:53;:::i;:::-;479:63;;435:117;363:196;;;;:::o;565:407::-;633:6;641;690:2;678:9;669:7;665:23;661:32;658:2;;;706:1;703;696:12;658:2;749:1;774:53;819:7;810:6;799:9;795:22;774:53;:::i;:::-;764:63;;720:117;876:2;902:53;947:7;938:6;927:9;923:22;902:53;:::i;:::-;892:63;;847:118;648:324;;;;;:::o;978:552::-;1055:6;1063;1071;1120:2;1108:9;1099:7;1095:23;1091:32;1088:2;;;1136:1;1133;1126:12;1088:2;1179:1;1204:53;1249:7;1240:6;1229:9;1225:22;1204:53;:::i;:::-;1194:63;;1150:117;1306:2;1332:53;1377:7;1368:6;1357:9;1353:22;1332:53;:::i;:::-;1322:63;;1277:118;1434:2;1460:53;1505:7;1496:6;1485:9;1481:22;1460:53;:::i;:::-;1450:63;;1405:118;1078:452;;;;;:::o;1536:407::-;1604:6;1612;1661:2;1649:9;1640:7;1636:23;1632:32;1629:2;;;1677:1;1674;1667:12;1629:2;1720:1;1745:53;1790:7;1781:6;1770:9;1766:22;1745:53;:::i;:::-;1735:63;;1691:117;1847:2;1873:53;1918:7;1909:6;1898:9;1894:22;1873:53;:::i;:::-;1863:63;;1818:118;1619:324;;;;;:::o;1949:109::-;2030:21;2045:5;2030:21;:::i;:::-;2025:3;2018:34;2008:50;;:::o;2064:364::-;2152:3;2180:39;2213:5;2180:39;:::i;:::-;2235:71;2299:6;2294:3;2235:71;:::i;:::-;2228:78;;2315:52;2360:6;2355:3;2348:4;2341:5;2337:16;2315:52;:::i;:::-;2392:29;2414:6;2392:29;:::i;:::-;2387:3;2383:39;2376:46;;2156:272;;;;;:::o;2434:366::-;2576:3;2597:67;2661:2;2656:3;2597:67;:::i;:::-;2590:74;;2673:93;2762:3;2673:93;:::i;:::-;2791:2;2786:3;2782:12;2775:19;;2580:220;;;:::o;2806:366::-;2948:3;2969:67;3033:2;3028:3;2969:67;:::i;:::-;2962:74;;3045:93;3134:3;3045:93;:::i;:::-;3163:2;3158:3;3154:12;3147:19;;2952:220;;;:::o;3178:118::-;3265:24;3283:5;3265:24;:::i;:::-;3260:3;3253:37;3243:53;;:::o;3302:210::-;3389:4;3427:2;3416:9;3412:18;3404:26;;3440:65;3502:1;3491:9;3487:17;3478:6;3440:65;:::i;:::-;3394:118;;;;:::o;3518:313::-;3631:4;3669:2;3658:9;3654:18;3646:26;;3718:9;3712:4;3708:20;3704:1;3693:9;3689:17;3682:47;3746:78;3819:4;3810:6;3746:78;:::i;:::-;3738:86;;3636:195;;;;:::o;3837:419::-;4003:4;4041:2;4030:9;4026:18;4018:26;;4090:9;4084:4;4080:20;4076:1;4065:9;4061:17;4054:47;4118:131;4244:4;4118:131;:::i;:::-;4110:139;;4008:248;;;:::o;4262:419::-;4428:4;4466:2;4455:9;4451:18;4443:26;;4515:9;4509:4;4505:20;4501:1;4490:9;4486:17;4479:47;4543:131;4669:4;4543:131;:::i;:::-;4535:139;;4433:248;;;:::o;4687:222::-;4780:4;4818:2;4807:9;4803:18;4795:26;;4831:71;4899:1;4888:9;4884:17;4875:6;4831:71;:::i;:::-;4785:124;;;;:::o;4915:99::-;4967:6;5001:5;4995:12;4985:22;;4974:40;;;:::o;5020:169::-;5104:11;5138:6;5133:3;5126:19;5178:4;5173:3;5169:14;5154:29;;5116:73;;;;:::o;5195:305::-;5235:3;5254:20;5272:1;5254:20;:::i;:::-;5249:25;;5288:20;5306:1;5288:20;:::i;:::-;5283:25;;5442:1;5374:66;5370:74;5367:1;5364:81;5361:2;;;5448:18;;:::i;:::-;5361:2;5492:1;5489;5485:9;5478:16;;5239:261;;;;:::o;5506:191::-;5546:4;5566:20;5584:1;5566:20;:::i;:::-;5561:25;;5600:20;5618:1;5600:20;:::i;:::-;5595:25;;5639:1;5636;5633:8;5630:2;;;5644:18;;:::i;:::-;5630:2;5689:1;5686;5682:9;5674:17;;5551:146;;;;:::o;5703:96::-;5740:7;5769:24;5787:5;5769:24;:::i;:::-;5758:35;;5748:51;;;:::o;5805:90::-;5839:7;5882:5;5875:13;5868:21;5857:32;;5847:48;;;:::o;5901:126::-;5938:7;5978:42;5971:5;5967:54;5956:65;;5946:81;;;:::o;6033:77::-;6070:7;6099:5;6088:16;;6078:32;;;:::o;6116:307::-;6184:1;6194:113;6208:6;6205:1;6202:13;6194:113;;;6293:1;6288:3;6284:11;6278:18;6274:1;6269:3;6265:11;6258:39;6230:2;6227:1;6223:10;6218:15;;6194:113;;;6325:6;6322:1;6319:13;6316:2;;;6405:1;6396:6;6391:3;6387:16;6380:27;6316:2;6165:258;;;;:::o;6429:320::-;6473:6;6510:1;6504:4;6500:12;6490:22;;6557:1;6551:4;6547:12;6578:18;6568:2;;6634:4;6626:6;6622:17;6612:27;;6568:2;6696;6688:6;6685:14;6665:18;6662:38;6659:2;;;6715:18;;:::i;:::-;6659:2;6480:269;;;;:::o;6755:180::-;6803:77;6800:1;6793:88;6900:4;6897:1;6890:15;6924:4;6921:1;6914:15;6941:180;6989:77;6986:1;6979:88;7086:4;7083:1;7076:15;7110:4;7107:1;7100:15;7127:102;7168:6;7219:2;7215:7;7210:2;7203:5;7199:14;7195:28;7185:38;;7175:54;;;:::o;7235:172::-;7375:24;7371:1;7363:6;7359:14;7352:48;7341:66;:::o;7413:175::-;7553:27;7549:1;7541:6;7537:14;7530:51;7519:69;:::o;7594:122::-;7667:24;7685:5;7667:24;:::i;:::-;7660:5;7657:35;7647:2;;7706:1;7703;7696:12;7647:2;7637:79;:::o;7722:122::-;7795:24;7813:5;7795:24;:::i;:::-;7788:5;7785:35;7775:2;;7834:1;7831;7824:12;7775:2;7765:79;:::o"},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","name()":"06fdde03","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.4+commit.c7e474f2\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"remaining\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/Token.sol\":\"TokenWithOnlyName\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/Token.sol\":{\"keccak256\":\"0x3c98df2a7295115a107e950c40733f37ce5384cf18a0b5efb948ccf6d1acaa59\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://21c0d9ad7fee4c50e057a477ec0c151985566e51e1df46d3dc42f4320eceeccf\",\"dweb:/ipfs/QmSVvnCWd9MH3F93atgJGuwbHMJpifnoMLSosQsZUKUrZ8\"]}},\"version\":1}"},"TokenWithoutNameNorSymbol":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"remaining","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"6080604052600160005534801561001557600080fd5b50633b9aca00600181905550600154600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610934806100766000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c8063313ce5671161005b578063313ce5671461010057806370a082311461011e578063a9059cbb1461014e578063dd62ed3e1461017e5761007d565b8063095ea7b31461008257806318160ddd146100b257806323b872dd146100d0575b600080fd5b61009c60048036038101906100979190610656565b6101ae565b6040516100a991906106f6565b60405180910390f35b6100ba61023b565b6040516100c79190610751565b60405180910390f35b6100ea60048036038101906100e59190610607565b610241565b6040516100f791906106f6565b60405180910390f35b6101086103d9565b6040516101159190610751565b60405180910390f35b610138600480360381019061013391906105a2565b6103df565b6040516101459190610751565b60405180910390f35b61016860048036038101906101639190610656565b6103f7565b60405161017591906106f6565b60405180910390f35b610198600480360381019061019391906105cb565b6104f1565b6040516101a59190610751565b60405180910390f35b600081600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001905092915050565b60015481565b60008161024e85336104f1565b101561028f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161028690610711565b60405180910390fd5b81600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461031b91906107d3565b9250508190555081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461037191906107d3565b9250508190555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546103c7919061077d565b92505081905550600190509392505050565b60005481565b60026020528060005260406000206000915090505481565b600080821161043b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043290610731565b60405180910390fd5b81600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461048a91906107d3565b9250508190555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546104e0919061077d565b925050819055506001905092915050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600081359050610587816108d0565b92915050565b60008135905061059c816108e7565b92915050565b6000602082840312156105b457600080fd5b60006105c284828501610578565b91505092915050565b600080604083850312156105de57600080fd5b60006105ec85828601610578565b92505060206105fd85828601610578565b9150509250929050565b60008060006060848603121561061c57600080fd5b600061062a86828701610578565b935050602061063b86828701610578565b925050604061064c8682870161058d565b9150509250925092565b6000806040838503121561066957600080fd5b600061067785828601610578565b92505060206106888582860161058d565b9150509250929050565b61069b81610819565b82525050565b60006106ae60168361076c565b91506106b98261087e565b602082019050919050565b60006106d160198361076c565b91506106dc826108a7565b602082019050919050565b6106f081610845565b82525050565b600060208201905061070b6000830184610692565b92915050565b6000602082019050818103600083015261072a816106a1565b9050919050565b6000602082019050818103600083015261074a816106c4565b9050919050565b600060208201905061076660008301846106e7565b92915050565b600082825260208201905092915050565b600061078882610845565b915061079383610845565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156107c8576107c761084f565b5b828201905092915050565b60006107de82610845565b91506107e983610845565b9250828210156107fc576107fb61084f565b5b828203905092915050565b600061081282610825565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f496e73756666696369656e7420616c6c6f77616e636500000000000000000000600082015250565b7f5472616e736665727265642076616c7565206973207a65726f00000000000000600082015250565b6108d981610807565b81146108e457600080fd5b50565b6108f081610845565b81146108fb57600080fd5b5056fea2646970667358221220a8a6918adf2af132e4e49a96a108a2d9c62cfb74de3e267b6c8af323b87f6ec964736f6c63430008040033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x1 PUSH1 0x0 SSTORE CALLVALUE DUP1 ISZERO PUSH2 0x15 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH4 0x3B9ACA00 PUSH1 0x1 DUP2 SWAP1 SSTORE POP PUSH1 0x1 SLOAD 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 DUP2 SWAP1 SSTORE POP PUSH2 0x934 DUP1 PUSH2 0x76 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x7D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x313CE567 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x100 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x11E JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x14E JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x17E JUMPI PUSH2 0x7D JUMP JUMPDEST DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x82 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0xB2 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0xD0 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9C PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x97 SWAP2 SWAP1 PUSH2 0x656 JUMP JUMPDEST PUSH2 0x1AE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xA9 SWAP2 SWAP1 PUSH2 0x6F6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xBA PUSH2 0x23B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xC7 SWAP2 SWAP1 PUSH2 0x751 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xEA PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xE5 SWAP2 SWAP1 PUSH2 0x607 JUMP JUMPDEST PUSH2 0x241 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xF7 SWAP2 SWAP1 PUSH2 0x6F6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x108 PUSH2 0x3D9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x115 SWAP2 SWAP1 PUSH2 0x751 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x138 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x133 SWAP2 SWAP1 PUSH2 0x5A2 JUMP JUMPDEST PUSH2 0x3DF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x145 SWAP2 SWAP1 PUSH2 0x751 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x168 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x163 SWAP2 SWAP1 PUSH2 0x656 JUMP JUMPDEST PUSH2 0x3F7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x175 SWAP2 SWAP1 PUSH2 0x6F6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x198 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x193 SWAP2 SWAP1 PUSH2 0x5CB JUMP JUMPDEST PUSH2 0x4F1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1A5 SWAP2 SWAP1 PUSH2 0x751 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x3 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 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP PUSH1 0x1 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x24E DUP6 CALLER PUSH2 0x4F1 JUMP JUMPDEST LT ISZERO PUSH2 0x28F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x286 SWAP1 PUSH2 0x711 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 PUSH1 0x3 PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 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 0x31B SWAP2 SWAP1 PUSH2 0x7D3 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x2 PUSH1 0x0 DUP7 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 0x371 SWAP2 SWAP1 PUSH2 0x7D3 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x2 PUSH1 0x0 DUP6 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 0x3C7 SWAP2 SWAP1 PUSH2 0x77D JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH1 0x1 SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD 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 DUP3 GT PUSH2 0x43B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x432 SWAP1 PUSH2 0x731 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 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 0x48A SWAP2 SWAP1 PUSH2 0x7D3 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x2 PUSH1 0x0 DUP6 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 0x4E0 SWAP2 SWAP1 PUSH2 0x77D JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH1 0x1 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x3 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x587 DUP2 PUSH2 0x8D0 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x59C DUP2 PUSH2 0x8E7 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x5B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x5C2 DUP5 DUP3 DUP6 ADD PUSH2 0x578 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x5DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x5EC DUP6 DUP3 DUP7 ADD PUSH2 0x578 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x5FD DUP6 DUP3 DUP7 ADD PUSH2 0x578 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x61C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x62A DUP7 DUP3 DUP8 ADD PUSH2 0x578 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x63B DUP7 DUP3 DUP8 ADD PUSH2 0x578 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x64C DUP7 DUP3 DUP8 ADD PUSH2 0x58D JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x669 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x677 DUP6 DUP3 DUP7 ADD PUSH2 0x578 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x688 DUP6 DUP3 DUP7 ADD PUSH2 0x58D JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH2 0x69B DUP2 PUSH2 0x819 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6AE PUSH1 0x16 DUP4 PUSH2 0x76C JUMP JUMPDEST SWAP2 POP PUSH2 0x6B9 DUP3 PUSH2 0x87E JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6D1 PUSH1 0x19 DUP4 PUSH2 0x76C JUMP JUMPDEST SWAP2 POP PUSH2 0x6DC DUP3 PUSH2 0x8A7 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x6F0 DUP2 PUSH2 0x845 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x70B PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x692 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 0x72A DUP2 PUSH2 0x6A1 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 0x74A DUP2 PUSH2 0x6C4 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x766 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x6E7 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x788 DUP3 PUSH2 0x845 JUMP JUMPDEST SWAP2 POP PUSH2 0x793 DUP4 PUSH2 0x845 JUMP JUMPDEST SWAP3 POP DUP3 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SUB DUP3 GT ISZERO PUSH2 0x7C8 JUMPI PUSH2 0x7C7 PUSH2 0x84F JUMP JUMPDEST JUMPDEST DUP3 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7DE DUP3 PUSH2 0x845 JUMP JUMPDEST SWAP2 POP PUSH2 0x7E9 DUP4 PUSH2 0x845 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 LT ISZERO PUSH2 0x7FC JUMPI PUSH2 0x7FB PUSH2 0x84F JUMP JUMPDEST JUMPDEST DUP3 DUP3 SUB SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x812 DUP3 PUSH2 0x825 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO ISZERO 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 PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x496E73756666696369656E7420616C6C6F77616E636500000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH32 0x5472616E736665727265642076616C7565206973207A65726F00000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH2 0x8D9 DUP2 PUSH2 0x807 JUMP JUMPDEST DUP2 EQ PUSH2 0x8E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x8F0 DUP2 PUSH2 0x845 JUMP JUMPDEST DUP2 EQ PUSH2 0x8FB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xA8 0xA6 SWAP2 DUP11 0xDF 0x2A CALL ORIGIN 0xE4 0xE4 SWAP11 SWAP7 LOG1 ADDMOD LOG2 0xD9 0xC6 0x2C 0xFB PUSH21 0xDE3E267B6C8AF323B87F6EC964736F6C6343000804 STOP CALLER ","sourceMap":"57:1085:3:-:0;;;119:1;96:24;;257:94;;;;;;;;;;292:13;278:11;:27;;;;335:11;;311:9;:21;321:10;311:21;;;;;;;;;;;;;;;:35;;;;57:1085;;;;;;"},"deployedBytecode":{"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:6120:4","statements":[{"body":{"nodeType":"YulBlock","src":"59:87:4","statements":[{"nodeType":"YulAssignment","src":"69:29:4","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"91:6:4"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"78:12:4"},"nodeType":"YulFunctionCall","src":"78:20:4"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"69:5:4"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"134:5:4"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"107:26:4"},"nodeType":"YulFunctionCall","src":"107:33:4"},"nodeType":"YulExpressionStatement","src":"107:33:4"}]},"name":"abi_decode_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"37:6:4","type":""},{"name":"end","nodeType":"YulTypedName","src":"45:3:4","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"53:5:4","type":""}],"src":"7:139:4"},{"body":{"nodeType":"YulBlock","src":"204:87:4","statements":[{"nodeType":"YulAssignment","src":"214:29:4","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"236:6:4"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"223:12:4"},"nodeType":"YulFunctionCall","src":"223:20:4"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"214:5:4"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"279:5:4"}],"functionName":{"name":"validator_revert_t_uint256","nodeType":"YulIdentifier","src":"252:26:4"},"nodeType":"YulFunctionCall","src":"252:33:4"},"nodeType":"YulExpressionStatement","src":"252:33:4"}]},"name":"abi_decode_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"182:6:4","type":""},{"name":"end","nodeType":"YulTypedName","src":"190:3:4","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"198:5:4","type":""}],"src":"152:139:4"},{"body":{"nodeType":"YulBlock","src":"363:196:4","statements":[{"body":{"nodeType":"YulBlock","src":"409:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"418:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"421:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"411:6:4"},"nodeType":"YulFunctionCall","src":"411:12:4"},"nodeType":"YulExpressionStatement","src":"411:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"384:7:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"393:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"380:3:4"},"nodeType":"YulFunctionCall","src":"380:23:4"},{"kind":"number","nodeType":"YulLiteral","src":"405:2:4","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"376:3:4"},"nodeType":"YulFunctionCall","src":"376:32:4"},"nodeType":"YulIf","src":"373:2:4"},{"nodeType":"YulBlock","src":"435:117:4","statements":[{"nodeType":"YulVariableDeclaration","src":"450:15:4","value":{"kind":"number","nodeType":"YulLiteral","src":"464:1:4","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"454:6:4","type":""}]},{"nodeType":"YulAssignment","src":"479:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"514:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"525:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"510:3:4"},"nodeType":"YulFunctionCall","src":"510:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"534:7:4"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"489:20:4"},"nodeType":"YulFunctionCall","src":"489:53:4"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"479:6:4"}]}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"333:9:4","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"344:7:4","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"356:6:4","type":""}],"src":"297:262:4"},{"body":{"nodeType":"YulBlock","src":"648:324:4","statements":[{"body":{"nodeType":"YulBlock","src":"694:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"703:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"706:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"696:6:4"},"nodeType":"YulFunctionCall","src":"696:12:4"},"nodeType":"YulExpressionStatement","src":"696:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"669:7:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"678:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"665:3:4"},"nodeType":"YulFunctionCall","src":"665:23:4"},{"kind":"number","nodeType":"YulLiteral","src":"690:2:4","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"661:3:4"},"nodeType":"YulFunctionCall","src":"661:32:4"},"nodeType":"YulIf","src":"658:2:4"},{"nodeType":"YulBlock","src":"720:117:4","statements":[{"nodeType":"YulVariableDeclaration","src":"735:15:4","value":{"kind":"number","nodeType":"YulLiteral","src":"749:1:4","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"739:6:4","type":""}]},{"nodeType":"YulAssignment","src":"764:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"799:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"810:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"795:3:4"},"nodeType":"YulFunctionCall","src":"795:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"819:7:4"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"774:20:4"},"nodeType":"YulFunctionCall","src":"774:53:4"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"764:6:4"}]}]},{"nodeType":"YulBlock","src":"847:118:4","statements":[{"nodeType":"YulVariableDeclaration","src":"862:16:4","value":{"kind":"number","nodeType":"YulLiteral","src":"876:2:4","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"866:6:4","type":""}]},{"nodeType":"YulAssignment","src":"892:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"927:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"938:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"923:3:4"},"nodeType":"YulFunctionCall","src":"923:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"947:7:4"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"902:20:4"},"nodeType":"YulFunctionCall","src":"902:53:4"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"892:6:4"}]}]}]},"name":"abi_decode_tuple_t_addresst_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"610:9:4","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"621:7:4","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"633:6:4","type":""},{"name":"value1","nodeType":"YulTypedName","src":"641:6:4","type":""}],"src":"565:407:4"},{"body":{"nodeType":"YulBlock","src":"1078:452:4","statements":[{"body":{"nodeType":"YulBlock","src":"1124:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1133:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1136:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1126:6:4"},"nodeType":"YulFunctionCall","src":"1126:12:4"},"nodeType":"YulExpressionStatement","src":"1126:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1099:7:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"1108:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1095:3:4"},"nodeType":"YulFunctionCall","src":"1095:23:4"},{"kind":"number","nodeType":"YulLiteral","src":"1120:2:4","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1091:3:4"},"nodeType":"YulFunctionCall","src":"1091:32:4"},"nodeType":"YulIf","src":"1088:2:4"},{"nodeType":"YulBlock","src":"1150:117:4","statements":[{"nodeType":"YulVariableDeclaration","src":"1165:15:4","value":{"kind":"number","nodeType":"YulLiteral","src":"1179:1:4","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1169:6:4","type":""}]},{"nodeType":"YulAssignment","src":"1194:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1229:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"1240:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1225:3:4"},"nodeType":"YulFunctionCall","src":"1225:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1249:7:4"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"1204:20:4"},"nodeType":"YulFunctionCall","src":"1204:53:4"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1194:6:4"}]}]},{"nodeType":"YulBlock","src":"1277:118:4","statements":[{"nodeType":"YulVariableDeclaration","src":"1292:16:4","value":{"kind":"number","nodeType":"YulLiteral","src":"1306:2:4","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1296:6:4","type":""}]},{"nodeType":"YulAssignment","src":"1322:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1357:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"1368:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1353:3:4"},"nodeType":"YulFunctionCall","src":"1353:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1377:7:4"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"1332:20:4"},"nodeType":"YulFunctionCall","src":"1332:53:4"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1322:6:4"}]}]},{"nodeType":"YulBlock","src":"1405:118:4","statements":[{"nodeType":"YulVariableDeclaration","src":"1420:16:4","value":{"kind":"number","nodeType":"YulLiteral","src":"1434:2:4","type":"","value":"64"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1424:6:4","type":""}]},{"nodeType":"YulAssignment","src":"1450:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1485:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"1496:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1481:3:4"},"nodeType":"YulFunctionCall","src":"1481:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1505:7:4"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"1460:20:4"},"nodeType":"YulFunctionCall","src":"1460:53:4"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"1450:6:4"}]}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1032:9:4","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1043:7:4","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1055:6:4","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1063:6:4","type":""},{"name":"value2","nodeType":"YulTypedName","src":"1071:6:4","type":""}],"src":"978:552:4"},{"body":{"nodeType":"YulBlock","src":"1619:324:4","statements":[{"body":{"nodeType":"YulBlock","src":"1665:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1674:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1677:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1667:6:4"},"nodeType":"YulFunctionCall","src":"1667:12:4"},"nodeType":"YulExpressionStatement","src":"1667:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1640:7:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"1649:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1636:3:4"},"nodeType":"YulFunctionCall","src":"1636:23:4"},{"kind":"number","nodeType":"YulLiteral","src":"1661:2:4","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1632:3:4"},"nodeType":"YulFunctionCall","src":"1632:32:4"},"nodeType":"YulIf","src":"1629:2:4"},{"nodeType":"YulBlock","src":"1691:117:4","statements":[{"nodeType":"YulVariableDeclaration","src":"1706:15:4","value":{"kind":"number","nodeType":"YulLiteral","src":"1720:1:4","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1710:6:4","type":""}]},{"nodeType":"YulAssignment","src":"1735:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1770:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"1781:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1766:3:4"},"nodeType":"YulFunctionCall","src":"1766:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1790:7:4"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"1745:20:4"},"nodeType":"YulFunctionCall","src":"1745:53:4"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1735:6:4"}]}]},{"nodeType":"YulBlock","src":"1818:118:4","statements":[{"nodeType":"YulVariableDeclaration","src":"1833:16:4","value":{"kind":"number","nodeType":"YulLiteral","src":"1847:2:4","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1837:6:4","type":""}]},{"nodeType":"YulAssignment","src":"1863:63:4","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1898:9:4"},{"name":"offset","nodeType":"YulIdentifier","src":"1909:6:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1894:3:4"},"nodeType":"YulFunctionCall","src":"1894:22:4"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1918:7:4"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"1873:20:4"},"nodeType":"YulFunctionCall","src":"1873:53:4"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1863:6:4"}]}]}]},"name":"abi_decode_tuple_t_addresst_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1581:9:4","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1592:7:4","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1604:6:4","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1612:6:4","type":""}],"src":"1536:407:4"},{"body":{"nodeType":"YulBlock","src":"2008:50:4","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2025:3:4"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2045:5:4"}],"functionName":{"name":"cleanup_t_bool","nodeType":"YulIdentifier","src":"2030:14:4"},"nodeType":"YulFunctionCall","src":"2030:21:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2018:6:4"},"nodeType":"YulFunctionCall","src":"2018:34:4"},"nodeType":"YulExpressionStatement","src":"2018:34:4"}]},"name":"abi_encode_t_bool_to_t_bool_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1996:5:4","type":""},{"name":"pos","nodeType":"YulTypedName","src":"2003:3:4","type":""}],"src":"1949:109:4"},{"body":{"nodeType":"YulBlock","src":"2210:220:4","statements":[{"nodeType":"YulAssignment","src":"2220:74:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2286:3:4"},{"kind":"number","nodeType":"YulLiteral","src":"2291:2:4","type":"","value":"22"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"2227:58:4"},"nodeType":"YulFunctionCall","src":"2227:67:4"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"2220:3:4"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2392:3:4"}],"functionName":{"name":"store_literal_in_memory_45e3d26e36c3151c7f92a1eee9add9658cbb8e14605ee2452ec007389b9744bc","nodeType":"YulIdentifier","src":"2303:88:4"},"nodeType":"YulFunctionCall","src":"2303:93:4"},"nodeType":"YulExpressionStatement","src":"2303:93:4"},{"nodeType":"YulAssignment","src":"2405:19:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2416:3:4"},{"kind":"number","nodeType":"YulLiteral","src":"2421:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2412:3:4"},"nodeType":"YulFunctionCall","src":"2412:12:4"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"2405:3:4"}]}]},"name":"abi_encode_t_stringliteral_45e3d26e36c3151c7f92a1eee9add9658cbb8e14605ee2452ec007389b9744bc_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"2198:3:4","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"2206:3:4","type":""}],"src":"2064:366:4"},{"body":{"nodeType":"YulBlock","src":"2582:220:4","statements":[{"nodeType":"YulAssignment","src":"2592:74:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2658:3:4"},{"kind":"number","nodeType":"YulLiteral","src":"2663:2:4","type":"","value":"25"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"2599:58:4"},"nodeType":"YulFunctionCall","src":"2599:67:4"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"2592:3:4"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2764:3:4"}],"functionName":{"name":"store_literal_in_memory_4ca3cd75a1831a94a24913bfd2c9b9d35acbb11ac3447f65bb0682cf14f63f5c","nodeType":"YulIdentifier","src":"2675:88:4"},"nodeType":"YulFunctionCall","src":"2675:93:4"},"nodeType":"YulExpressionStatement","src":"2675:93:4"},{"nodeType":"YulAssignment","src":"2777:19:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2788:3:4"},{"kind":"number","nodeType":"YulLiteral","src":"2793:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2784:3:4"},"nodeType":"YulFunctionCall","src":"2784:12:4"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"2777:3:4"}]}]},"name":"abi_encode_t_stringliteral_4ca3cd75a1831a94a24913bfd2c9b9d35acbb11ac3447f65bb0682cf14f63f5c_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"2570:3:4","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"2578:3:4","type":""}],"src":"2436:366:4"},{"body":{"nodeType":"YulBlock","src":"2873:53:4","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2890:3:4"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2913:5:4"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"2895:17:4"},"nodeType":"YulFunctionCall","src":"2895:24:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2883:6:4"},"nodeType":"YulFunctionCall","src":"2883:37:4"},"nodeType":"YulExpressionStatement","src":"2883:37:4"}]},"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"2861:5:4","type":""},{"name":"pos","nodeType":"YulTypedName","src":"2868:3:4","type":""}],"src":"2808:118:4"},{"body":{"nodeType":"YulBlock","src":"3024:118:4","statements":[{"nodeType":"YulAssignment","src":"3034:26:4","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3046:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"3057:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3042:3:4"},"nodeType":"YulFunctionCall","src":"3042:18:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3034:4:4"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3108:6:4"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3121:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"3132:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3117:3:4"},"nodeType":"YulFunctionCall","src":"3117:17:4"}],"functionName":{"name":"abi_encode_t_bool_to_t_bool_fromStack","nodeType":"YulIdentifier","src":"3070:37:4"},"nodeType":"YulFunctionCall","src":"3070:65:4"},"nodeType":"YulExpressionStatement","src":"3070:65:4"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2996:9:4","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3008:6:4","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3019:4:4","type":""}],"src":"2932:210:4"},{"body":{"nodeType":"YulBlock","src":"3319:248:4","statements":[{"nodeType":"YulAssignment","src":"3329:26:4","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3341:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"3352:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3337:3:4"},"nodeType":"YulFunctionCall","src":"3337:18:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3329:4:4"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3376:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"3387:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3372:3:4"},"nodeType":"YulFunctionCall","src":"3372:17:4"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"3395:4:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"3401:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3391:3:4"},"nodeType":"YulFunctionCall","src":"3391:20:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3365:6:4"},"nodeType":"YulFunctionCall","src":"3365:47:4"},"nodeType":"YulExpressionStatement","src":"3365:47:4"},{"nodeType":"YulAssignment","src":"3421:139:4","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"3555:4:4"}],"functionName":{"name":"abi_encode_t_stringliteral_45e3d26e36c3151c7f92a1eee9add9658cbb8e14605ee2452ec007389b9744bc_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"3429:124:4"},"nodeType":"YulFunctionCall","src":"3429:131:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3421:4:4"}]}]},"name":"abi_encode_tuple_t_stringliteral_45e3d26e36c3151c7f92a1eee9add9658cbb8e14605ee2452ec007389b9744bc__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3299:9:4","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3314:4:4","type":""}],"src":"3148:419:4"},{"body":{"nodeType":"YulBlock","src":"3744:248:4","statements":[{"nodeType":"YulAssignment","src":"3754:26:4","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3766:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"3777:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3762:3:4"},"nodeType":"YulFunctionCall","src":"3762:18:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3754:4:4"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3801:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"3812:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3797:3:4"},"nodeType":"YulFunctionCall","src":"3797:17:4"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"3820:4:4"},{"name":"headStart","nodeType":"YulIdentifier","src":"3826:9:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3816:3:4"},"nodeType":"YulFunctionCall","src":"3816:20:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3790:6:4"},"nodeType":"YulFunctionCall","src":"3790:47:4"},"nodeType":"YulExpressionStatement","src":"3790:47:4"},{"nodeType":"YulAssignment","src":"3846:139:4","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"3980:4:4"}],"functionName":{"name":"abi_encode_t_stringliteral_4ca3cd75a1831a94a24913bfd2c9b9d35acbb11ac3447f65bb0682cf14f63f5c_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"3854:124:4"},"nodeType":"YulFunctionCall","src":"3854:131:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3846:4:4"}]}]},"name":"abi_encode_tuple_t_stringliteral_4ca3cd75a1831a94a24913bfd2c9b9d35acbb11ac3447f65bb0682cf14f63f5c__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3724:9:4","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3739:4:4","type":""}],"src":"3573:419:4"},{"body":{"nodeType":"YulBlock","src":"4096:124:4","statements":[{"nodeType":"YulAssignment","src":"4106:26:4","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4118:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"4129:2:4","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4114:3:4"},"nodeType":"YulFunctionCall","src":"4114:18:4"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4106:4:4"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4186:6:4"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4199:9:4"},{"kind":"number","nodeType":"YulLiteral","src":"4210:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4195:3:4"},"nodeType":"YulFunctionCall","src":"4195:17:4"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"4142:43:4"},"nodeType":"YulFunctionCall","src":"4142:71:4"},"nodeType":"YulExpressionStatement","src":"4142:71:4"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4068:9:4","type":""},{"name":"value0","nodeType":"YulTypedName","src":"4080:6:4","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4091:4:4","type":""}],"src":"3998:222:4"},{"body":{"nodeType":"YulBlock","src":"4322:73:4","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4339:3:4"},{"name":"length","nodeType":"YulIdentifier","src":"4344:6:4"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4332:6:4"},"nodeType":"YulFunctionCall","src":"4332:19:4"},"nodeType":"YulExpressionStatement","src":"4332:19:4"},{"nodeType":"YulAssignment","src":"4360:29:4","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4379:3:4"},{"kind":"number","nodeType":"YulLiteral","src":"4384:4:4","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4375:3:4"},"nodeType":"YulFunctionCall","src":"4375:14:4"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"4360:11:4"}]}]},"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"4294:3:4","type":""},{"name":"length","nodeType":"YulTypedName","src":"4299:6:4","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"4310:11:4","type":""}],"src":"4226:169:4"},{"body":{"nodeType":"YulBlock","src":"4445:261:4","statements":[{"nodeType":"YulAssignment","src":"4455:25:4","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"4478:1:4"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"4460:17:4"},"nodeType":"YulFunctionCall","src":"4460:20:4"},"variableNames":[{"name":"x","nodeType":"YulIdentifier","src":"4455:1:4"}]},{"nodeType":"YulAssignment","src":"4489:25:4","value":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"4512:1:4"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"4494:17:4"},"nodeType":"YulFunctionCall","src":"4494:20:4"},"variableNames":[{"name":"y","nodeType":"YulIdentifier","src":"4489:1:4"}]},{"body":{"nodeType":"YulBlock","src":"4652:22:4","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"4654:16:4"},"nodeType":"YulFunctionCall","src":"4654:18:4"},"nodeType":"YulExpressionStatement","src":"4654:18:4"}]},"condition":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"4573:1:4"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4580:66:4","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"},{"name":"y","nodeType":"YulIdentifier","src":"4648:1:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4576:3:4"},"nodeType":"YulFunctionCall","src":"4576:74:4"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4570:2:4"},"nodeType":"YulFunctionCall","src":"4570:81:4"},"nodeType":"YulIf","src":"4567:2:4"},{"nodeType":"YulAssignment","src":"4684:16:4","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"4695:1:4"},{"name":"y","nodeType":"YulIdentifier","src":"4698:1:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4691:3:4"},"nodeType":"YulFunctionCall","src":"4691:9:4"},"variableNames":[{"name":"sum","nodeType":"YulIdentifier","src":"4684:3:4"}]}]},"name":"checked_add_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"4432:1:4","type":""},{"name":"y","nodeType":"YulTypedName","src":"4435:1:4","type":""}],"returnVariables":[{"name":"sum","nodeType":"YulTypedName","src":"4441:3:4","type":""}],"src":"4401:305:4"},{"body":{"nodeType":"YulBlock","src":"4757:146:4","statements":[{"nodeType":"YulAssignment","src":"4767:25:4","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"4790:1:4"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"4772:17:4"},"nodeType":"YulFunctionCall","src":"4772:20:4"},"variableNames":[{"name":"x","nodeType":"YulIdentifier","src":"4767:1:4"}]},{"nodeType":"YulAssignment","src":"4801:25:4","value":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"4824:1:4"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"4806:17:4"},"nodeType":"YulFunctionCall","src":"4806:20:4"},"variableNames":[{"name":"y","nodeType":"YulIdentifier","src":"4801:1:4"}]},{"body":{"nodeType":"YulBlock","src":"4848:22:4","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"4850:16:4"},"nodeType":"YulFunctionCall","src":"4850:18:4"},"nodeType":"YulExpressionStatement","src":"4850:18:4"}]},"condition":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"4842:1:4"},{"name":"y","nodeType":"YulIdentifier","src":"4845:1:4"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"4839:2:4"},"nodeType":"YulFunctionCall","src":"4839:8:4"},"nodeType":"YulIf","src":"4836:2:4"},{"nodeType":"YulAssignment","src":"4880:17:4","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"4892:1:4"},{"name":"y","nodeType":"YulIdentifier","src":"4895:1:4"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4888:3:4"},"nodeType":"YulFunctionCall","src":"4888:9:4"},"variableNames":[{"name":"diff","nodeType":"YulIdentifier","src":"4880:4:4"}]}]},"name":"checked_sub_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"4743:1:4","type":""},{"name":"y","nodeType":"YulTypedName","src":"4746:1:4","type":""}],"returnVariables":[{"name":"diff","nodeType":"YulTypedName","src":"4752:4:4","type":""}],"src":"4712:191:4"},{"body":{"nodeType":"YulBlock","src":"4954:51:4","statements":[{"nodeType":"YulAssignment","src":"4964:35:4","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4993:5:4"}],"functionName":{"name":"cleanup_t_uint160","nodeType":"YulIdentifier","src":"4975:17:4"},"nodeType":"YulFunctionCall","src":"4975:24:4"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"4964:7:4"}]}]},"name":"cleanup_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"4936:5:4","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"4946:7:4","type":""}],"src":"4909:96:4"},{"body":{"nodeType":"YulBlock","src":"5053:48:4","statements":[{"nodeType":"YulAssignment","src":"5063:32:4","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5088:5:4"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"5081:6:4"},"nodeType":"YulFunctionCall","src":"5081:13:4"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"5074:6:4"},"nodeType":"YulFunctionCall","src":"5074:21:4"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"5063:7:4"}]}]},"name":"cleanup_t_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"5035:5:4","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"5045:7:4","type":""}],"src":"5011:90:4"},{"body":{"nodeType":"YulBlock","src":"5152:81:4","statements":[{"nodeType":"YulAssignment","src":"5162:65:4","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5177:5:4"},{"kind":"number","nodeType":"YulLiteral","src":"5184:42:4","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5173:3:4"},"nodeType":"YulFunctionCall","src":"5173:54:4"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"5162:7:4"}]}]},"name":"cleanup_t_uint160","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"5134:5:4","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"5144:7:4","type":""}],"src":"5107:126:4"},{"body":{"nodeType":"YulBlock","src":"5284:32:4","statements":[{"nodeType":"YulAssignment","src":"5294:16:4","value":{"name":"value","nodeType":"YulIdentifier","src":"5305:5:4"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"5294:7:4"}]}]},"name":"cleanup_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"5266:5:4","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"5276:7:4","type":""}],"src":"5239:77:4"},{"body":{"nodeType":"YulBlock","src":"5350:152:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5367:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5370:77:4","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5360:6:4"},"nodeType":"YulFunctionCall","src":"5360:88:4"},"nodeType":"YulExpressionStatement","src":"5360:88:4"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5464:1:4","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"5467:4:4","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5457:6:4"},"nodeType":"YulFunctionCall","src":"5457:15:4"},"nodeType":"YulExpressionStatement","src":"5457:15:4"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5488:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5491:4:4","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5481:6:4"},"nodeType":"YulFunctionCall","src":"5481:15:4"},"nodeType":"YulExpressionStatement","src":"5481:15:4"}]},"name":"panic_error_0x11","nodeType":"YulFunctionDefinition","src":"5322:180:4"},{"body":{"nodeType":"YulBlock","src":"5614:66:4","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"5636:6:4"},{"kind":"number","nodeType":"YulLiteral","src":"5644:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5632:3:4"},"nodeType":"YulFunctionCall","src":"5632:14:4"},{"kind":"string","nodeType":"YulLiteral","src":"5648:24:4","type":"","value":"Insufficient allowance"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5625:6:4"},"nodeType":"YulFunctionCall","src":"5625:48:4"},"nodeType":"YulExpressionStatement","src":"5625:48:4"}]},"name":"store_literal_in_memory_45e3d26e36c3151c7f92a1eee9add9658cbb8e14605ee2452ec007389b9744bc","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"5606:6:4","type":""}],"src":"5508:172:4"},{"body":{"nodeType":"YulBlock","src":"5792:69:4","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"5814:6:4"},{"kind":"number","nodeType":"YulLiteral","src":"5822:1:4","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5810:3:4"},"nodeType":"YulFunctionCall","src":"5810:14:4"},{"kind":"string","nodeType":"YulLiteral","src":"5826:27:4","type":"","value":"Transferred value is zero"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5803:6:4"},"nodeType":"YulFunctionCall","src":"5803:51:4"},"nodeType":"YulExpressionStatement","src":"5803:51:4"}]},"name":"store_literal_in_memory_4ca3cd75a1831a94a24913bfd2c9b9d35acbb11ac3447f65bb0682cf14f63f5c","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"5784:6:4","type":""}],"src":"5686:175:4"},{"body":{"nodeType":"YulBlock","src":"5910:79:4","statements":[{"body":{"nodeType":"YulBlock","src":"5967:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5976:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5979:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5969:6:4"},"nodeType":"YulFunctionCall","src":"5969:12:4"},"nodeType":"YulExpressionStatement","src":"5969:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5933:5:4"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5958:5:4"}],"functionName":{"name":"cleanup_t_address","nodeType":"YulIdentifier","src":"5940:17:4"},"nodeType":"YulFunctionCall","src":"5940:24:4"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"5930:2:4"},"nodeType":"YulFunctionCall","src":"5930:35:4"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"5923:6:4"},"nodeType":"YulFunctionCall","src":"5923:43:4"},"nodeType":"YulIf","src":"5920:2:4"}]},"name":"validator_revert_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"5903:5:4","type":""}],"src":"5867:122:4"},{"body":{"nodeType":"YulBlock","src":"6038:79:4","statements":[{"body":{"nodeType":"YulBlock","src":"6095:16:4","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6104:1:4","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6107:1:4","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6097:6:4"},"nodeType":"YulFunctionCall","src":"6097:12:4"},"nodeType":"YulExpressionStatement","src":"6097:12:4"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6061:5:4"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6086:5:4"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"6068:17:4"},"nodeType":"YulFunctionCall","src":"6068:24:4"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"6058:2:4"},"nodeType":"YulFunctionCall","src":"6058:35:4"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"6051:6:4"},"nodeType":"YulFunctionCall","src":"6051:43:4"},"nodeType":"YulIf","src":"6048:2:4"}]},"name":"validator_revert_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"6031:5:4","type":""}],"src":"5995:122:4"}]},"contents":"{\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_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_addresst_address(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(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2 {\n if slt(sub(dataEnd, headStart), 96) { 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 let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_addresst_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(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_encode_t_bool_to_t_bool_fromStack(value, pos) {\n mstore(pos, cleanup_t_bool(value))\n }\n\n function abi_encode_t_stringliteral_45e3d26e36c3151c7f92a1eee9add9658cbb8e14605ee2452ec007389b9744bc_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 22)\n store_literal_in_memory_45e3d26e36c3151c7f92a1eee9add9658cbb8e14605ee2452ec007389b9744bc(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_t_stringliteral_4ca3cd75a1831a94a24913bfd2c9b9d35acbb11ac3447f65bb0682cf14f63f5c_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 25)\n store_literal_in_memory_4ca3cd75a1831a94a24913bfd2c9b9d35acbb11ac3447f65bb0682cf14f63f5c(pos)\n end := add(pos, 32)\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_bool__to_t_bool__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_bool_to_t_bool_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_encode_tuple_t_stringliteral_45e3d26e36c3151c7f92a1eee9add9658cbb8e14605ee2452ec007389b9744bc__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_45e3d26e36c3151c7f92a1eee9add9658cbb8e14605ee2452ec007389b9744bc_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function abi_encode_tuple_t_stringliteral_4ca3cd75a1831a94a24913bfd2c9b9d35acbb11ac3447f65bb0682cf14f63f5c__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_4ca3cd75a1831a94a24913bfd2c9b9d35acbb11ac3447f65bb0682cf14f63f5c_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 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_bool(value) -> cleaned {\n cleaned := iszero(iszero(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 panic_error_0x11() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n\n function store_literal_in_memory_45e3d26e36c3151c7f92a1eee9add9658cbb8e14605ee2452ec007389b9744bc(memPtr) {\n\n mstore(add(memPtr, 0), \"Insufficient allowance\")\n\n }\n\n function store_literal_in_memory_4ca3cd75a1831a94a24913bfd2c9b9d35acbb11ac3447f65bb0682cf14f63f5c(memPtr) {\n\n mstore(add(memPtr, 0), \"Transferred value is zero\")\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_uint256(value) {\n if iszero(eq(value, cleanup_t_uint256(value))) { revert(0, 0) }\n }\n\n}\n","id":4,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b506004361061007d5760003560e01c8063313ce5671161005b578063313ce5671461010057806370a082311461011e578063a9059cbb1461014e578063dd62ed3e1461017e5761007d565b8063095ea7b31461008257806318160ddd146100b257806323b872dd146100d0575b600080fd5b61009c60048036038101906100979190610656565b6101ae565b6040516100a991906106f6565b60405180910390f35b6100ba61023b565b6040516100c79190610751565b60405180910390f35b6100ea60048036038101906100e59190610607565b610241565b6040516100f791906106f6565b60405180910390f35b6101086103d9565b6040516101159190610751565b60405180910390f35b610138600480360381019061013391906105a2565b6103df565b6040516101459190610751565b60405180910390f35b61016860048036038101906101639190610656565b6103f7565b60405161017591906106f6565b60405180910390f35b610198600480360381019061019391906105cb565b6104f1565b6040516101a59190610751565b60405180910390f35b600081600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001905092915050565b60015481565b60008161024e85336104f1565b101561028f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161028690610711565b60405180910390fd5b81600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461031b91906107d3565b9250508190555081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461037191906107d3565b9250508190555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546103c7919061077d565b92505081905550600190509392505050565b60005481565b60026020528060005260406000206000915090505481565b600080821161043b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043290610731565b60405180910390fd5b81600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461048a91906107d3565b9250508190555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546104e0919061077d565b925050819055506001905092915050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600081359050610587816108d0565b92915050565b60008135905061059c816108e7565b92915050565b6000602082840312156105b457600080fd5b60006105c284828501610578565b91505092915050565b600080604083850312156105de57600080fd5b60006105ec85828601610578565b92505060206105fd85828601610578565b9150509250929050565b60008060006060848603121561061c57600080fd5b600061062a86828701610578565b935050602061063b86828701610578565b925050604061064c8682870161058d565b9150509250925092565b6000806040838503121561066957600080fd5b600061067785828601610578565b92505060206106888582860161058d565b9150509250929050565b61069b81610819565b82525050565b60006106ae60168361076c565b91506106b98261087e565b602082019050919050565b60006106d160198361076c565b91506106dc826108a7565b602082019050919050565b6106f081610845565b82525050565b600060208201905061070b6000830184610692565b92915050565b6000602082019050818103600083015261072a816106a1565b9050919050565b6000602082019050818103600083015261074a816106c4565b9050919050565b600060208201905061076660008301846106e7565b92915050565b600082825260208201905092915050565b600061078882610845565b915061079383610845565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156107c8576107c761084f565b5b828201905092915050565b60006107de82610845565b91506107e983610845565b9250828210156107fc576107fb61084f565b5b828203905092915050565b600061081282610825565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f496e73756666696369656e7420616c6c6f77616e636500000000000000000000600082015250565b7f5472616e736665727265642076616c7565206973207a65726f00000000000000600082015250565b6108d981610807565b81146108e457600080fd5b50565b6108f081610845565b81146108fb57600080fd5b5056fea2646970667358221220a8a6918adf2af132e4e49a96a108a2d9c62cfb74de3e267b6c8af323b87f6ec964736f6c63430008040033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x7D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x313CE567 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x100 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x11E JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x14E JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x17E JUMPI PUSH2 0x7D JUMP JUMPDEST DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x82 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0xB2 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0xD0 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9C PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x97 SWAP2 SWAP1 PUSH2 0x656 JUMP JUMPDEST PUSH2 0x1AE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xA9 SWAP2 SWAP1 PUSH2 0x6F6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xBA PUSH2 0x23B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xC7 SWAP2 SWAP1 PUSH2 0x751 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xEA PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xE5 SWAP2 SWAP1 PUSH2 0x607 JUMP JUMPDEST PUSH2 0x241 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xF7 SWAP2 SWAP1 PUSH2 0x6F6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x108 PUSH2 0x3D9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x115 SWAP2 SWAP1 PUSH2 0x751 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x138 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x133 SWAP2 SWAP1 PUSH2 0x5A2 JUMP JUMPDEST PUSH2 0x3DF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x145 SWAP2 SWAP1 PUSH2 0x751 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x168 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x163 SWAP2 SWAP1 PUSH2 0x656 JUMP JUMPDEST PUSH2 0x3F7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x175 SWAP2 SWAP1 PUSH2 0x6F6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x198 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x193 SWAP2 SWAP1 PUSH2 0x5CB JUMP JUMPDEST PUSH2 0x4F1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1A5 SWAP2 SWAP1 PUSH2 0x751 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x3 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 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP PUSH1 0x1 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x24E DUP6 CALLER PUSH2 0x4F1 JUMP JUMPDEST LT ISZERO PUSH2 0x28F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x286 SWAP1 PUSH2 0x711 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 PUSH1 0x3 PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 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 0x31B SWAP2 SWAP1 PUSH2 0x7D3 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x2 PUSH1 0x0 DUP7 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 0x371 SWAP2 SWAP1 PUSH2 0x7D3 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x2 PUSH1 0x0 DUP6 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 0x3C7 SWAP2 SWAP1 PUSH2 0x77D JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH1 0x1 SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD 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 DUP3 GT PUSH2 0x43B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x432 SWAP1 PUSH2 0x731 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 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 0x48A SWAP2 SWAP1 PUSH2 0x7D3 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x2 PUSH1 0x0 DUP6 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 0x4E0 SWAP2 SWAP1 PUSH2 0x77D JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH1 0x1 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x3 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x587 DUP2 PUSH2 0x8D0 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x59C DUP2 PUSH2 0x8E7 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x5B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x5C2 DUP5 DUP3 DUP6 ADD PUSH2 0x578 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x5DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x5EC DUP6 DUP3 DUP7 ADD PUSH2 0x578 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x5FD DUP6 DUP3 DUP7 ADD PUSH2 0x578 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x61C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x62A DUP7 DUP3 DUP8 ADD PUSH2 0x578 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x63B DUP7 DUP3 DUP8 ADD PUSH2 0x578 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x64C DUP7 DUP3 DUP8 ADD PUSH2 0x58D JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x669 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x677 DUP6 DUP3 DUP7 ADD PUSH2 0x578 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x688 DUP6 DUP3 DUP7 ADD PUSH2 0x58D JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH2 0x69B DUP2 PUSH2 0x819 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6AE PUSH1 0x16 DUP4 PUSH2 0x76C JUMP JUMPDEST SWAP2 POP PUSH2 0x6B9 DUP3 PUSH2 0x87E JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6D1 PUSH1 0x19 DUP4 PUSH2 0x76C JUMP JUMPDEST SWAP2 POP PUSH2 0x6DC DUP3 PUSH2 0x8A7 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x6F0 DUP2 PUSH2 0x845 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x70B PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x692 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 0x72A DUP2 PUSH2 0x6A1 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 0x74A DUP2 PUSH2 0x6C4 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x766 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x6E7 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x788 DUP3 PUSH2 0x845 JUMP JUMPDEST SWAP2 POP PUSH2 0x793 DUP4 PUSH2 0x845 JUMP JUMPDEST SWAP3 POP DUP3 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SUB DUP3 GT ISZERO PUSH2 0x7C8 JUMPI PUSH2 0x7C7 PUSH2 0x84F JUMP JUMPDEST JUMPDEST DUP3 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7DE DUP3 PUSH2 0x845 JUMP JUMPDEST SWAP2 POP PUSH2 0x7E9 DUP4 PUSH2 0x845 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 LT ISZERO PUSH2 0x7FC JUMPI PUSH2 0x7FB PUSH2 0x84F JUMP JUMPDEST JUMPDEST DUP3 DUP3 SUB SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x812 DUP3 PUSH2 0x825 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO ISZERO 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 PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x496E73756666696369656E7420616C6C6F77616E636500000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH32 0x5472616E736665727265642076616C7565206973207A65726F00000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH2 0x8D9 DUP2 PUSH2 0x807 JUMP JUMPDEST DUP2 EQ PUSH2 0x8E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x8F0 DUP2 PUSH2 0x845 JUMP JUMPDEST DUP2 EQ PUSH2 0x8FB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xA8 0xA6 SWAP2 DUP11 0xDF 0x2A CALL ORIGIN 0xE4 0xE4 SWAP11 SWAP7 LOG1 ADDMOD LOG2 0xD9 0xC6 0x2C 0xFB PUSH21 0xDE3E267B6C8AF323B87F6EC964736F6C6343000804 STOP CALLER ","sourceMap":"57:1085:3:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;703:146;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;125:23;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;853:287;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;96:24;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;152:41;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;355:205;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;564:135;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;703:146;768:12;822:5;788:10;:22;799:10;788:22;;;;;;;;;;;;;;;:31;811:7;788:31;;;;;;;;;;;;;;;:39;;;;840:4;833:11;;703:146;;;;:::o;125:23::-;;;;:::o;853:287::-;932:4;983:5;952:27;962:4;968:10;952:9;:27::i;:::-;:36;;944:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;1054:5;1022:10;:16;1033:4;1022:16;;;;;;;;;;;;;;;:28;1039:10;1022:28;;;;;;;;;;;;;;;;:37;;;;;;;:::i;:::-;;;;;;;;1084:5;1065:9;:15;1075:4;1065:15;;;;;;;;;;;;;;;;:24;;;;;;;:::i;:::-;;;;;;;;1112:5;1095:9;:13;1105:2;1095:13;;;;;;;;;;;;;;;;:22;;;;;;;:::i;:::-;;;;;;;;1131:4;1124:11;;853:287;;;;;:::o;96:24::-;;;;:::o;152:41::-;;;;;;;;;;;;;;;;;:::o;355:205::-;413:4;441:1;433:5;:9;425:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;504:5;479:9;:21;489:10;479:21;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;532:5;515:9;:13;525:2;515:13;;;;;;;;;;;;;;;;:22;;;;;;;:::i;:::-;;;;;;;;551:4;544:11;;355:205;;;;:::o;564:135::-;636:17;668:10;:17;679:5;668:17;;;;;;;;;;;;;;;:26;686:7;668:26;;;;;;;;;;;;;;;;661:33;;564:135;;;;:::o;7:139:4:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:139::-;198:5;236:6;223:20;214:29;;252:33;279:5;252:33;:::i;:::-;204:87;;;;:::o;297:262::-;356:6;405:2;393:9;384:7;380:23;376:32;373:2;;;421:1;418;411:12;373:2;464:1;489:53;534:7;525:6;514:9;510:22;489:53;:::i;:::-;479:63;;435:117;363:196;;;;:::o;565:407::-;633:6;641;690:2;678:9;669:7;665:23;661:32;658:2;;;706:1;703;696:12;658:2;749:1;774:53;819:7;810:6;799:9;795:22;774:53;:::i;:::-;764:63;;720:117;876:2;902:53;947:7;938:6;927:9;923:22;902:53;:::i;:::-;892:63;;847:118;648:324;;;;;:::o;978:552::-;1055:6;1063;1071;1120:2;1108:9;1099:7;1095:23;1091:32;1088:2;;;1136:1;1133;1126:12;1088:2;1179:1;1204:53;1249:7;1240:6;1229:9;1225:22;1204:53;:::i;:::-;1194:63;;1150:117;1306:2;1332:53;1377:7;1368:6;1357:9;1353:22;1332:53;:::i;:::-;1322:63;;1277:118;1434:2;1460:53;1505:7;1496:6;1485:9;1481:22;1460:53;:::i;:::-;1450:63;;1405:118;1078:452;;;;;:::o;1536:407::-;1604:6;1612;1661:2;1649:9;1640:7;1636:23;1632:32;1629:2;;;1677:1;1674;1667:12;1629:2;1720:1;1745:53;1790:7;1781:6;1770:9;1766:22;1745:53;:::i;:::-;1735:63;;1691:117;1847:2;1873:53;1918:7;1909:6;1898:9;1894:22;1873:53;:::i;:::-;1863:63;;1818:118;1619:324;;;;;:::o;1949:109::-;2030:21;2045:5;2030:21;:::i;:::-;2025:3;2018:34;2008:50;;:::o;2064:366::-;2206:3;2227:67;2291:2;2286:3;2227:67;:::i;:::-;2220:74;;2303:93;2392:3;2303:93;:::i;:::-;2421:2;2416:3;2412:12;2405:19;;2210:220;;;:::o;2436:366::-;2578:3;2599:67;2663:2;2658:3;2599:67;:::i;:::-;2592:74;;2675:93;2764:3;2675:93;:::i;:::-;2793:2;2788:3;2784:12;2777:19;;2582:220;;;:::o;2808:118::-;2895:24;2913:5;2895:24;:::i;:::-;2890:3;2883:37;2873:53;;:::o;2932:210::-;3019:4;3057:2;3046:9;3042:18;3034:26;;3070:65;3132:1;3121:9;3117:17;3108:6;3070:65;:::i;:::-;3024:118;;;;:::o;3148:419::-;3314:4;3352:2;3341:9;3337:18;3329:26;;3401:9;3395:4;3391:20;3387:1;3376:9;3372:17;3365:47;3429:131;3555:4;3429:131;:::i;:::-;3421:139;;3319:248;;;:::o;3573:419::-;3739:4;3777:2;3766:9;3762:18;3754:26;;3826:9;3820:4;3816:20;3812:1;3801:9;3797:17;3790:47;3854:131;3980:4;3854:131;:::i;:::-;3846:139;;3744:248;;;:::o;3998:222::-;4091:4;4129:2;4118:9;4114:18;4106:26;;4142:71;4210:1;4199:9;4195:17;4186:6;4142:71;:::i;:::-;4096:124;;;;:::o;4226:169::-;4310:11;4344:6;4339:3;4332:19;4384:4;4379:3;4375:14;4360:29;;4322:73;;;;:::o;4401:305::-;4441:3;4460:20;4478:1;4460:20;:::i;:::-;4455:25;;4494:20;4512:1;4494:20;:::i;:::-;4489:25;;4648:1;4580:66;4576:74;4573:1;4570:81;4567:2;;;4654:18;;:::i;:::-;4567:2;4698:1;4695;4691:9;4684:16;;4445:261;;;;:::o;4712:191::-;4752:4;4772:20;4790:1;4772:20;:::i;:::-;4767:25;;4806:20;4824:1;4806:20;:::i;:::-;4801:25;;4845:1;4842;4839:8;4836:2;;;4850:18;;:::i;:::-;4836:2;4895:1;4892;4888:9;4880:17;;4757:146;;;;:::o;4909:96::-;4946:7;4975:24;4993:5;4975:24;:::i;:::-;4964:35;;4954:51;;;:::o;5011:90::-;5045:7;5088:5;5081:13;5074:21;5063:32;;5053:48;;;:::o;5107:126::-;5144:7;5184:42;5177:5;5173:54;5162:65;;5152:81;;;:::o;5239:77::-;5276:7;5305:5;5294:16;;5284:32;;;:::o;5322:180::-;5370:77;5367:1;5360:88;5467:4;5464:1;5457:15;5491:4;5488:1;5481:15;5508:172;5648:24;5644:1;5636:6;5632:14;5625:48;5614:66;:::o;5686:175::-;5826:27;5822:1;5814:6;5810:14;5803:51;5792:69;:::o;5867:122::-;5940:24;5958:5;5940:24;:::i;:::-;5933:5;5930:35;5920:2;;5979:1;5976;5969:12;5920:2;5910:79;:::o;5995:122::-;6068:24;6086:5;6068:24;:::i;:::-;6061:5;6058:35;6048:2;;6107:1;6104;6097:12;6048:2;6038:79;:::o"},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.4+commit.c7e474f2\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"remaining\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/Token.sol\":\"TokenWithoutNameNorSymbol\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/Token.sol\":{\"keccak256\":\"0x3c98df2a7295115a107e950c40733f37ce5384cf18a0b5efb948ccf6d1acaa59\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://21c0d9ad7fee4c50e057a477ec0c151985566e51e1df46d3dc42f4320eceeccf\",\"dweb:/ipfs/QmSVvnCWd9MH3F93atgJGuwbHMJpifnoMLSosQsZUKUrZ8\"]}},\"version\":1}"}}}}} \ No newline at end of file From 6989f6dde53ccfdba8252f5bbd224054786170a3 Mon Sep 17 00:00:00 2001 From: ChrisD <18092467+ChristopherDedominici@users.noreply.github.com> Date: Fri, 22 Nov 2024 17:24:03 +0100 Subject: [PATCH 36/61] fix windows CI failure --- .../fixture-projects/hardhat-project/hardhat.config.ts | 8 ++++---- v-next/hardhat-chai-matchers/test/index.ts | 7 ++++--- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/hardhat.config.ts b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/hardhat.config.ts index c9f7f09443..f3b9bb339e 100644 --- a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/hardhat.config.ts +++ b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/hardhat.config.ts @@ -6,10 +6,10 @@ const config: HardhatUserConfig = { solidity: { version: "0.8.24", }, - paths: { - // TODO: remove this when compilation in V3 is executed only when files are not compiled already (when cache is available) - artifacts: "./artifacts", - }, + // paths: { + // // TODO: remove this when compilation in V3 is executed only when files are not compiled already (when cache is available) + // artifacts: "./artifacts", + // }, plugins: [hardhatEthersPlugin], }; diff --git a/v-next/hardhat-chai-matchers/test/index.ts b/v-next/hardhat-chai-matchers/test/index.ts index 8a5ec5a8db..114e8616d3 100644 --- a/v-next/hardhat-chai-matchers/test/index.ts +++ b/v-next/hardhat-chai-matchers/test/index.ts @@ -8,9 +8,10 @@ describe("hardhat-chai-matchers plugin correctly initialized", () => { useFixtureProject("hook-initialization"); it("should load the plugin via hook and use the functionalities in a mocha test", async () => { - const configPath = - "./fixture-projects/hook-initialization/hardhat.config.ts"; - const hardhatConfig = await import(configPath); + const hardhatConfig = await import( + // eslint-disable-next-line import/no-relative-packages -- allow for fixture projects + "./fixture-projects/hook-initialization/hardhat.config.js" + ); const hre = await createHardhatRuntimeEnvironment(hardhatConfig.default); From 03581ab9fb03b4a73764e203eabdf3d1ad7db9c7 Mon Sep 17 00:00:00 2001 From: ChrisD <18092467+ChristopherDedominici@users.noreply.github.com> Date: Fri, 22 Nov 2024 17:32:48 +0100 Subject: [PATCH 37/61] fix windows CI error --- v-next/hardhat-chai-matchers/test/helpers/helpers.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/v-next/hardhat-chai-matchers/test/helpers/helpers.ts b/v-next/hardhat-chai-matchers/test/helpers/helpers.ts index f915e8b8fd..7a18eaf948 100644 --- a/v-next/hardhat-chai-matchers/test/helpers/helpers.ts +++ b/v-next/hardhat-chai-matchers/test/helpers/helpers.ts @@ -3,6 +3,8 @@ import type { EthereumProvider } from "@ignored/hardhat-vnext/types/providers"; import type { HardhatEthers } from "@ignored/hardhat-vnext-ethers/types"; import type { ContractTransactionResponse } from "ethers/contract"; +import { pathToFileURL } from "node:url"; + import { createHardhatRuntimeEnvironment } from "@ignored/hardhat-vnext/hre"; import { AssertionError, expect } from "chai"; @@ -10,7 +12,10 @@ export async function initEnvironment(_artifactsPath: string): Promise<{ provider: EthereumProvider; ethers: HardhatEthers; }> { - const config = (await import(`${process.cwd()}/hardhat.config.ts`)).default; + const configPath = pathToFileURL( + `${process.cwd()}/hardhat.config.ts`, + ).toString(); + const config = (await import(configPath)).default; // TODO: remove this when compilation in V3 is executed only when files are not compiled already (when cache is available) // config.paths.artifacts = path.join(".", "artifacts", artifactsPath); From 0bc2aa2fbb9825b253fab4e83bf71b48176a39bd Mon Sep 17 00:00:00 2001 From: ChrisD <18092467+ChristopherDedominici@users.noreply.github.com> Date: Mon, 25 Nov 2024 11:14:12 +0100 Subject: [PATCH 38/61] call "next" in hook --- .../src/internal/hook-handlers/mocha.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/v-next/hardhat-chai-matchers/src/internal/hook-handlers/mocha.ts b/v-next/hardhat-chai-matchers/src/internal/hook-handlers/mocha.ts index d7ebaa14a9..5ea35e7182 100644 --- a/v-next/hardhat-chai-matchers/src/internal/hook-handlers/mocha.ts +++ b/v-next/hardhat-chai-matchers/src/internal/hook-handlers/mocha.ts @@ -8,12 +8,12 @@ import { addChaiMatchers } from "../add-chai-matchers.js"; export default async (): Promise> => { const handlers: Partial = { initialize( - _context: HookContext, - _next: (context: HookContext) => Promise, + context: HookContext, + next: (context: HookContext) => Promise, ): Promise { addChaiMatchers(); - return Promise.resolve(); + return next(context); }, }; From 8b5594046e2043a74fc17995125c8484fc8f07a1 Mon Sep 17 00:00:00 2001 From: ChrisD <18092467+ChristopherDedominici@users.noreply.github.com> Date: Mon, 25 Nov 2024 11:35:22 +0100 Subject: [PATCH 39/61] remove unused error descriptor --- v-next/hardhat-errors/src/descriptors.ts | 8 -------- 1 file changed, 8 deletions(-) diff --git a/v-next/hardhat-errors/src/descriptors.ts b/v-next/hardhat-errors/src/descriptors.ts index ac01ef406a..ef56e199dd 100644 --- a/v-next/hardhat-errors/src/descriptors.ts +++ b/v-next/hardhat-errors/src/descriptors.ts @@ -226,14 +226,6 @@ Please add the property "type" with the value "module" in your package.json to e websiteTitle: "Invalid hex string", websiteDescription: `Given value was not a valid hex string.`, }, - INVALID_BIG_NUMBER: { - number: 19, - messageTemplate: - "The input value cannot be normalized to a bigint: {message}", - websiteTitle: "Invalid big number", - websiteDescription: - "Hardhat attempted to convert the input value to a bigint, but no known conversion method was applicable to the given value.", - }, }, INTERNAL: { ASSERTION_ERROR: { From 3b4ad6fb7d394a78c51495560885ef29546a3f1d Mon Sep 17 00:00:00 2001 From: ChrisD <18092467+ChristopherDedominici@users.noreply.github.com> Date: Mon, 25 Nov 2024 11:38:45 +0100 Subject: [PATCH 40/61] remove commented error descriptor --- v-next/hardhat-errors/src/descriptors.ts | 6 ------ 1 file changed, 6 deletions(-) diff --git a/v-next/hardhat-errors/src/descriptors.ts b/v-next/hardhat-errors/src/descriptors.ts index ef56e199dd..3e91ee8ddb 100644 --- a/v-next/hardhat-errors/src/descriptors.ts +++ b/v-next/hardhat-errors/src/descriptors.ts @@ -1400,11 +1400,5 @@ Please check Hardhat's output for more details.`, websiteDescription: "withArgs called with both .emit and .revertedWithCustomError, but these assertions cannot be combined", }, - // ANY_UINT_ARGUMENT_NOT_AN_UNSIGNED_INTEGER: { - // number: 1421, - // messageTemplate: `anyUint expected its argument to be an unsigned integer, but it was negative, with value "{value}"`, - // websiteTitle: "anyUint should be an unsigned integer", - // websiteDescription: "anyUint should be an unsigned integer", - // }, }, } as const; From 1a38cde71447fdec16833e6435c171843155fe77 Mon Sep 17 00:00:00 2001 From: ChrisD <18092467+ChristopherDedominici@users.noreply.github.com> Date: Mon, 25 Nov 2024 12:18:01 +0100 Subject: [PATCH 41/61] replace ethers method "toBeHex" with "numberToHexString" --- .../src/internal/matchers/reverted/reverted.ts | 4 ++-- .../internal/matchers/reverted/revertedWith.ts | 4 ++-- .../matchers/reverted/revertedWithCustomError.ts | 4 ++-- .../matchers/reverted/revertedWithPanic.ts | 8 ++++---- .../matchers/reverted/revertedWithoutReason.ts | 4 ++-- .../test/matchers/reverted/reverted.ts | 2 +- .../test/matchers/reverted/revertedWith.ts | 2 +- .../matchers/reverted/revertedWithCustomError.ts | 2 +- .../test/matchers/reverted/revertedWithPanic.ts | 16 ++++++++-------- .../matchers/reverted/revertedWithoutReason.ts | 2 +- 10 files changed, 24 insertions(+), 24 deletions(-) diff --git a/v-next/hardhat-chai-matchers/src/internal/matchers/reverted/reverted.ts b/v-next/hardhat-chai-matchers/src/internal/matchers/reverted/reverted.ts index 043ecb6a09..a9839b3123 100644 --- a/v-next/hardhat-chai-matchers/src/internal/matchers/reverted/reverted.ts +++ b/v-next/hardhat-chai-matchers/src/internal/matchers/reverted/reverted.ts @@ -1,7 +1,7 @@ import type { HardhatEthers } from "@ignored/hardhat-vnext-ethers/types"; import { HardhatError } from "@ignored/hardhat-vnext-errors"; -import { toBeHex } from "ethers/utils"; +import { numberToHexString } from "@ignored/hardhat-vnext-utils/hex"; import { buildAssert } from "../../../utils.js"; import { REVERTED_MATCHER } from "../../constants.js"; @@ -105,7 +105,7 @@ export function supportReverted( assert( true, undefined, - `Expected transaction NOT to be reverted, but it reverted with panic code ${toBeHex( + `Expected transaction NOT to be reverted, but it reverted with panic code ${numberToHexString( decodedReturnData.code, )} (${decodedReturnData.description})`, ); diff --git a/v-next/hardhat-chai-matchers/src/internal/matchers/reverted/revertedWith.ts b/v-next/hardhat-chai-matchers/src/internal/matchers/reverted/revertedWith.ts index 880eb605d5..83371ef4aa 100644 --- a/v-next/hardhat-chai-matchers/src/internal/matchers/reverted/revertedWith.ts +++ b/v-next/hardhat-chai-matchers/src/internal/matchers/reverted/revertedWith.ts @@ -1,5 +1,5 @@ import { HardhatError } from "@ignored/hardhat-vnext-errors"; -import { toBeHex } from "ethers/utils"; +import { numberToHexString } from "@ignored/hardhat-vnext-utils/hex"; import { buildAssert } from "../../../utils.js"; import { REVERTED_WITH_MATCHER } from "../../constants.js"; @@ -72,7 +72,7 @@ export function supportRevertedWith( } else if (decodedReturnData.kind === "Panic") { assert( false, - `Expected transaction to be reverted with reason '${expectedReasonString}', but it reverted with panic code ${toBeHex( + `Expected transaction to be reverted with reason '${expectedReasonString}', but it reverted with panic code ${numberToHexString( decodedReturnData.code, )} (${decodedReturnData.description})`, ); diff --git a/v-next/hardhat-chai-matchers/src/internal/matchers/reverted/revertedWithCustomError.ts b/v-next/hardhat-chai-matchers/src/internal/matchers/reverted/revertedWithCustomError.ts index ef985a2820..202275603e 100644 --- a/v-next/hardhat-chai-matchers/src/internal/matchers/reverted/revertedWithCustomError.ts +++ b/v-next/hardhat-chai-matchers/src/internal/matchers/reverted/revertedWithCustomError.ts @@ -3,7 +3,7 @@ import type { ErrorFragment, Interface } from "ethers/abi"; import type { BaseContract } from "ethers/contract"; import { HardhatError } from "@ignored/hardhat-vnext-errors"; -import { toBeHex } from "ethers/utils"; +import { numberToHexString } from "@ignored/hardhat-vnext-utils/hex"; import { buildAssert } from "../../../utils.js"; import { @@ -91,7 +91,7 @@ export function supportRevertedWithCustomError( } else if (decodedReturnData.kind === "Panic") { assert( false, - `Expected transaction to be reverted with custom error '${expectedCustomErrorName}', but it reverted with panic code ${toBeHex( + `Expected transaction to be reverted with custom error '${expectedCustomErrorName}', but it reverted with panic code ${numberToHexString( decodedReturnData.code, )} (${decodedReturnData.description})`, ); diff --git a/v-next/hardhat-chai-matchers/src/internal/matchers/reverted/revertedWithPanic.ts b/v-next/hardhat-chai-matchers/src/internal/matchers/reverted/revertedWithPanic.ts index 85dad5f7a9..42011b97cf 100644 --- a/v-next/hardhat-chai-matchers/src/internal/matchers/reverted/revertedWithPanic.ts +++ b/v-next/hardhat-chai-matchers/src/internal/matchers/reverted/revertedWithPanic.ts @@ -1,6 +1,6 @@ import { HardhatError } from "@ignored/hardhat-vnext-errors"; import { toBigInt } from "@ignored/hardhat-vnext-utils/bigint"; -import { toBeHex } from "ethers/utils"; +import { numberToHexString } from "@ignored/hardhat-vnext-utils/hex"; import { buildAssert } from "../../../utils.js"; import { REVERTED_WITH_PANIC_MATCHER } from "../../constants.js"; @@ -46,7 +46,7 @@ export function supportRevertedWithPanic( } else { const codeBN = toBigInt(code); description = panicErrorCodeToReason(codeBN) ?? "unknown panic code"; - formattedPanicCode = `panic code ${toBeHex(codeBN)} (${description})`; + formattedPanicCode = `panic code ${numberToHexString(codeBN)} (${description})`; } preventAsyncMatcherChaining(this, REVERTED_WITH_PANIC_MATCHER, chaiUtils); @@ -80,7 +80,7 @@ export function supportRevertedWithPanic( if (code !== undefined) { assert( decodedReturnData.code === code, - `Expected transaction to be reverted with ${formattedPanicCode}, but it reverted with panic code ${toBeHex( + `Expected transaction to be reverted with ${formattedPanicCode}, but it reverted with panic code ${numberToHexString( decodedReturnData.code, )} (${decodedReturnData.description})`, `Expected transaction NOT to be reverted with ${formattedPanicCode}, but it was`, @@ -89,7 +89,7 @@ export function supportRevertedWithPanic( assert( true, undefined, - `Expected transaction NOT to be reverted with ${formattedPanicCode}, but it reverted with panic code ${toBeHex( + `Expected transaction NOT to be reverted with ${formattedPanicCode}, but it reverted with panic code ${numberToHexString( decodedReturnData.code, )} (${decodedReturnData.description})`, ); diff --git a/v-next/hardhat-chai-matchers/src/internal/matchers/reverted/revertedWithoutReason.ts b/v-next/hardhat-chai-matchers/src/internal/matchers/reverted/revertedWithoutReason.ts index bed9f0d382..166ae07563 100644 --- a/v-next/hardhat-chai-matchers/src/internal/matchers/reverted/revertedWithoutReason.ts +++ b/v-next/hardhat-chai-matchers/src/internal/matchers/reverted/revertedWithoutReason.ts @@ -1,4 +1,4 @@ -import { toBeHex } from "ethers/utils"; +import { numberToHexString } from "@ignored/hardhat-vnext-utils/hex"; import { buildAssert } from "../../../utils.js"; import { REVERTED_WITHOUT_REASON_MATCHER } from "../../constants.js"; @@ -49,7 +49,7 @@ export function supportRevertedWithoutReason( } else if (decodedReturnData.kind === "Panic") { assert( false, - `Expected transaction to be reverted without a reason, but it reverted with panic code ${toBeHex( + `Expected transaction to be reverted without a reason, but it reverted with panic code ${numberToHexString( decodedReturnData.code, )} (${decodedReturnData.description})`, ); diff --git a/v-next/hardhat-chai-matchers/test/matchers/reverted/reverted.ts b/v-next/hardhat-chai-matchers/test/matchers/reverted/reverted.ts index 9652ad37e1..506c8f29d7 100644 --- a/v-next/hardhat-chai-matchers/test/matchers/reverted/reverted.ts +++ b/v-next/hardhat-chai-matchers/test/matchers/reverted/reverted.ts @@ -398,7 +398,7 @@ describe("INTEGRATION: Reverted", { timeout: 60000 }, () => { args: [], failedAssert: (x) => expect(x).not.to.be.reverted(ethers), failedAssertReason: - "Expected transaction NOT to be reverted, but it reverted with panic code 0x01 (Assertion error)", + "Expected transaction NOT to be reverted, but it reverted with panic code 0x1 (Assertion error)", }); }); }); diff --git a/v-next/hardhat-chai-matchers/test/matchers/reverted/revertedWith.ts b/v-next/hardhat-chai-matchers/test/matchers/reverted/revertedWith.ts index c65d7f46a4..da3f12a6e0 100644 --- a/v-next/hardhat-chai-matchers/test/matchers/reverted/revertedWith.ts +++ b/v-next/hardhat-chai-matchers/test/matchers/reverted/revertedWith.ts @@ -170,7 +170,7 @@ describe("INTEGRATION: Reverted with", { timeout: 60000 }, () => { method: "panicAssert", failedAssert: (x) => expect(x).to.be.revertedWith("some reason"), failedAssertReason: - "Expected transaction to be reverted with reason 'some reason', but it reverted with panic code 0x01 (Assertion error)", + "Expected transaction to be reverted with reason 'some reason', but it reverted with panic code 0x1 (Assertion error)", }); }); }); diff --git a/v-next/hardhat-chai-matchers/test/matchers/reverted/revertedWithCustomError.ts b/v-next/hardhat-chai-matchers/test/matchers/reverted/revertedWithCustomError.ts index 468a5621ef..41cf0f5021 100644 --- a/v-next/hardhat-chai-matchers/test/matchers/reverted/revertedWithCustomError.ts +++ b/v-next/hardhat-chai-matchers/test/matchers/reverted/revertedWithCustomError.ts @@ -166,7 +166,7 @@ describe("INTEGRATION: Reverted with custom error", { timeout: 60000 }, () => { "SomeCustomError", ), failedAssertReason: - "Expected transaction to be reverted with custom error 'SomeCustomError', but it reverted with panic code 0x01 (Assertion error)", + "Expected transaction to be reverted with custom error 'SomeCustomError', but it reverted with panic code 0x1 (Assertion error)", }); }); }); diff --git a/v-next/hardhat-chai-matchers/test/matchers/reverted/revertedWithPanic.ts b/v-next/hardhat-chai-matchers/test/matchers/reverted/revertedWithPanic.ts index b555d0a0e6..05c805a419 100644 --- a/v-next/hardhat-chai-matchers/test/matchers/reverted/revertedWithPanic.ts +++ b/v-next/hardhat-chai-matchers/test/matchers/reverted/revertedWithPanic.ts @@ -83,7 +83,7 @@ describe("INTEGRATION: Reverted with panic", { timeout: 60000 }, () => { failedAssert: (x) => expect(x).to.be.revertedWithPanic(PANIC_CODES.ASSERTION_ERROR), failedAssertReason: - "Expected transaction to be reverted with panic code 0x01 (Assertion error), but it didn't revert", + "Expected transaction to be reverted with panic code 0x1 (Assertion error), but it didn't revert", }); }); }); @@ -119,7 +119,7 @@ describe("INTEGRATION: Reverted with panic", { timeout: 60000 }, () => { failedAssert: (x) => expect(x).to.be.revertedWithPanic(PANIC_CODES.ASSERTION_ERROR), failedAssertReason: - "Expected transaction to be reverted with panic code 0x01 (Assertion error), but it reverted without a reason", + "Expected transaction to be reverted with panic code 0x1 (Assertion error), but it reverted without a reason", }); }); }); @@ -157,7 +157,7 @@ describe("INTEGRATION: Reverted with panic", { timeout: 60000 }, () => { failedAssert: (x) => expect(x).to.be.revertedWithPanic(PANIC_CODES.ASSERTION_ERROR), failedAssertReason: - "Expected transaction to be reverted with panic code 0x01 (Assertion error), but it reverted with reason 'some reason'", + "Expected transaction to be reverted with panic code 0x1 (Assertion error), but it reverted with reason 'some reason'", }); }); }); @@ -183,7 +183,7 @@ describe("INTEGRATION: Reverted with panic", { timeout: 60000 }, () => { method: "panicAssert", failedAssert: (x) => expect(x).to.not.be.revertedWithPanic(), failedAssertReason: - "Expected transaction NOT to be reverted with some panic code, but it reverted with panic code 0x01 (Assertion error)", + "Expected transaction NOT to be reverted with some panic code, but it reverted with panic code 0x1 (Assertion error)", }); await runFailedAsserts({ @@ -192,7 +192,7 @@ describe("INTEGRATION: Reverted with panic", { timeout: 60000 }, () => { failedAssert: (x) => expect(x).to.not.be.revertedWithPanic(PANIC_CODES.ASSERTION_ERROR), failedAssertReason: - "Expected transaction NOT to be reverted with panic code 0x01 (Assertion error), but it was", + "Expected transaction NOT to be reverted with panic code 0x1 (Assertion error), but it was", }); await runFailedAsserts({ @@ -201,7 +201,7 @@ describe("INTEGRATION: Reverted with panic", { timeout: 60000 }, () => { failedAssert: (x) => expect(x).to.be.revertedWithPanic(PANIC_CODES.ARITHMETIC_OVERFLOW), failedAssertReason: - "Expected transaction to be reverted with panic code 0x11 (Arithmetic operation overflowed outside of an unchecked block), but it reverted with panic code 0x01 (Assertion error)", + "Expected transaction to be reverted with panic code 0x11 (Arithmetic operation overflowed outside of an unchecked block), but it reverted with panic code 0x1 (Assertion error)", }); }); }); @@ -237,7 +237,7 @@ describe("INTEGRATION: Reverted with panic", { timeout: 60000 }, () => { failedAssert: (x) => expect(x).to.be.revertedWithPanic(PANIC_CODES.ASSERTION_ERROR), failedAssertReason: - "Expected transaction to be reverted with panic code 0x01 (Assertion error), but it reverted with a custom error", + "Expected transaction to be reverted with panic code 0x1 (Assertion error), but it reverted with a custom error", }); }); }); @@ -332,7 +332,7 @@ describe("INTEGRATION: Reverted with panic", { timeout: 60000 }, () => { } catch (e) { const errorString = util.inspect(e); expect(errorString).to.include( - "Expected transaction NOT to be reverted with some panic code, but it reverted with panic code 0x01 (Assertion error)", + "Expected transaction NOT to be reverted with some panic code, but it reverted with panic code 0x1 (Assertion error)", ); expect(errorString).to.include( path.join("test", "matchers", "reverted", "revertedWithPanic.ts"), diff --git a/v-next/hardhat-chai-matchers/test/matchers/reverted/revertedWithoutReason.ts b/v-next/hardhat-chai-matchers/test/matchers/reverted/revertedWithoutReason.ts index 113cf6a4ee..ac5e3f0b66 100644 --- a/v-next/hardhat-chai-matchers/test/matchers/reverted/revertedWithoutReason.ts +++ b/v-next/hardhat-chai-matchers/test/matchers/reverted/revertedWithoutReason.ts @@ -131,7 +131,7 @@ describe("INTEGRATION: Reverted without reason", { timeout: 60000 }, () => { method: "panicAssert", failedAssert: (x) => expect(x).to.be.revertedWithoutReason(ethers), failedAssertReason: - "Expected transaction to be reverted without a reason, but it reverted with panic code 0x01 (Assertion error)", + "Expected transaction to be reverted without a reason, but it reverted with panic code 0x1 (Assertion error)", }); }); }); From 5373821e8c600b33d6aae23cc562a55e902d0452 Mon Sep 17 00:00:00 2001 From: ChrisD <18092467+ChristopherDedominici@users.noreply.github.com> Date: Mon, 25 Nov 2024 17:10:17 +0100 Subject: [PATCH 42/61] remove compiled artifacts --- .../test/fixture-projects/.gitignore | 2 +- .../ChangeEtherBalance.dbg.json | 4 - .../ChangeEtherBalance.json | 35 -- .../Events.sol/AnotherContract.dbg.json | 4 - .../contracts/Events.sol/AnotherContract.json | 37 -- .../contracts/Events.sol/Events.dbg.json | 4 - .../contracts/Events.sol/Events.json | 527 ------------------ .../Events.sol/OverrideEventContract.dbg.json | 4 - .../Events.sol/OverrideEventContract.json | 50 -- .../AnotherMatchersContract.dbg.json | 4 - .../Matchers.sol/AnotherMatchersContract.json | 30 - .../contracts/Matchers.sol/Matchers.dbg.json | 4 - .../contracts/Matchers.sol/Matchers.json | 333 ----------- .../contracts/Token.sol/MockToken.dbg.json | 4 - .../contracts/Token.sol/MockToken.json | 183 ------ .../contracts/Token.sol/NotAToken.dbg.json | 4 - .../contracts/Token.sol/NotAToken.json | 10 - .../Token.sol/TokenWithOnlyName.dbg.json | 4 - .../Token.sol/TokenWithOnlyName.json | 170 ------ .../TokenWithoutNameNorSymbol.dbg.json | 4 - .../Token.sol/TokenWithoutNameNorSymbol.json | 162 ------ 21 files changed, 1 insertion(+), 1578 deletions(-) delete mode 100644 v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/ChangeEtherBalance.sol/ChangeEtherBalance.dbg.json delete mode 100644 v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/ChangeEtherBalance.sol/ChangeEtherBalance.json delete mode 100644 v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Events.sol/AnotherContract.dbg.json delete mode 100644 v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Events.sol/AnotherContract.json delete mode 100644 v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Events.sol/Events.dbg.json delete mode 100644 v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Events.sol/Events.json delete mode 100644 v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Events.sol/OverrideEventContract.dbg.json delete mode 100644 v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Events.sol/OverrideEventContract.json delete mode 100644 v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Matchers.sol/AnotherMatchersContract.dbg.json delete mode 100644 v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Matchers.sol/AnotherMatchersContract.json delete mode 100644 v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Matchers.sol/Matchers.dbg.json delete mode 100644 v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Matchers.sol/Matchers.json delete mode 100644 v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Token.sol/MockToken.dbg.json delete mode 100644 v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Token.sol/MockToken.json delete mode 100644 v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Token.sol/NotAToken.dbg.json delete mode 100644 v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Token.sol/NotAToken.json delete mode 100644 v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Token.sol/TokenWithOnlyName.dbg.json delete mode 100644 v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Token.sol/TokenWithOnlyName.json delete mode 100644 v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Token.sol/TokenWithoutNameNorSymbol.dbg.json delete mode 100644 v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Token.sol/TokenWithoutNameNorSymbol.json diff --git a/v-next/hardhat-chai-matchers/test/fixture-projects/.gitignore b/v-next/hardhat-chai-matchers/test/fixture-projects/.gitignore index 126eb0582d..e7f801166c 100644 --- a/v-next/hardhat-chai-matchers/test/fixture-projects/.gitignore +++ b/v-next/hardhat-chai-matchers/test/fixture-projects/.gitignore @@ -1,2 +1,2 @@ -# artifacts/ +artifacts/ cache/ diff --git a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/ChangeEtherBalance.sol/ChangeEtherBalance.dbg.json b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/ChangeEtherBalance.sol/ChangeEtherBalance.dbg.json deleted file mode 100644 index 224dfafc9c..0000000000 --- a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/ChangeEtherBalance.sol/ChangeEtherBalance.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../build-info/16efa488de3a0283218beddfadbd1423.json" -} diff --git a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/ChangeEtherBalance.sol/ChangeEtherBalance.json b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/ChangeEtherBalance.sol/ChangeEtherBalance.json deleted file mode 100644 index b533ba35a4..0000000000 --- a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/ChangeEtherBalance.sol/ChangeEtherBalance.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "ChangeEtherBalance", - "sourceName": "contracts/ChangeEtherBalance.sol", - "abi": [ - { - "inputs": [], - "name": "returnHalf", - "outputs": [], - "stateMutability": "payable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "addr", - "type": "address" - } - ], - "name": "transferTo", - "outputs": [], - "stateMutability": "payable", - "type": "function" - }, - { - "stateMutability": "payable", - "type": "receive" - } - ], - "bytecode": "0x608060405234801561001057600080fd5b50610225806100206000396000f3fe60806040526004361061002d5760003560e01c8063a03fa7e314610039578063b019946e1461005557610034565b3661003457005b600080fd5b610053600480360381019061004e9190610113565b61005f565b005b61005d6100a9565b005b8073ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f193505050501580156100a5573d6000803e3d6000fd5b5050565b3373ffffffffffffffffffffffffffffffffffffffff166108fc6002346100d0919061013c565b9081150290604051600060405180830381858888f193505050501580156100fb573d6000803e3d6000fd5b50565b60008135905061010d816101d8565b92915050565b60006020828403121561012557600080fd5b6000610133848285016100fe565b91505092915050565b60006101478261019f565b91506101528361019f565b925082610162576101616101a9565b5b828204905092915050565b60006101788261017f565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6101e18161016d565b81146101ec57600080fd5b5056fea26469706673582212208e553461507bae731d37afa0d5a2a7dae74de7a6eab682733425a78884ed60b364736f6c63430008040033", - "deployedBytecode": "0x60806040526004361061002d5760003560e01c8063a03fa7e314610039578063b019946e1461005557610034565b3661003457005b600080fd5b610053600480360381019061004e9190610113565b61005f565b005b61005d6100a9565b005b8073ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f193505050501580156100a5573d6000803e3d6000fd5b5050565b3373ffffffffffffffffffffffffffffffffffffffff166108fc6002346100d0919061013c565b9081150290604051600060405180830381858888f193505050501580156100fb573d6000803e3d6000fd5b50565b60008135905061010d816101d8565b92915050565b60006020828403121561012557600080fd5b6000610133848285016100fe565b91505092915050565b60006101478261019f565b91506101528361019f565b925082610162576101616101a9565b5b828204905092915050565b60006101788261017f565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6101e18161016d565b81146101ec57600080fd5b5056fea26469706673582212208e553461507bae731d37afa0d5a2a7dae74de7a6eab682733425a78884ed60b364736f6c63430008040033", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Events.sol/AnotherContract.dbg.json b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Events.sol/AnotherContract.dbg.json deleted file mode 100644 index 224dfafc9c..0000000000 --- a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Events.sol/AnotherContract.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../build-info/16efa488de3a0283218beddfadbd1423.json" -} diff --git a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Events.sol/AnotherContract.json b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Events.sol/AnotherContract.json deleted file mode 100644 index 495cf4c9ed..0000000000 --- a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Events.sol/AnotherContract.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "AnotherContract", - "sourceName": "contracts/Events.sol", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "u", - "type": "uint256" - } - ], - "name": "WithUintArg", - "type": "event" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "u", - "type": "uint256" - } - ], - "name": "emitUint", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - } - ], - "bytecode": "0x608060405234801561001057600080fd5b50610130806100206000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c80639194024414602d575b600080fd5b60436004803603810190603f91906090565b6045565b005b7f97535d4b4270d3f1a499c85ae918ba6798cbdcc83a26529331a25dcd2194cfce816040516072919060c3565b60405180910390a150565b600081359050608a8160e6565b92915050565b60006020828403121560a157600080fd5b600060ad84828501607d565b91505092915050565b60bd8160dc565b82525050565b600060208201905060d6600083018460b6565b92915050565b6000819050919050565b60ed8160dc565b811460f757600080fd5b5056fea264697066735822122083cb9b1ec00d6d1ec78d28771d3bf4778c5ba00b0532a2448d42cbab653355a064736f6c63430008040033", - "deployedBytecode": "0x6080604052348015600f57600080fd5b506004361060285760003560e01c80639194024414602d575b600080fd5b60436004803603810190603f91906090565b6045565b005b7f97535d4b4270d3f1a499c85ae918ba6798cbdcc83a26529331a25dcd2194cfce816040516072919060c3565b60405180910390a150565b600081359050608a8160e6565b92915050565b60006020828403121560a157600080fd5b600060ad84828501607d565b91505092915050565b60bd8160dc565b82525050565b600060208201905060d6600083018460b6565b92915050565b6000819050919050565b60ed8160dc565b811460f757600080fd5b5056fea264697066735822122083cb9b1ec00d6d1ec78d28771d3bf4778c5ba00b0532a2448d42cbab653355a064736f6c63430008040033", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Events.sol/Events.dbg.json b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Events.sol/Events.dbg.json deleted file mode 100644 index 224dfafc9c..0000000000 --- a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Events.sol/Events.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../build-info/16efa488de3a0283218beddfadbd1423.json" -} diff --git a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Events.sol/Events.json b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Events.sol/Events.json deleted file mode 100644 index 965dcb8d99..0000000000 --- a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Events.sol/Events.json +++ /dev/null @@ -1,527 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "Events", - "sourceName": "contracts/Events.sol", - "abi": [ - { - "inputs": [ - { - "internalType": "contract AnotherContract", - "name": "c", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "a", - "type": "address" - } - ], - "name": "WithAddressArg", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "bytes32", - "name": "b", - "type": "bytes32" - } - ], - "name": "WithBytes32Arg", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "bytes32[2]", - "name": "a", - "type": "bytes32[2]" - } - ], - "name": "WithBytes32Array", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "bytes", - "name": "b", - "type": "bytes" - } - ], - "name": "WithBytesArg", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "b", - "type": "bytes32" - } - ], - "name": "WithIndexedBytes32Arg", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes", - "name": "b", - "type": "bytes" - } - ], - "name": "WithIndexedBytesArg", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "string", - "name": "s", - "type": "string" - } - ], - "name": "WithIndexedStringArg", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "int256", - "name": "i", - "type": "int256" - } - ], - "name": "WithIntArg", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "string", - "name": "s", - "type": "string" - } - ], - "name": "WithStringArg", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "components": [ - { - "internalType": "uint256", - "name": "u", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "v", - "type": "uint256" - } - ], - "indexed": false, - "internalType": "struct Events.Struct", - "name": "s", - "type": "tuple" - } - ], - "name": "WithStructArg", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "string", - "name": "s", - "type": "string" - }, - { - "indexed": false, - "internalType": "string", - "name": "t", - "type": "string" - } - ], - "name": "WithTwoStringArgs", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "u", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "v", - "type": "uint256" - } - ], - "name": "WithTwoUintArgs", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "u", - "type": "uint256" - } - ], - "name": "WithUintArg", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256[2]", - "name": "a", - "type": "uint256[2]" - } - ], - "name": "WithUintArray", - "type": "event" - }, - { - "anonymous": false, - "inputs": [], - "name": "WithoutArgs", - "type": "event" - }, - { - "inputs": [], - "name": "doNotEmit", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "a", - "type": "address" - } - ], - "name": "emitAddress", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes", - "name": "b", - "type": "bytes" - } - ], - "name": "emitBytes", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "b", - "type": "bytes32" - } - ], - "name": "emitBytes32", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "b", - "type": "bytes32" - }, - { - "internalType": "bytes32", - "name": "c", - "type": "bytes32" - } - ], - "name": "emitBytes32Array", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes", - "name": "b", - "type": "bytes" - } - ], - "name": "emitIndexedBytes", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "b", - "type": "bytes32" - } - ], - "name": "emitIndexedBytes32", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "string", - "name": "s", - "type": "string" - } - ], - "name": "emitIndexedString", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "int256", - "name": "i", - "type": "int256" - } - ], - "name": "emitInt", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "u", - "type": "uint256" - } - ], - "name": "emitNestedUintFromAnotherContract", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "u", - "type": "uint256" - } - ], - "name": "emitNestedUintFromSameContract", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "string", - "name": "s", - "type": "string" - } - ], - "name": "emitString", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "u", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "v", - "type": "uint256" - } - ], - "name": "emitStruct", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "u", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "v", - "type": "uint256" - } - ], - "name": "emitTwoUints", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "u", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "v", - "type": "uint256" - }, - { - "internalType": "string", - "name": "s", - "type": "string" - }, - { - "internalType": "string", - "name": "t", - "type": "string" - } - ], - "name": "emitTwoUintsAndTwoStrings", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "u", - "type": "uint256" - } - ], - "name": "emitUint", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "u", - "type": "uint256" - }, - { - "internalType": "string", - "name": "s", - "type": "string" - } - ], - "name": "emitUintAndString", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "u", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "v", - "type": "uint256" - } - ], - "name": "emitUintArray", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "u", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "v", - "type": "uint256" - } - ], - "name": "emitUintTwice", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "emitWithoutArgs", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - } - ], - "bytecode": "0x60806040523480156200001157600080fd5b506040516200140d3803806200140d833981810160405281019062000037919062000095565b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505062000123565b6000815190506200008f8162000109565b92915050565b600060208284031215620000a857600080fd5b6000620000b8848285016200007e565b91505092915050565b6000620000ce82620000e9565b9050919050565b6000620000e282620000c1565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6200011481620000d5565b81146200012057600080fd5b50565b6112da80620001336000396000f3fe608060405234801561001057600080fd5b506004361061012c5760003560e01c80638a618191116100ad578063c76f063511610071578063c76f0635146102c3578063cc07e605146102df578063d3931e57146102fb578063db6cdf6814610317578063ec5c3ede146103215761012c565b80638a6181911461024957806390b37ea214610265578063919402441461026f5780639f31a2231461028b578063c0cd80e6146102a75761012c565b806333311ef3116100f457806333311ef3146101bd57806338393646146101d9578063443690a0146101f5578063532b9cce14610211578063813a8cf51461022d5761012c565b8063048858e5146101315780630c0c941a1461014d57806317aba537146101695780632536f127146101855780632785f8d6146101a1575b600080fd5b61014b600480360381019061014691906109f0565b61033d565b005b61016760048036038101906101629190610b7d565b61036d565b005b610183600480360381019061017e9190610b7d565b6103df565b005b61019f600480360381019061019a9190610abf565b61042e565b005b6101bb60048036038101906101b69190610b29565b610468565b005b6101d760048036038101906101d291906109f0565b6104da565b005b6101f360048036038101906101ee9190610b7d565b610514565b005b61020f600480360381019061020a9190610abf565b610551565b005b61022b60048036038101906102269190610bb9565b610596565b005b61024760048036038101906102429190610b00565b61060e565b005b610263600480360381019061025e9190610a96565b61061a565b005b61026d610654565b005b61028960048036038101906102849190610b00565b610682565b005b6102a560048036038101906102a09190610b7d565b6106bc565b005b6102c160048036038101906102bc9190610a19565b61070b565b005b6102dd60048036038101906102d89190610a55565b61075a565b005b6102f960048036038101906102f49190610a55565b610794565b005b61031560048036038101906103109190610b00565b6107d9565b005b61031f610867565b005b61033b600480360381019061033691906109c7565b610869565b005b807fb421ad092cfce88844bfbfaa9654e824ba0ee5b6b0a220f822406b62c05364c060405160405180910390a250565b7f97535d4b4270d3f1a499c85ae918ba6798cbdcc83a26529331a25dcd2194cfce8260405161039c9190610fd2565b60405180910390a17f97535d4b4270d3f1a499c85ae918ba6798cbdcc83a26529331a25dcd2194cfce816040516103d39190610fd2565b60405180910390a15050565b7f73e687a2685d698f7acf934b4929a29ae783a4bcb640d71c5d6994d74e2380ca6040518060400160405280848152602001838152506040516104229190610eeb565b60405180910390a15050565b7f9b7ddcbde8dac280e036f87acafec72f9eee31a640c08087e8439139c7e5b52a8160405161045d9190610f5e565b60405180910390a150565b7f9b7ddcbde8dac280e036f87acafec72f9eee31a640c08087e8439139c7e5b52a816040516104979190610f5e565b60405180910390a17f97535d4b4270d3f1a499c85ae918ba6798cbdcc83a26529331a25dcd2194cfce826040516104ce9190610fd2565b60405180910390a15050565b7f425517d2678bbca3c0d9d8d9fdbec34c81194e7935ed48a6a19f97db93bcef6a816040516105099190610f06565b60405180910390a150565b7f8b268bb46a33a55bece084a8b6858719c9f2985c860fa06c155a341df0b73c0e8282604051610545929190610fed565b60405180910390a15050565b8060405161055f9190610e9e565b60405180910390207fd9ca28363e2d8739e0e9c4fea1d2df98d1bd7d9d915d00e5fccbf78c0fddcdb060405160405180910390a250565b7f8b268bb46a33a55bece084a8b6858719c9f2985c860fa06c155a341df0b73c0e84846040516105c7929190610fed565b60405180910390a17f1f1a2c748505fcd8f16a719fa88d517b1b41111c4f5e07bb28311cdc4d1515388282604051610600929190610f80565b60405180910390a150505050565b61061781610682565b50565b7f39feab747bb4f579008aea963d7ebac85ad410bb83ee663a42af01464654e93f816040516106499190610f43565b60405180910390a150565b7f917b7bf7ab24d61500cb699921a3a1cc22b8833da6484fea20f262b2610604af60405160405180910390a1565b7f97535d4b4270d3f1a499c85ae918ba6798cbdcc83a26529331a25dcd2194cfce816040516106b19190610fd2565b60405180910390a150565b7fd59ab87bf64b9d737998f3dc70c649d16b135f085029c1666ca0634beb75a7736040518060400160405280848152602001838152506040516106ff9190610fb7565b60405180910390a15050565b7f15100859f3ffe92910dc3f11ed3db4e9cf32ff657c05066e44be4e69b2b488bc60405180604001604052808481526020018381525060405161074e9190610ed0565b60405180910390a15050565b7f433470edcdd53b50238be4d8e048e2baa269af5be2a4e29515c138883c745aa8816040516107899190610f21565b60405180910390a150565b806040516107a29190610e87565b60405180910390207f160e4655df40987951accf7c731d5c504f77d20c139bd73032821b91a426dd9860405160405180910390a250565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166391940244826040518263ffffffff1660e01b81526004016108329190610fd2565b600060405180830381600087803b15801561084c57600080fd5b505af1158015610860573d6000803e3d6000fd5b5050505050565b565b7f336bcd960d2e5a52cef6094ba33727f309dc2c675eebefc6d9b6b6d79abac877816040516108989190610eb5565b60405180910390a150565b60006108b66108b18461103b565b611016565b9050828152602081018484840111156108ce57600080fd5b6108d9848285611195565b509392505050565b60006108f46108ef8461106c565b611016565b90508281526020810184848401111561090c57600080fd5b610917848285611195565b509392505050565b60008135905061092e81611248565b92915050565b6000813590506109438161125f565b92915050565b600082601f83011261095a57600080fd5b813561096a8482602086016108a3565b91505092915050565b60008135905061098281611276565b92915050565b600082601f83011261099957600080fd5b81356109a98482602086016108e1565b91505092915050565b6000813590506109c18161128d565b92915050565b6000602082840312156109d957600080fd5b60006109e78482850161091f565b91505092915050565b600060208284031215610a0257600080fd5b6000610a1084828501610934565b91505092915050565b60008060408385031215610a2c57600080fd5b6000610a3a85828601610934565b9250506020610a4b85828601610934565b9150509250929050565b600060208284031215610a6757600080fd5b600082013567ffffffffffffffff811115610a8157600080fd5b610a8d84828501610949565b91505092915050565b600060208284031215610aa857600080fd5b6000610ab684828501610973565b91505092915050565b600060208284031215610ad157600080fd5b600082013567ffffffffffffffff811115610aeb57600080fd5b610af784828501610988565b91505092915050565b600060208284031215610b1257600080fd5b6000610b20848285016109b2565b91505092915050565b60008060408385031215610b3c57600080fd5b6000610b4a858286016109b2565b925050602083013567ffffffffffffffff811115610b6757600080fd5b610b7385828601610988565b9150509250929050565b60008060408385031215610b9057600080fd5b6000610b9e858286016109b2565b9250506020610baf858286016109b2565b9150509250929050565b60008060008060808587031215610bcf57600080fd5b6000610bdd878288016109b2565b9450506020610bee878288016109b2565b935050604085013567ffffffffffffffff811115610c0b57600080fd5b610c1787828801610988565b925050606085013567ffffffffffffffff811115610c3457600080fd5b610c4087828801610988565b91505092959194509250565b6000610c588383610d39565b60208301905092915050565b6000610c708383610e69565b60208301905092915050565b610c8581611145565b82525050565b610c94816110b1565b610c9e81846110f7565b9250610ca98261109d565b8060005b83811015610cda578151610cc18782610c4c565b9650610ccc836110dd565b925050600181019050610cad565b505050505050565b610ceb816110bc565b610cf58184611102565b9250610d00826110a7565b8060005b83811015610d31578151610d188782610c64565b9650610d23836110ea565b925050600181019050610d04565b505050505050565b610d4281611157565b82525050565b610d5181611157565b82525050565b6000610d62826110c7565b610d6c818561110d565b9350610d7c8185602086016111a4565b610d8581611237565b840191505092915050565b6000610d9b826110c7565b610da5818561111e565b9350610db58185602086016111a4565b80840191505092915050565b610dca81611161565b82525050565b6000610ddb826110d2565b610de58185611129565b9350610df58185602086016111a4565b610dfe81611237565b840191505092915050565b6000610e14826110d2565b610e1e818561113a565b9350610e2e8185602086016111a4565b80840191505092915050565b604082016000820151610e506000850182610e69565b506020820151610e636020850182610e69565b50505050565b610e728161118b565b82525050565b610e818161118b565b82525050565b6000610e938284610d90565b915081905092915050565b6000610eaa8284610e09565b915081905092915050565b6000602082019050610eca6000830184610c7c565b92915050565b6000604082019050610ee56000830184610c8b565b92915050565b6000604082019050610f006000830184610ce2565b92915050565b6000602082019050610f1b6000830184610d48565b92915050565b60006020820190508181036000830152610f3b8184610d57565b905092915050565b6000602082019050610f586000830184610dc1565b92915050565b60006020820190508181036000830152610f788184610dd0565b905092915050565b60006040820190508181036000830152610f9a8185610dd0565b90508181036020830152610fae8184610dd0565b90509392505050565b6000604082019050610fcc6000830184610e3a565b92915050565b6000602082019050610fe76000830184610e78565b92915050565b60006040820190506110026000830185610e78565b61100f6020830184610e78565b9392505050565b6000611020611031565b905061102c82826111d7565b919050565b6000604051905090565b600067ffffffffffffffff82111561105657611055611208565b5b61105f82611237565b9050602081019050919050565b600067ffffffffffffffff82111561108757611086611208565b5b61109082611237565b9050602081019050919050565b6000819050919050565b6000819050919050565b600060029050919050565b600060029050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b600081905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b60006111508261116b565b9050919050565b6000819050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b838110156111c25780820151818401526020810190506111a7565b838111156111d1576000848401525b50505050565b6111e082611237565b810181811067ffffffffffffffff821117156111ff576111fe611208565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b61125181611145565b811461125c57600080fd5b50565b61126881611157565b811461127357600080fd5b50565b61127f81611161565b811461128a57600080fd5b50565b6112968161118b565b81146112a157600080fd5b5056fea264697066735822122073a91a740c0de3883c5213c5981d98d2396a8b60b3cf2fb364d7e4cc826a841e64736f6c63430008040033", - "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061012c5760003560e01c80638a618191116100ad578063c76f063511610071578063c76f0635146102c3578063cc07e605146102df578063d3931e57146102fb578063db6cdf6814610317578063ec5c3ede146103215761012c565b80638a6181911461024957806390b37ea214610265578063919402441461026f5780639f31a2231461028b578063c0cd80e6146102a75761012c565b806333311ef3116100f457806333311ef3146101bd57806338393646146101d9578063443690a0146101f5578063532b9cce14610211578063813a8cf51461022d5761012c565b8063048858e5146101315780630c0c941a1461014d57806317aba537146101695780632536f127146101855780632785f8d6146101a1575b600080fd5b61014b600480360381019061014691906109f0565b61033d565b005b61016760048036038101906101629190610b7d565b61036d565b005b610183600480360381019061017e9190610b7d565b6103df565b005b61019f600480360381019061019a9190610abf565b61042e565b005b6101bb60048036038101906101b69190610b29565b610468565b005b6101d760048036038101906101d291906109f0565b6104da565b005b6101f360048036038101906101ee9190610b7d565b610514565b005b61020f600480360381019061020a9190610abf565b610551565b005b61022b60048036038101906102269190610bb9565b610596565b005b61024760048036038101906102429190610b00565b61060e565b005b610263600480360381019061025e9190610a96565b61061a565b005b61026d610654565b005b61028960048036038101906102849190610b00565b610682565b005b6102a560048036038101906102a09190610b7d565b6106bc565b005b6102c160048036038101906102bc9190610a19565b61070b565b005b6102dd60048036038101906102d89190610a55565b61075a565b005b6102f960048036038101906102f49190610a55565b610794565b005b61031560048036038101906103109190610b00565b6107d9565b005b61031f610867565b005b61033b600480360381019061033691906109c7565b610869565b005b807fb421ad092cfce88844bfbfaa9654e824ba0ee5b6b0a220f822406b62c05364c060405160405180910390a250565b7f97535d4b4270d3f1a499c85ae918ba6798cbdcc83a26529331a25dcd2194cfce8260405161039c9190610fd2565b60405180910390a17f97535d4b4270d3f1a499c85ae918ba6798cbdcc83a26529331a25dcd2194cfce816040516103d39190610fd2565b60405180910390a15050565b7f73e687a2685d698f7acf934b4929a29ae783a4bcb640d71c5d6994d74e2380ca6040518060400160405280848152602001838152506040516104229190610eeb565b60405180910390a15050565b7f9b7ddcbde8dac280e036f87acafec72f9eee31a640c08087e8439139c7e5b52a8160405161045d9190610f5e565b60405180910390a150565b7f9b7ddcbde8dac280e036f87acafec72f9eee31a640c08087e8439139c7e5b52a816040516104979190610f5e565b60405180910390a17f97535d4b4270d3f1a499c85ae918ba6798cbdcc83a26529331a25dcd2194cfce826040516104ce9190610fd2565b60405180910390a15050565b7f425517d2678bbca3c0d9d8d9fdbec34c81194e7935ed48a6a19f97db93bcef6a816040516105099190610f06565b60405180910390a150565b7f8b268bb46a33a55bece084a8b6858719c9f2985c860fa06c155a341df0b73c0e8282604051610545929190610fed565b60405180910390a15050565b8060405161055f9190610e9e565b60405180910390207fd9ca28363e2d8739e0e9c4fea1d2df98d1bd7d9d915d00e5fccbf78c0fddcdb060405160405180910390a250565b7f8b268bb46a33a55bece084a8b6858719c9f2985c860fa06c155a341df0b73c0e84846040516105c7929190610fed565b60405180910390a17f1f1a2c748505fcd8f16a719fa88d517b1b41111c4f5e07bb28311cdc4d1515388282604051610600929190610f80565b60405180910390a150505050565b61061781610682565b50565b7f39feab747bb4f579008aea963d7ebac85ad410bb83ee663a42af01464654e93f816040516106499190610f43565b60405180910390a150565b7f917b7bf7ab24d61500cb699921a3a1cc22b8833da6484fea20f262b2610604af60405160405180910390a1565b7f97535d4b4270d3f1a499c85ae918ba6798cbdcc83a26529331a25dcd2194cfce816040516106b19190610fd2565b60405180910390a150565b7fd59ab87bf64b9d737998f3dc70c649d16b135f085029c1666ca0634beb75a7736040518060400160405280848152602001838152506040516106ff9190610fb7565b60405180910390a15050565b7f15100859f3ffe92910dc3f11ed3db4e9cf32ff657c05066e44be4e69b2b488bc60405180604001604052808481526020018381525060405161074e9190610ed0565b60405180910390a15050565b7f433470edcdd53b50238be4d8e048e2baa269af5be2a4e29515c138883c745aa8816040516107899190610f21565b60405180910390a150565b806040516107a29190610e87565b60405180910390207f160e4655df40987951accf7c731d5c504f77d20c139bd73032821b91a426dd9860405160405180910390a250565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166391940244826040518263ffffffff1660e01b81526004016108329190610fd2565b600060405180830381600087803b15801561084c57600080fd5b505af1158015610860573d6000803e3d6000fd5b5050505050565b565b7f336bcd960d2e5a52cef6094ba33727f309dc2c675eebefc6d9b6b6d79abac877816040516108989190610eb5565b60405180910390a150565b60006108b66108b18461103b565b611016565b9050828152602081018484840111156108ce57600080fd5b6108d9848285611195565b509392505050565b60006108f46108ef8461106c565b611016565b90508281526020810184848401111561090c57600080fd5b610917848285611195565b509392505050565b60008135905061092e81611248565b92915050565b6000813590506109438161125f565b92915050565b600082601f83011261095a57600080fd5b813561096a8482602086016108a3565b91505092915050565b60008135905061098281611276565b92915050565b600082601f83011261099957600080fd5b81356109a98482602086016108e1565b91505092915050565b6000813590506109c18161128d565b92915050565b6000602082840312156109d957600080fd5b60006109e78482850161091f565b91505092915050565b600060208284031215610a0257600080fd5b6000610a1084828501610934565b91505092915050565b60008060408385031215610a2c57600080fd5b6000610a3a85828601610934565b9250506020610a4b85828601610934565b9150509250929050565b600060208284031215610a6757600080fd5b600082013567ffffffffffffffff811115610a8157600080fd5b610a8d84828501610949565b91505092915050565b600060208284031215610aa857600080fd5b6000610ab684828501610973565b91505092915050565b600060208284031215610ad157600080fd5b600082013567ffffffffffffffff811115610aeb57600080fd5b610af784828501610988565b91505092915050565b600060208284031215610b1257600080fd5b6000610b20848285016109b2565b91505092915050565b60008060408385031215610b3c57600080fd5b6000610b4a858286016109b2565b925050602083013567ffffffffffffffff811115610b6757600080fd5b610b7385828601610988565b9150509250929050565b60008060408385031215610b9057600080fd5b6000610b9e858286016109b2565b9250506020610baf858286016109b2565b9150509250929050565b60008060008060808587031215610bcf57600080fd5b6000610bdd878288016109b2565b9450506020610bee878288016109b2565b935050604085013567ffffffffffffffff811115610c0b57600080fd5b610c1787828801610988565b925050606085013567ffffffffffffffff811115610c3457600080fd5b610c4087828801610988565b91505092959194509250565b6000610c588383610d39565b60208301905092915050565b6000610c708383610e69565b60208301905092915050565b610c8581611145565b82525050565b610c94816110b1565b610c9e81846110f7565b9250610ca98261109d565b8060005b83811015610cda578151610cc18782610c4c565b9650610ccc836110dd565b925050600181019050610cad565b505050505050565b610ceb816110bc565b610cf58184611102565b9250610d00826110a7565b8060005b83811015610d31578151610d188782610c64565b9650610d23836110ea565b925050600181019050610d04565b505050505050565b610d4281611157565b82525050565b610d5181611157565b82525050565b6000610d62826110c7565b610d6c818561110d565b9350610d7c8185602086016111a4565b610d8581611237565b840191505092915050565b6000610d9b826110c7565b610da5818561111e565b9350610db58185602086016111a4565b80840191505092915050565b610dca81611161565b82525050565b6000610ddb826110d2565b610de58185611129565b9350610df58185602086016111a4565b610dfe81611237565b840191505092915050565b6000610e14826110d2565b610e1e818561113a565b9350610e2e8185602086016111a4565b80840191505092915050565b604082016000820151610e506000850182610e69565b506020820151610e636020850182610e69565b50505050565b610e728161118b565b82525050565b610e818161118b565b82525050565b6000610e938284610d90565b915081905092915050565b6000610eaa8284610e09565b915081905092915050565b6000602082019050610eca6000830184610c7c565b92915050565b6000604082019050610ee56000830184610c8b565b92915050565b6000604082019050610f006000830184610ce2565b92915050565b6000602082019050610f1b6000830184610d48565b92915050565b60006020820190508181036000830152610f3b8184610d57565b905092915050565b6000602082019050610f586000830184610dc1565b92915050565b60006020820190508181036000830152610f788184610dd0565b905092915050565b60006040820190508181036000830152610f9a8185610dd0565b90508181036020830152610fae8184610dd0565b90509392505050565b6000604082019050610fcc6000830184610e3a565b92915050565b6000602082019050610fe76000830184610e78565b92915050565b60006040820190506110026000830185610e78565b61100f6020830184610e78565b9392505050565b6000611020611031565b905061102c82826111d7565b919050565b6000604051905090565b600067ffffffffffffffff82111561105657611055611208565b5b61105f82611237565b9050602081019050919050565b600067ffffffffffffffff82111561108757611086611208565b5b61109082611237565b9050602081019050919050565b6000819050919050565b6000819050919050565b600060029050919050565b600060029050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b600081905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b60006111508261116b565b9050919050565b6000819050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b838110156111c25780820151818401526020810190506111a7565b838111156111d1576000848401525b50505050565b6111e082611237565b810181811067ffffffffffffffff821117156111ff576111fe611208565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b61125181611145565b811461125c57600080fd5b50565b61126881611157565b811461127357600080fd5b50565b61127f81611161565b811461128a57600080fd5b50565b6112968161118b565b81146112a157600080fd5b5056fea264697066735822122073a91a740c0de3883c5213c5981d98d2396a8b60b3cf2fb364d7e4cc826a841e64736f6c63430008040033", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Events.sol/OverrideEventContract.dbg.json b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Events.sol/OverrideEventContract.dbg.json deleted file mode 100644 index 224dfafc9c..0000000000 --- a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Events.sol/OverrideEventContract.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../build-info/16efa488de3a0283218beddfadbd1423.json" -} diff --git a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Events.sol/OverrideEventContract.json b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Events.sol/OverrideEventContract.json deleted file mode 100644 index 8400a4909c..0000000000 --- a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Events.sol/OverrideEventContract.json +++ /dev/null @@ -1,50 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "OverrideEventContract", - "sourceName": "contracts/Events.sol", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "u", - "type": "uint256" - } - ], - "name": "simpleEvent", - "type": "event" - }, - { - "anonymous": false, - "inputs": [], - "name": "simpleEvent", - "type": "event" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "u", - "type": "uint256" - } - ], - "name": "emitSimpleEventWithUintArg", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "emitSimpleEventWithoutArg", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - } - ], - "bytecode": "0x608060405234801561001057600080fd5b50610188806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80632ce136d91461003b5780638e1c72bb14610057575b600080fd5b610055600480360381019061005091906100de565b610061565b005b61005f61009b565b005b7fb2dc4835200bc382210c109031e47d05b37c9244807898f5910a43f961e6719a816040516100909190610116565b60405180910390a150565b7f8922a6ca0f59f137d8e739a3dca968247fca890d147a5006a57da5bc782f6ae960405160405180910390a1565b6000813590506100d88161013b565b92915050565b6000602082840312156100f057600080fd5b60006100fe848285016100c9565b91505092915050565b61011081610131565b82525050565b600060208201905061012b6000830184610107565b92915050565b6000819050919050565b61014481610131565b811461014f57600080fd5b5056fea264697066735822122016232a4f6ea73657adfebd142c8d15f5593e419f600cb1983aba440defd27a5064736f6c63430008040033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100365760003560e01c80632ce136d91461003b5780638e1c72bb14610057575b600080fd5b610055600480360381019061005091906100de565b610061565b005b61005f61009b565b005b7fb2dc4835200bc382210c109031e47d05b37c9244807898f5910a43f961e6719a816040516100909190610116565b60405180910390a150565b7f8922a6ca0f59f137d8e739a3dca968247fca890d147a5006a57da5bc782f6ae960405160405180910390a1565b6000813590506100d88161013b565b92915050565b6000602082840312156100f057600080fd5b60006100fe848285016100c9565b91505092915050565b61011081610131565b82525050565b600060208201905061012b6000830184610107565b92915050565b6000819050919050565b61014481610131565b811461014f57600080fd5b5056fea264697066735822122016232a4f6ea73657adfebd142c8d15f5593e419f600cb1983aba440defd27a5064736f6c63430008040033", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Matchers.sol/AnotherMatchersContract.dbg.json b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Matchers.sol/AnotherMatchersContract.dbg.json deleted file mode 100644 index 224dfafc9c..0000000000 --- a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Matchers.sol/AnotherMatchersContract.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../build-info/16efa488de3a0283218beddfadbd1423.json" -} diff --git a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Matchers.sol/AnotherMatchersContract.json b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Matchers.sol/AnotherMatchersContract.json deleted file mode 100644 index 6774821378..0000000000 --- a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Matchers.sol/AnotherMatchersContract.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "AnotherMatchersContract", - "sourceName": "contracts/Matchers.sol", - "abi": [ - { - "inputs": [], - "name": "YetAnotherCustomError", - "type": "error" - }, - { - "inputs": [], - "name": "revertWithYetAnotherCustomError", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "revertWithYetAnotherCustomErrorView", - "outputs": [], - "stateMutability": "pure", - "type": "function" - } - ], - "bytecode": "0x608060405234801561001057600080fd5b50610182806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c806340d83b241461003b5780634b2bd7e914610045575b600080fd5b61004361004f565b005b61004d610081565b005b6040517fff05e87500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080815480929190610093906100d4565b91905055506040517fff05e87500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000819050919050565b60006100df826100ca565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156101125761011161011d565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea2646970667358221220188b4117d3c1f35f2fcbff7fbf51ee28f08c8abd18e3796ccd1d2fbc8c862e3f64736f6c63430008040033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100365760003560e01c806340d83b241461003b5780634b2bd7e914610045575b600080fd5b61004361004f565b005b61004d610081565b005b6040517fff05e87500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080815480929190610093906100d4565b91905055506040517fff05e87500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000819050919050565b60006100df826100ca565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156101125761011161011d565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea2646970667358221220188b4117d3c1f35f2fcbff7fbf51ee28f08c8abd18e3796ccd1d2fbc8c862e3f64736f6c63430008040033", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Matchers.sol/Matchers.dbg.json b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Matchers.sol/Matchers.dbg.json deleted file mode 100644 index 224dfafc9c..0000000000 --- a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Matchers.sol/Matchers.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../build-info/16efa488de3a0283218beddfadbd1423.json" -} diff --git a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Matchers.sol/Matchers.json b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Matchers.sol/Matchers.json deleted file mode 100644 index 5a4f85691d..0000000000 --- a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Matchers.sol/Matchers.json +++ /dev/null @@ -1,333 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "Matchers", - "sourceName": "contracts/Matchers.sol", - "abi": [ - { - "inputs": [], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "inputs": [], - "name": "AnotherCustomError", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "int256", - "name": "", - "type": "int256" - } - ], - "name": "CustomErrorWithInt", - "type": "error" - }, - { - "inputs": [ - { - "components": [ - { - "internalType": "uint256", - "name": "a", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "b", - "type": "uint256" - } - ], - "internalType": "struct Matchers.Pair", - "name": "", - "type": "tuple" - } - ], - "name": "CustomErrorWithPair", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "nameToForceEthersToUseAnArrayLikeWithNamedProperties", - "type": "uint256" - } - ], - "name": "CustomErrorWithUint", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - }, - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "name": "CustomErrorWithUintAndString", - "type": "error" - }, - { - "inputs": [], - "name": "SomeCustomError", - "type": "error" - }, - { - "anonymous": false, - "inputs": [], - "name": "SomeEvent", - "type": "event" - }, - { - "inputs": [], - "name": "panicAssert", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "panicAssertView", - "outputs": [], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [], - "name": "revertWithAnotherContractCustomError", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "revertWithAnotherContractCustomErrorView", - "outputs": [], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "revertWithAnotherCustomError", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "revertWithAnotherCustomErrorView", - "outputs": [], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "int256", - "name": "i", - "type": "int256" - } - ], - "name": "revertWithCustomErrorWithInt", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "int256", - "name": "i", - "type": "int256" - } - ], - "name": "revertWithCustomErrorWithIntView", - "outputs": [], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "a", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "b", - "type": "uint256" - } - ], - "name": "revertWithCustomErrorWithPair", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "a", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "b", - "type": "uint256" - } - ], - "name": "revertWithCustomErrorWithPairView", - "outputs": [], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "n", - "type": "uint256" - } - ], - "name": "revertWithCustomErrorWithUint", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "n", - "type": "uint256" - }, - { - "internalType": "string", - "name": "s", - "type": "string" - } - ], - "name": "revertWithCustomErrorWithUintAndString", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "n", - "type": "uint256" - }, - { - "internalType": "string", - "name": "s", - "type": "string" - } - ], - "name": "revertWithCustomErrorWithUintAndStringView", - "outputs": [], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "n", - "type": "uint256" - } - ], - "name": "revertWithCustomErrorWithUintView", - "outputs": [], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [], - "name": "revertWithSomeCustomError", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "revertWithSomeCustomErrorView", - "outputs": [], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "string", - "name": "reason", - "type": "string" - } - ], - "name": "revertsWith", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "string", - "name": "reason", - "type": "string" - } - ], - "name": "revertsWithView", - "outputs": [], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [], - "name": "revertsWithoutReason", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "revertsWithoutReasonView", - "outputs": [], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [], - "name": "succeeds", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "succeedsView", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - } - ], - "bytecode": "0x608060405234801561001057600080fd5b5060405161001d9061007f565b604051809103906000f080158015610039573d6000803e3d6000fd5b50600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061008c565b6101a280610e8a83390190565b610def8061009b6000396000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c806373d2ea85116100b8578063aac014e01161007c578063aac014e01461028b578063b6bbe06114610295578063bad92aa91461029f578063e0a03812146102a9578063fe276a34146102c5578063ffb4746b146102e157610142565b806373d2ea851461022357806374afd4521461023f578063772f243a146102495780637c3cb0af146102535780638f9330301461026f57610142565b80634b5bbf6a1161010a5780634b5bbf6a146101c157806358a1d1ed146101cb5780635b94e31e146101d5578063622051f1146101df5780636f1fdc31146101e95780636fc588d21461020557610142565b80631b4f3f3d146101475780631f542cf3146101515780633ba4178b1461016d578063467e3d371461018957806347c56769146101a5575b600080fd5b61014f6102eb565b005b61016b60048036038101906101669190610a66565b61030f565b005b61018760048036038101906101829190610a12565b610360565b005b6101a3600480360381019061019e91906109a8565b61039f565b005b6101bf60048036038101906101ba919061097f565b6103e7565b005b6101c9610424565b005b6101d361046d565b005b6101dd61047a565b005b6101e76104b1565b005b61020360048036038101906101fe91906109a8565b610533565b005b61020d610592565b60405161021a9190610b8f565b60405180910390f35b61023d600480360381019061023891906109e9565b61059b565b005b6102476105ef565b005b610251610608565b005b61026d600480360381019061026891906109e9565b6106a3565b005b6102896004803603810190610284919061097f565b6106e0565b005b610293610734565b005b61029d610766565b005b6102a76107b4565b005b6102c360048036038101906102be9190610a66565b6107fd565b005b6102df60048036038101906102da9190610a12565b610865565b005b6102e96108bb565b005b6000808154809291906102fd90610cd3565b9190505550600061030d57600080fd5b565b6040518060400160405280838152602001828152506040517fdecab0e70000000000000000000000000000000000000000000000000000000081526004016103579190610b74565b60405180910390fd5b81816040517fa92ee8e3000000000000000000000000000000000000000000000000000000008152600401610396929190610baa565b60405180910390fd5b600081906103e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103da9190610b52565b60405180910390fd5b5050565b806040517fcdd7a0cc00000000000000000000000000000000000000000000000000000000815260040161041b9190610b37565b60405180910390fd5b60008081548092919061043690610cd3565b91905055506040517fd2c097a600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061047857600080fd5b565b60006104af577f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340d83b246040518163ffffffff1660e01b815260040160006040518083038186803b15801561051957600080fd5b505afa15801561052d573d6000803e3d6000fd5b50505050565b60008081548092919061054590610cd3565b91905055506000819061058e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105859190610b52565b60405180910390fd5b5050565b60008054905090565b6000808154809291906105ad90610cd3565b9190505550806040517f01f4d5d20000000000000000000000000000000000000000000000000000000081526004016105e69190610b8f565b60405180910390fd5b60008081548092919061060190610cd3565b9190505550565b60008081548092919061061a90610cd3565b9190505550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634b2bd7e96040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561068957600080fd5b505af115801561069d573d6000803e3d6000fd5b50505050565b806040517f01f4d5d20000000000000000000000000000000000000000000000000000000081526004016106d79190610b8f565b60405180910390fd5b6000808154809291906106f290610cd3565b9190505550806040517fcdd7a0cc00000000000000000000000000000000000000000000000000000000815260040161072b9190610b37565b60405180910390fd5b6040517fd2c097a600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008081548092919061077890610cd3565b919050555060006107b2577f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b565b6000808154809291906107c690610cd3565b91905055506040517f0bd3d39c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008081548092919061080f90610cd3565b91905055506040518060400160405280838152602001828152506040517fdecab0e700000000000000000000000000000000000000000000000000000000815260040161085c9190610b74565b60405180910390fd5b60008081548092919061087790610cd3565b919050555081816040517fa92ee8e30000000000000000000000000000000000000000000000000000000081526004016108b2929190610baa565b60405180910390fd5b6040517f0bd3d39c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006109006108fb84610bff565b610bda565b90508281526020810184848401111561091857600080fd5b610923848285610c60565b509392505050565b60008135905061093a81610d8b565b92915050565b600082601f83011261095157600080fd5b81356109618482602086016108ed565b91505092915050565b60008135905061097981610da2565b92915050565b60006020828403121561099157600080fd5b600061099f8482850161092b565b91505092915050565b6000602082840312156109ba57600080fd5b600082013567ffffffffffffffff8111156109d457600080fd5b6109e084828501610940565b91505092915050565b6000602082840312156109fb57600080fd5b6000610a098482850161096a565b91505092915050565b60008060408385031215610a2557600080fd5b6000610a338582860161096a565b925050602083013567ffffffffffffffff811115610a5057600080fd5b610a5c85828601610940565b9150509250929050565b60008060408385031215610a7957600080fd5b6000610a878582860161096a565b9250506020610a988582860161096a565b9150509250929050565b610aab81610c4c565b82525050565b6000610abc82610c30565b610ac68185610c3b565b9350610ad6818560208601610c6f565b610adf81610d7a565b840191505092915050565b604082016000820151610b006000850182610b19565b506020820151610b136020850182610b19565b50505050565b610b2281610c56565b82525050565b610b3181610c56565b82525050565b6000602082019050610b4c6000830184610aa2565b92915050565b60006020820190508181036000830152610b6c8184610ab1565b905092915050565b6000604082019050610b896000830184610aea565b92915050565b6000602082019050610ba46000830184610b28565b92915050565b6000604082019050610bbf6000830185610b28565b8181036020830152610bd18184610ab1565b90509392505050565b6000610be4610bf5565b9050610bf08282610ca2565b919050565b6000604051905090565b600067ffffffffffffffff821115610c1a57610c19610d4b565b5b610c2382610d7a565b9050602081019050919050565b600081519050919050565b600082825260208201905092915050565b6000819050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015610c8d578082015181840152602081019050610c72565b83811115610c9c576000848401525b50505050565b610cab82610d7a565b810181811067ffffffffffffffff82111715610cca57610cc9610d4b565b5b80604052505050565b6000610cde82610c56565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415610d1157610d10610d1c565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b610d9481610c4c565b8114610d9f57600080fd5b50565b610dab81610c56565b8114610db657600080fd5b5056fea264697066735822122025e4c9eca28af81eeb16cfbb3832355e24c64c7eae221a5034159a671d61281464736f6c63430008040033608060405234801561001057600080fd5b50610182806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c806340d83b241461003b5780634b2bd7e914610045575b600080fd5b61004361004f565b005b61004d610081565b005b6040517fff05e87500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080815480929190610093906100d4565b91905055506040517fff05e87500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000819050919050565b60006100df826100ca565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156101125761011161011d565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea2646970667358221220188b4117d3c1f35f2fcbff7fbf51ee28f08c8abd18e3796ccd1d2fbc8c862e3f64736f6c63430008040033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101425760003560e01c806373d2ea85116100b8578063aac014e01161007c578063aac014e01461028b578063b6bbe06114610295578063bad92aa91461029f578063e0a03812146102a9578063fe276a34146102c5578063ffb4746b146102e157610142565b806373d2ea851461022357806374afd4521461023f578063772f243a146102495780637c3cb0af146102535780638f9330301461026f57610142565b80634b5bbf6a1161010a5780634b5bbf6a146101c157806358a1d1ed146101cb5780635b94e31e146101d5578063622051f1146101df5780636f1fdc31146101e95780636fc588d21461020557610142565b80631b4f3f3d146101475780631f542cf3146101515780633ba4178b1461016d578063467e3d371461018957806347c56769146101a5575b600080fd5b61014f6102eb565b005b61016b60048036038101906101669190610a66565b61030f565b005b61018760048036038101906101829190610a12565b610360565b005b6101a3600480360381019061019e91906109a8565b61039f565b005b6101bf60048036038101906101ba919061097f565b6103e7565b005b6101c9610424565b005b6101d361046d565b005b6101dd61047a565b005b6101e76104b1565b005b61020360048036038101906101fe91906109a8565b610533565b005b61020d610592565b60405161021a9190610b8f565b60405180910390f35b61023d600480360381019061023891906109e9565b61059b565b005b6102476105ef565b005b610251610608565b005b61026d600480360381019061026891906109e9565b6106a3565b005b6102896004803603810190610284919061097f565b6106e0565b005b610293610734565b005b61029d610766565b005b6102a76107b4565b005b6102c360048036038101906102be9190610a66565b6107fd565b005b6102df60048036038101906102da9190610a12565b610865565b005b6102e96108bb565b005b6000808154809291906102fd90610cd3565b9190505550600061030d57600080fd5b565b6040518060400160405280838152602001828152506040517fdecab0e70000000000000000000000000000000000000000000000000000000081526004016103579190610b74565b60405180910390fd5b81816040517fa92ee8e3000000000000000000000000000000000000000000000000000000008152600401610396929190610baa565b60405180910390fd5b600081906103e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103da9190610b52565b60405180910390fd5b5050565b806040517fcdd7a0cc00000000000000000000000000000000000000000000000000000000815260040161041b9190610b37565b60405180910390fd5b60008081548092919061043690610cd3565b91905055506040517fd2c097a600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061047857600080fd5b565b60006104af577f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340d83b246040518163ffffffff1660e01b815260040160006040518083038186803b15801561051957600080fd5b505afa15801561052d573d6000803e3d6000fd5b50505050565b60008081548092919061054590610cd3565b91905055506000819061058e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105859190610b52565b60405180910390fd5b5050565b60008054905090565b6000808154809291906105ad90610cd3565b9190505550806040517f01f4d5d20000000000000000000000000000000000000000000000000000000081526004016105e69190610b8f565b60405180910390fd5b60008081548092919061060190610cd3565b9190505550565b60008081548092919061061a90610cd3565b9190505550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634b2bd7e96040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561068957600080fd5b505af115801561069d573d6000803e3d6000fd5b50505050565b806040517f01f4d5d20000000000000000000000000000000000000000000000000000000081526004016106d79190610b8f565b60405180910390fd5b6000808154809291906106f290610cd3565b9190505550806040517fcdd7a0cc00000000000000000000000000000000000000000000000000000000815260040161072b9190610b37565b60405180910390fd5b6040517fd2c097a600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008081548092919061077890610cd3565b919050555060006107b2577f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b565b6000808154809291906107c690610cd3565b91905055506040517f0bd3d39c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008081548092919061080f90610cd3565b91905055506040518060400160405280838152602001828152506040517fdecab0e700000000000000000000000000000000000000000000000000000000815260040161085c9190610b74565b60405180910390fd5b60008081548092919061087790610cd3565b919050555081816040517fa92ee8e30000000000000000000000000000000000000000000000000000000081526004016108b2929190610baa565b60405180910390fd5b6040517f0bd3d39c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006109006108fb84610bff565b610bda565b90508281526020810184848401111561091857600080fd5b610923848285610c60565b509392505050565b60008135905061093a81610d8b565b92915050565b600082601f83011261095157600080fd5b81356109618482602086016108ed565b91505092915050565b60008135905061097981610da2565b92915050565b60006020828403121561099157600080fd5b600061099f8482850161092b565b91505092915050565b6000602082840312156109ba57600080fd5b600082013567ffffffffffffffff8111156109d457600080fd5b6109e084828501610940565b91505092915050565b6000602082840312156109fb57600080fd5b6000610a098482850161096a565b91505092915050565b60008060408385031215610a2557600080fd5b6000610a338582860161096a565b925050602083013567ffffffffffffffff811115610a5057600080fd5b610a5c85828601610940565b9150509250929050565b60008060408385031215610a7957600080fd5b6000610a878582860161096a565b9250506020610a988582860161096a565b9150509250929050565b610aab81610c4c565b82525050565b6000610abc82610c30565b610ac68185610c3b565b9350610ad6818560208601610c6f565b610adf81610d7a565b840191505092915050565b604082016000820151610b006000850182610b19565b506020820151610b136020850182610b19565b50505050565b610b2281610c56565b82525050565b610b3181610c56565b82525050565b6000602082019050610b4c6000830184610aa2565b92915050565b60006020820190508181036000830152610b6c8184610ab1565b905092915050565b6000604082019050610b896000830184610aea565b92915050565b6000602082019050610ba46000830184610b28565b92915050565b6000604082019050610bbf6000830185610b28565b8181036020830152610bd18184610ab1565b90509392505050565b6000610be4610bf5565b9050610bf08282610ca2565b919050565b6000604051905090565b600067ffffffffffffffff821115610c1a57610c19610d4b565b5b610c2382610d7a565b9050602081019050919050565b600081519050919050565b600082825260208201905092915050565b6000819050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015610c8d578082015181840152602081019050610c72565b83811115610c9c576000848401525b50505050565b610cab82610d7a565b810181811067ffffffffffffffff82111715610cca57610cc9610d4b565b5b80604052505050565b6000610cde82610c56565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415610d1157610d10610d1c565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b610d9481610c4c565b8114610d9f57600080fd5b50565b610dab81610c56565b8114610db657600080fd5b5056fea264697066735822122025e4c9eca28af81eeb16cfbb3832355e24c64c7eae221a5034159a671d61281464736f6c63430008040033", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Token.sol/MockToken.dbg.json b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Token.sol/MockToken.dbg.json deleted file mode 100644 index 224dfafc9c..0000000000 --- a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Token.sol/MockToken.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../build-info/16efa488de3a0283218beddfadbd1423.json" -} diff --git a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Token.sol/MockToken.json b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Token.sol/MockToken.json deleted file mode 100644 index 20f3bfa19b..0000000000 --- a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Token.sol/MockToken.json +++ /dev/null @@ -1,183 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "MockToken", - "sourceName": "contracts/Token.sol", - "abi": [ - { - "inputs": [ - { - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "internalType": "address", - "name": "spender", - "type": "address" - } - ], - "name": "allowance", - "outputs": [ - { - "internalType": "uint256", - "name": "remaining", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "approve", - "outputs": [ - { - "internalType": "bool", - "name": "success", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "balanceOf", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "decimals", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "name", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "symbol", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "totalSupply", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "transfer", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "transferFrom", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - } - ], - "bytecode": "0x608060405260016000556040518060400160405280600981526020017f4d6f636b546f6b656e000000000000000000000000000000000000000000000081525060049080519060200190620000569291906200010a565b506040518060400160405280600381526020017f4d434b000000000000000000000000000000000000000000000000000000000081525060059080519060200190620000a49291906200010a565b50348015620000b257600080fd5b50633b9aca00600181905550600154600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506200021f565b8280546200011890620001ba565b90600052602060002090601f0160209004810192826200013c576000855562000188565b82601f106200015757805160ff191683800117855562000188565b8280016001018555821562000188579182015b82811115620001875782518255916020019190600101906200016a565b5b5090506200019791906200019b565b5090565b5b80821115620001b65760008160009055506001016200019c565b5090565b60006002820490506001821680620001d357607f821691505b60208210811415620001ea57620001e9620001f0565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b610bad806200022f6000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c8063313ce56711610066578063313ce5671461013457806370a082311461015257806395d89b4114610182578063a9059cbb146101a0578063dd62ed3e146101d057610093565b806306fdde0314610098578063095ea7b3146100b657806318160ddd146100e657806323b872dd14610104575b600080fd5b6100a0610200565b6040516100ad91906108b8565b60405180910390f35b6100d060048036038101906100cb91906107c4565b61028e565b6040516100dd919061089d565b60405180910390f35b6100ee61031b565b6040516100fb919061091a565b60405180910390f35b61011e60048036038101906101199190610775565b610321565b60405161012b919061089d565b60405180910390f35b61013c6104b9565b604051610149919061091a565b60405180910390f35b61016c60048036038101906101679190610710565b6104bf565b604051610179919061091a565b60405180910390f35b61018a6104d7565b60405161019791906108b8565b60405180910390f35b6101ba60048036038101906101b591906107c4565b610565565b6040516101c7919061089d565b60405180910390f35b6101ea60048036038101906101e59190610739565b61065f565b6040516101f7919061091a565b60405180910390f35b6004805461020d90610a56565b80601f016020809104026020016040519081016040528092919081815260200182805461023990610a56565b80156102865780601f1061025b57610100808354040283529160200191610286565b820191906000526020600020905b81548152906001019060200180831161026957829003601f168201915b505050505081565b600081600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001905092915050565b60015481565b60008161032e853361065f565b101561036f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610366906108da565b60405180910390fd5b81600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546103fb91906109a7565b9250508190555081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461045191906109a7565b9250508190555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546104a79190610951565b92505081905550600190509392505050565b60005481565b60026020528060005260406000206000915090505481565b600580546104e490610a56565b80601f016020809104026020016040519081016040528092919081815260200182805461051090610a56565b801561055d5780601f106105325761010080835404028352916020019161055d565b820191906000526020600020905b81548152906001019060200180831161054057829003601f168201915b505050505081565b60008082116105a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105a0906108fa565b60405180910390fd5b81600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546105f891906109a7565b9250508190555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461064e9190610951565b925050819055506001905092915050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000813590506106f581610b49565b92915050565b60008135905061070a81610b60565b92915050565b60006020828403121561072257600080fd5b6000610730848285016106e6565b91505092915050565b6000806040838503121561074c57600080fd5b600061075a858286016106e6565b925050602061076b858286016106e6565b9150509250929050565b60008060006060848603121561078a57600080fd5b6000610798868287016106e6565b93505060206107a9868287016106e6565b92505060406107ba868287016106fb565b9150509250925092565b600080604083850312156107d757600080fd5b60006107e5858286016106e6565b92505060206107f6858286016106fb565b9150509250929050565b610809816109ed565b82525050565b600061081a82610935565b6108248185610940565b9350610834818560208601610a23565b61083d81610ae6565b840191505092915050565b6000610855601683610940565b915061086082610af7565b602082019050919050565b6000610878601983610940565b915061088382610b20565b602082019050919050565b61089781610a19565b82525050565b60006020820190506108b26000830184610800565b92915050565b600060208201905081810360008301526108d2818461080f565b905092915050565b600060208201905081810360008301526108f381610848565b9050919050565b600060208201905081810360008301526109138161086b565b9050919050565b600060208201905061092f600083018461088e565b92915050565b600081519050919050565b600082825260208201905092915050565b600061095c82610a19565b915061096783610a19565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561099c5761099b610a88565b5b828201905092915050565b60006109b282610a19565b91506109bd83610a19565b9250828210156109d0576109cf610a88565b5b828203905092915050565b60006109e6826109f9565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b83811015610a41578082015181840152602081019050610a26565b83811115610a50576000848401525b50505050565b60006002820490506001821680610a6e57607f821691505b60208210811415610a8257610a81610ab7565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f496e73756666696369656e7420616c6c6f77616e636500000000000000000000600082015250565b7f5472616e736665727265642076616c7565206973207a65726f00000000000000600082015250565b610b52816109db565b8114610b5d57600080fd5b50565b610b6981610a19565b8114610b7457600080fd5b5056fea26469706673582212208ce961870c9d6cd505270df5da0c70d49a8f6cb7e04d5a03b16637783be136e764736f6c63430008040033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100935760003560e01c8063313ce56711610066578063313ce5671461013457806370a082311461015257806395d89b4114610182578063a9059cbb146101a0578063dd62ed3e146101d057610093565b806306fdde0314610098578063095ea7b3146100b657806318160ddd146100e657806323b872dd14610104575b600080fd5b6100a0610200565b6040516100ad91906108b8565b60405180910390f35b6100d060048036038101906100cb91906107c4565b61028e565b6040516100dd919061089d565b60405180910390f35b6100ee61031b565b6040516100fb919061091a565b60405180910390f35b61011e60048036038101906101199190610775565b610321565b60405161012b919061089d565b60405180910390f35b61013c6104b9565b604051610149919061091a565b60405180910390f35b61016c60048036038101906101679190610710565b6104bf565b604051610179919061091a565b60405180910390f35b61018a6104d7565b60405161019791906108b8565b60405180910390f35b6101ba60048036038101906101b591906107c4565b610565565b6040516101c7919061089d565b60405180910390f35b6101ea60048036038101906101e59190610739565b61065f565b6040516101f7919061091a565b60405180910390f35b6004805461020d90610a56565b80601f016020809104026020016040519081016040528092919081815260200182805461023990610a56565b80156102865780601f1061025b57610100808354040283529160200191610286565b820191906000526020600020905b81548152906001019060200180831161026957829003601f168201915b505050505081565b600081600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001905092915050565b60015481565b60008161032e853361065f565b101561036f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610366906108da565b60405180910390fd5b81600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546103fb91906109a7565b9250508190555081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461045191906109a7565b9250508190555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546104a79190610951565b92505081905550600190509392505050565b60005481565b60026020528060005260406000206000915090505481565b600580546104e490610a56565b80601f016020809104026020016040519081016040528092919081815260200182805461051090610a56565b801561055d5780601f106105325761010080835404028352916020019161055d565b820191906000526020600020905b81548152906001019060200180831161054057829003601f168201915b505050505081565b60008082116105a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105a0906108fa565b60405180910390fd5b81600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546105f891906109a7565b9250508190555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461064e9190610951565b925050819055506001905092915050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000813590506106f581610b49565b92915050565b60008135905061070a81610b60565b92915050565b60006020828403121561072257600080fd5b6000610730848285016106e6565b91505092915050565b6000806040838503121561074c57600080fd5b600061075a858286016106e6565b925050602061076b858286016106e6565b9150509250929050565b60008060006060848603121561078a57600080fd5b6000610798868287016106e6565b93505060206107a9868287016106e6565b92505060406107ba868287016106fb565b9150509250925092565b600080604083850312156107d757600080fd5b60006107e5858286016106e6565b92505060206107f6858286016106fb565b9150509250929050565b610809816109ed565b82525050565b600061081a82610935565b6108248185610940565b9350610834818560208601610a23565b61083d81610ae6565b840191505092915050565b6000610855601683610940565b915061086082610af7565b602082019050919050565b6000610878601983610940565b915061088382610b20565b602082019050919050565b61089781610a19565b82525050565b60006020820190506108b26000830184610800565b92915050565b600060208201905081810360008301526108d2818461080f565b905092915050565b600060208201905081810360008301526108f381610848565b9050919050565b600060208201905081810360008301526109138161086b565b9050919050565b600060208201905061092f600083018461088e565b92915050565b600081519050919050565b600082825260208201905092915050565b600061095c82610a19565b915061096783610a19565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561099c5761099b610a88565b5b828201905092915050565b60006109b282610a19565b91506109bd83610a19565b9250828210156109d0576109cf610a88565b5b828203905092915050565b60006109e6826109f9565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b83811015610a41578082015181840152602081019050610a26565b83811115610a50576000848401525b50505050565b60006002820490506001821680610a6e57607f821691505b60208210811415610a8257610a81610ab7565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f496e73756666696369656e7420616c6c6f77616e636500000000000000000000600082015250565b7f5472616e736665727265642076616c7565206973207a65726f00000000000000600082015250565b610b52816109db565b8114610b5d57600080fd5b50565b610b6981610a19565b8114610b7457600080fd5b5056fea26469706673582212208ce961870c9d6cd505270df5da0c70d49a8f6cb7e04d5a03b16637783be136e764736f6c63430008040033", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Token.sol/NotAToken.dbg.json b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Token.sol/NotAToken.dbg.json deleted file mode 100644 index 224dfafc9c..0000000000 --- a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Token.sol/NotAToken.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../build-info/16efa488de3a0283218beddfadbd1423.json" -} diff --git a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Token.sol/NotAToken.json b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Token.sol/NotAToken.json deleted file mode 100644 index e50d9826d8..0000000000 --- a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Token.sol/NotAToken.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "NotAToken", - "sourceName": "contracts/Token.sol", - "abi": [], - "bytecode": "0x6080604052348015600f57600080fd5b50603f80601d6000396000f3fe6080604052600080fdfea26469706673582212209449725821c33b87347a40f451b2c6483bf5505349fe39bcd25604669e50f33364736f6c63430008040033", - "deployedBytecode": "0x6080604052600080fdfea26469706673582212209449725821c33b87347a40f451b2c6483bf5505349fe39bcd25604669e50f33364736f6c63430008040033", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Token.sol/TokenWithOnlyName.dbg.json b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Token.sol/TokenWithOnlyName.dbg.json deleted file mode 100644 index 224dfafc9c..0000000000 --- a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Token.sol/TokenWithOnlyName.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../build-info/16efa488de3a0283218beddfadbd1423.json" -} diff --git a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Token.sol/TokenWithOnlyName.json b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Token.sol/TokenWithOnlyName.json deleted file mode 100644 index 65eb5c812c..0000000000 --- a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Token.sol/TokenWithOnlyName.json +++ /dev/null @@ -1,170 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "TokenWithOnlyName", - "sourceName": "contracts/Token.sol", - "abi": [ - { - "inputs": [ - { - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "internalType": "address", - "name": "spender", - "type": "address" - } - ], - "name": "allowance", - "outputs": [ - { - "internalType": "uint256", - "name": "remaining", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "approve", - "outputs": [ - { - "internalType": "bool", - "name": "success", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "balanceOf", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "decimals", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "name", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "totalSupply", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "transfer", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "transferFrom", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - } - ], - "bytecode": "0x608060405260016000556040518060400160405280600981526020017f4d6f636b546f6b656e0000000000000000000000000000000000000000000000815250600490805190602001906100549291906100b8565b5034801561006157600080fd5b50633b9aca00600181905550600154600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506101bc565b8280546100c49061015b565b90600052602060002090601f0160209004810192826100e6576000855561012d565b82601f106100ff57805160ff191683800117855561012d565b8280016001018555821561012d579182015b8281111561012c578251825591602001919060010190610111565b5b50905061013a919061013e565b5090565b5b8082111561015757600081600090555060010161013f565b5090565b6000600282049050600182168061017357607f821691505b602082108114156101875761018661018d565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b610af6806101cb6000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063313ce5671161005b578063313ce5671461012957806370a0823114610147578063a9059cbb14610177578063dd62ed3e146101a757610088565b806306fdde031461008d578063095ea7b3146100ab57806318160ddd146100db57806323b872dd146100f9575b600080fd5b6100956101d7565b6040516100a29190610801565b60405180910390f35b6100c560048036038101906100c0919061070d565b610265565b6040516100d291906107e6565b60405180910390f35b6100e36102f2565b6040516100f09190610863565b60405180910390f35b610113600480360381019061010e91906106be565b6102f8565b60405161012091906107e6565b60405180910390f35b610131610490565b60405161013e9190610863565b60405180910390f35b610161600480360381019061015c9190610659565b610496565b60405161016e9190610863565b60405180910390f35b610191600480360381019061018c919061070d565b6104ae565b60405161019e91906107e6565b60405180910390f35b6101c160048036038101906101bc9190610682565b6105a8565b6040516101ce9190610863565b60405180910390f35b600480546101e49061099f565b80601f01602080910402602001604051908101604052809291908181526020018280546102109061099f565b801561025d5780601f106102325761010080835404028352916020019161025d565b820191906000526020600020905b81548152906001019060200180831161024057829003601f168201915b505050505081565b600081600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001905092915050565b60015481565b60008161030585336105a8565b1015610346576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161033d90610823565b60405180910390fd5b81600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546103d291906108f0565b9250508190555081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461042891906108f0565b9250508190555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461047e919061089a565b92505081905550600190509392505050565b60005481565b60026020528060005260406000206000915090505481565b60008082116104f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104e990610843565b60405180910390fd5b81600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461054191906108f0565b9250508190555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610597919061089a565b925050819055506001905092915050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008135905061063e81610a92565b92915050565b60008135905061065381610aa9565b92915050565b60006020828403121561066b57600080fd5b60006106798482850161062f565b91505092915050565b6000806040838503121561069557600080fd5b60006106a38582860161062f565b92505060206106b48582860161062f565b9150509250929050565b6000806000606084860312156106d357600080fd5b60006106e18682870161062f565b93505060206106f28682870161062f565b925050604061070386828701610644565b9150509250925092565b6000806040838503121561072057600080fd5b600061072e8582860161062f565b925050602061073f85828601610644565b9150509250929050565b61075281610936565b82525050565b60006107638261087e565b61076d8185610889565b935061077d81856020860161096c565b61078681610a2f565b840191505092915050565b600061079e601683610889565b91506107a982610a40565b602082019050919050565b60006107c1601983610889565b91506107cc82610a69565b602082019050919050565b6107e081610962565b82525050565b60006020820190506107fb6000830184610749565b92915050565b6000602082019050818103600083015261081b8184610758565b905092915050565b6000602082019050818103600083015261083c81610791565b9050919050565b6000602082019050818103600083015261085c816107b4565b9050919050565b600060208201905061087860008301846107d7565b92915050565b600081519050919050565b600082825260208201905092915050565b60006108a582610962565b91506108b083610962565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156108e5576108e46109d1565b5b828201905092915050565b60006108fb82610962565b915061090683610962565b925082821015610919576109186109d1565b5b828203905092915050565b600061092f82610942565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b8381101561098a57808201518184015260208101905061096f565b83811115610999576000848401525b50505050565b600060028204905060018216806109b757607f821691505b602082108114156109cb576109ca610a00565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f496e73756666696369656e7420616c6c6f77616e636500000000000000000000600082015250565b7f5472616e736665727265642076616c7565206973207a65726f00000000000000600082015250565b610a9b81610924565b8114610aa657600080fd5b50565b610ab281610962565b8114610abd57600080fd5b5056fea2646970667358221220a6fcd04aa893368d0e3e9a004a848844c520623183d6b2111fbc6f837204d0fa64736f6c63430008040033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100885760003560e01c8063313ce5671161005b578063313ce5671461012957806370a0823114610147578063a9059cbb14610177578063dd62ed3e146101a757610088565b806306fdde031461008d578063095ea7b3146100ab57806318160ddd146100db57806323b872dd146100f9575b600080fd5b6100956101d7565b6040516100a29190610801565b60405180910390f35b6100c560048036038101906100c0919061070d565b610265565b6040516100d291906107e6565b60405180910390f35b6100e36102f2565b6040516100f09190610863565b60405180910390f35b610113600480360381019061010e91906106be565b6102f8565b60405161012091906107e6565b60405180910390f35b610131610490565b60405161013e9190610863565b60405180910390f35b610161600480360381019061015c9190610659565b610496565b60405161016e9190610863565b60405180910390f35b610191600480360381019061018c919061070d565b6104ae565b60405161019e91906107e6565b60405180910390f35b6101c160048036038101906101bc9190610682565b6105a8565b6040516101ce9190610863565b60405180910390f35b600480546101e49061099f565b80601f01602080910402602001604051908101604052809291908181526020018280546102109061099f565b801561025d5780601f106102325761010080835404028352916020019161025d565b820191906000526020600020905b81548152906001019060200180831161024057829003601f168201915b505050505081565b600081600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001905092915050565b60015481565b60008161030585336105a8565b1015610346576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161033d90610823565b60405180910390fd5b81600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546103d291906108f0565b9250508190555081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461042891906108f0565b9250508190555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461047e919061089a565b92505081905550600190509392505050565b60005481565b60026020528060005260406000206000915090505481565b60008082116104f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104e990610843565b60405180910390fd5b81600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461054191906108f0565b9250508190555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610597919061089a565b925050819055506001905092915050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008135905061063e81610a92565b92915050565b60008135905061065381610aa9565b92915050565b60006020828403121561066b57600080fd5b60006106798482850161062f565b91505092915050565b6000806040838503121561069557600080fd5b60006106a38582860161062f565b92505060206106b48582860161062f565b9150509250929050565b6000806000606084860312156106d357600080fd5b60006106e18682870161062f565b93505060206106f28682870161062f565b925050604061070386828701610644565b9150509250925092565b6000806040838503121561072057600080fd5b600061072e8582860161062f565b925050602061073f85828601610644565b9150509250929050565b61075281610936565b82525050565b60006107638261087e565b61076d8185610889565b935061077d81856020860161096c565b61078681610a2f565b840191505092915050565b600061079e601683610889565b91506107a982610a40565b602082019050919050565b60006107c1601983610889565b91506107cc82610a69565b602082019050919050565b6107e081610962565b82525050565b60006020820190506107fb6000830184610749565b92915050565b6000602082019050818103600083015261081b8184610758565b905092915050565b6000602082019050818103600083015261083c81610791565b9050919050565b6000602082019050818103600083015261085c816107b4565b9050919050565b600060208201905061087860008301846107d7565b92915050565b600081519050919050565b600082825260208201905092915050565b60006108a582610962565b91506108b083610962565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156108e5576108e46109d1565b5b828201905092915050565b60006108fb82610962565b915061090683610962565b925082821015610919576109186109d1565b5b828203905092915050565b600061092f82610942565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b8381101561098a57808201518184015260208101905061096f565b83811115610999576000848401525b50505050565b600060028204905060018216806109b757607f821691505b602082108114156109cb576109ca610a00565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f496e73756666696369656e7420616c6c6f77616e636500000000000000000000600082015250565b7f5472616e736665727265642076616c7565206973207a65726f00000000000000600082015250565b610a9b81610924565b8114610aa657600080fd5b50565b610ab281610962565b8114610abd57600080fd5b5056fea2646970667358221220a6fcd04aa893368d0e3e9a004a848844c520623183d6b2111fbc6f837204d0fa64736f6c63430008040033", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Token.sol/TokenWithoutNameNorSymbol.dbg.json b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Token.sol/TokenWithoutNameNorSymbol.dbg.json deleted file mode 100644 index 224dfafc9c..0000000000 --- a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Token.sol/TokenWithoutNameNorSymbol.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../build-info/16efa488de3a0283218beddfadbd1423.json" -} diff --git a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Token.sol/TokenWithoutNameNorSymbol.json b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Token.sol/TokenWithoutNameNorSymbol.json deleted file mode 100644 index 14e0511214..0000000000 --- a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/artifacts/contracts/Token.sol/TokenWithoutNameNorSymbol.json +++ /dev/null @@ -1,162 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "TokenWithoutNameNorSymbol", - "sourceName": "contracts/Token.sol", - "abi": [ - { - "inputs": [], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "internalType": "address", - "name": "spender", - "type": "address" - } - ], - "name": "allowance", - "outputs": [ - { - "internalType": "uint256", - "name": "remaining", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "approve", - "outputs": [ - { - "internalType": "bool", - "name": "success", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "balanceOf", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "decimals", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "totalSupply", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "transfer", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "transferFrom", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - } - ], - "bytecode": "0x6080604052600160005534801561001557600080fd5b50633b9aca00600181905550600154600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610934806100766000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c8063313ce5671161005b578063313ce5671461010057806370a082311461011e578063a9059cbb1461014e578063dd62ed3e1461017e5761007d565b8063095ea7b31461008257806318160ddd146100b257806323b872dd146100d0575b600080fd5b61009c60048036038101906100979190610656565b6101ae565b6040516100a991906106f6565b60405180910390f35b6100ba61023b565b6040516100c79190610751565b60405180910390f35b6100ea60048036038101906100e59190610607565b610241565b6040516100f791906106f6565b60405180910390f35b6101086103d9565b6040516101159190610751565b60405180910390f35b610138600480360381019061013391906105a2565b6103df565b6040516101459190610751565b60405180910390f35b61016860048036038101906101639190610656565b6103f7565b60405161017591906106f6565b60405180910390f35b610198600480360381019061019391906105cb565b6104f1565b6040516101a59190610751565b60405180910390f35b600081600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001905092915050565b60015481565b60008161024e85336104f1565b101561028f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161028690610711565b60405180910390fd5b81600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461031b91906107d3565b9250508190555081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461037191906107d3565b9250508190555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546103c7919061077d565b92505081905550600190509392505050565b60005481565b60026020528060005260406000206000915090505481565b600080821161043b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043290610731565b60405180910390fd5b81600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461048a91906107d3565b9250508190555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546104e0919061077d565b925050819055506001905092915050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600081359050610587816108d0565b92915050565b60008135905061059c816108e7565b92915050565b6000602082840312156105b457600080fd5b60006105c284828501610578565b91505092915050565b600080604083850312156105de57600080fd5b60006105ec85828601610578565b92505060206105fd85828601610578565b9150509250929050565b60008060006060848603121561061c57600080fd5b600061062a86828701610578565b935050602061063b86828701610578565b925050604061064c8682870161058d565b9150509250925092565b6000806040838503121561066957600080fd5b600061067785828601610578565b92505060206106888582860161058d565b9150509250929050565b61069b81610819565b82525050565b60006106ae60168361076c565b91506106b98261087e565b602082019050919050565b60006106d160198361076c565b91506106dc826108a7565b602082019050919050565b6106f081610845565b82525050565b600060208201905061070b6000830184610692565b92915050565b6000602082019050818103600083015261072a816106a1565b9050919050565b6000602082019050818103600083015261074a816106c4565b9050919050565b600060208201905061076660008301846106e7565b92915050565b600082825260208201905092915050565b600061078882610845565b915061079383610845565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156107c8576107c761084f565b5b828201905092915050565b60006107de82610845565b91506107e983610845565b9250828210156107fc576107fb61084f565b5b828203905092915050565b600061081282610825565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f496e73756666696369656e7420616c6c6f77616e636500000000000000000000600082015250565b7f5472616e736665727265642076616c7565206973207a65726f00000000000000600082015250565b6108d981610807565b81146108e457600080fd5b50565b6108f081610845565b81146108fb57600080fd5b5056fea2646970667358221220a8a6918adf2af132e4e49a96a108a2d9c62cfb74de3e267b6c8af323b87f6ec964736f6c63430008040033", - "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061007d5760003560e01c8063313ce5671161005b578063313ce5671461010057806370a082311461011e578063a9059cbb1461014e578063dd62ed3e1461017e5761007d565b8063095ea7b31461008257806318160ddd146100b257806323b872dd146100d0575b600080fd5b61009c60048036038101906100979190610656565b6101ae565b6040516100a991906106f6565b60405180910390f35b6100ba61023b565b6040516100c79190610751565b60405180910390f35b6100ea60048036038101906100e59190610607565b610241565b6040516100f791906106f6565b60405180910390f35b6101086103d9565b6040516101159190610751565b60405180910390f35b610138600480360381019061013391906105a2565b6103df565b6040516101459190610751565b60405180910390f35b61016860048036038101906101639190610656565b6103f7565b60405161017591906106f6565b60405180910390f35b610198600480360381019061019391906105cb565b6104f1565b6040516101a59190610751565b60405180910390f35b600081600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001905092915050565b60015481565b60008161024e85336104f1565b101561028f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161028690610711565b60405180910390fd5b81600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461031b91906107d3565b9250508190555081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461037191906107d3565b9250508190555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546103c7919061077d565b92505081905550600190509392505050565b60005481565b60026020528060005260406000206000915090505481565b600080821161043b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043290610731565b60405180910390fd5b81600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461048a91906107d3565b9250508190555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546104e0919061077d565b925050819055506001905092915050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600081359050610587816108d0565b92915050565b60008135905061059c816108e7565b92915050565b6000602082840312156105b457600080fd5b60006105c284828501610578565b91505092915050565b600080604083850312156105de57600080fd5b60006105ec85828601610578565b92505060206105fd85828601610578565b9150509250929050565b60008060006060848603121561061c57600080fd5b600061062a86828701610578565b935050602061063b86828701610578565b925050604061064c8682870161058d565b9150509250925092565b6000806040838503121561066957600080fd5b600061067785828601610578565b92505060206106888582860161058d565b9150509250929050565b61069b81610819565b82525050565b60006106ae60168361076c565b91506106b98261087e565b602082019050919050565b60006106d160198361076c565b91506106dc826108a7565b602082019050919050565b6106f081610845565b82525050565b600060208201905061070b6000830184610692565b92915050565b6000602082019050818103600083015261072a816106a1565b9050919050565b6000602082019050818103600083015261074a816106c4565b9050919050565b600060208201905061076660008301846106e7565b92915050565b600082825260208201905092915050565b600061078882610845565b915061079383610845565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156107c8576107c761084f565b5b828201905092915050565b60006107de82610845565b91506107e983610845565b9250828210156107fc576107fb61084f565b5b828203905092915050565b600061081282610825565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f496e73756666696369656e7420616c6c6f77616e636500000000000000000000600082015250565b7f5472616e736665727265642076616c7565206973207a65726f00000000000000600082015250565b6108d981610807565b81146108e457600080fd5b50565b6108f081610845565b81146108fb57600080fd5b5056fea2646970667358221220a8a6918adf2af132e4e49a96a108a2d9c62cfb74de3e267b6c8af323b87f6ec964736f6c63430008040033", - "linkReferences": {}, - "deployedLinkReferences": {} -} From aeee5b83c228b9909ca5f580a24b5c82a844e141 Mon Sep 17 00:00:00 2001 From: ChrisD <18092467+ChristopherDedominici@users.noreply.github.com> Date: Mon, 25 Nov 2024 17:20:03 +0100 Subject: [PATCH 43/61] add pretest script to compile contracts --- v-next/hardhat-chai-matchers/package.json | 2 +- .../hardhat-project/hardhat.config.ts | 7 ----- .../test/helpers/helpers.ts | 3 -- .../test/helpers/pretest.ts | 28 +++++++++++++++++++ 4 files changed, 29 insertions(+), 11 deletions(-) create mode 100644 v-next/hardhat-chai-matchers/test/helpers/pretest.ts diff --git a/v-next/hardhat-chai-matchers/package.json b/v-next/hardhat-chai-matchers/package.json index d226486dca..6c1cf73ba6 100644 --- a/v-next/hardhat-chai-matchers/package.json +++ b/v-next/hardhat-chai-matchers/package.json @@ -31,7 +31,7 @@ "test": "node --import tsx/esm --test --test-reporter=@ignored/hardhat-vnext-node-test-reporter \"test/*.ts\" \"test/!(fixture-projects|helpers)/**/*.ts\"", "test:only": "node --import tsx/esm --test --test-only --test-reporter=@ignored/hardhat-vnext-node-test-reporter \"test/*.ts\" \"test/!(fixture-projects|helpers)/**/*.ts\"", "test:coverage": "c8 --reporter html --reporter text --all --exclude test --exclude src/internal/types.ts --exclude src/internal/ui/direct-user-interruption-manager.ts --src src node --import tsx/esm --test --test-reporter=@ignored/hardhat-vnext-node-test-reporter \"test/!(fixture-projects|helpers)/**/*.ts\"", - "pretest": "pnpm build", + "pretest": "pnpm build && node --import tsx/esm ./test/helpers/pretest.ts", "pretest:only": "pnpm build", "build": "tsc --build .", "prepublishOnly": "pnpm build", diff --git a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/hardhat.config.ts b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/hardhat.config.ts index f3b9bb339e..5d8fb73ffa 100644 --- a/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/hardhat.config.ts +++ b/v-next/hardhat-chai-matchers/test/fixture-projects/hardhat-project/hardhat.config.ts @@ -3,13 +3,6 @@ import type { HardhatUserConfig } from "@ignored/hardhat-vnext/config"; import hardhatEthersPlugin from "@ignored/hardhat-vnext-ethers"; const config: HardhatUserConfig = { - solidity: { - version: "0.8.24", - }, - // paths: { - // // TODO: remove this when compilation in V3 is executed only when files are not compiled already (when cache is available) - // artifacts: "./artifacts", - // }, plugins: [hardhatEthersPlugin], }; diff --git a/v-next/hardhat-chai-matchers/test/helpers/helpers.ts b/v-next/hardhat-chai-matchers/test/helpers/helpers.ts index 7a18eaf948..34908cca81 100644 --- a/v-next/hardhat-chai-matchers/test/helpers/helpers.ts +++ b/v-next/hardhat-chai-matchers/test/helpers/helpers.ts @@ -17,10 +17,7 @@ export async function initEnvironment(_artifactsPath: string): Promise<{ ).toString(); const config = (await import(configPath)).default; - // TODO: remove this when compilation in V3 is executed only when files are not compiled already (when cache is available) - // config.paths.artifacts = path.join(".", "artifacts", artifactsPath); const hre = await createHardhatRuntimeEnvironment(config); - // await hre.tasks.getTask("compile").run({}); const { ethers, provider } = await hre.network.connect(); diff --git a/v-next/hardhat-chai-matchers/test/helpers/pretest.ts b/v-next/hardhat-chai-matchers/test/helpers/pretest.ts new file mode 100644 index 0000000000..dd301d30c6 --- /dev/null +++ b/v-next/hardhat-chai-matchers/test/helpers/pretest.ts @@ -0,0 +1,28 @@ +import path, { dirname } from "node:path"; +import { fileURLToPath } from "node:url"; + +import { createHardhatRuntimeEnvironment } from "@ignored/hardhat-vnext/hre"; + +// Compile the contracts before executing the tests to bypass the compilation step during testing. +(async () => { + const currentDir = dirname(fileURLToPath(import.meta.url)); + + const fixtureProjectDir = path.join( + currentDir, + "..", + "fixture-projects", + "hardhat-project", + ); + + const hre = await createHardhatRuntimeEnvironment({ + solidity: { + version: "0.8.24", // Same version as the one in the contracts in the "hardhat-project" fixture project + }, + paths: { + artifacts: path.join(fixtureProjectDir, "artifacts"), + sources: path.join(fixtureProjectDir, "contracts"), + }, + }); + + await hre.tasks.getTask("compile").run({}); +})(); From c778d2fa08532732fe8eca9da022ba7e303652a1 Mon Sep 17 00:00:00 2001 From: ChrisD <18092467+ChristopherDedominici@users.noreply.github.com> Date: Tue, 26 Nov 2024 15:33:32 +0100 Subject: [PATCH 44/61] whitelist the plugin when checking script consistency --- scripts/check-v-next-npm-scripts.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/scripts/check-v-next-npm-scripts.js b/scripts/check-v-next-npm-scripts.js index 6eb188ce1a..e66d307780 100644 --- a/scripts/check-v-next-npm-scripts.js +++ b/scripts/check-v-next-npm-scripts.js @@ -25,6 +25,12 @@ for (const dir of dirs) { continue; } + // TODO: This is a temporary solution because compiler downloads are not yet managed via a mutex. + // As a result, the compilation step must occur in the pretest script to prevent multiple compilers from being downloaded simultaneously. + if (dir.name === "hardhat-chai-matchers") { + continue; + } + const packageJsonPath = path.resolve(vNextDir, dir.name, "package.json"); const packageJson = require(packageJsonPath); From 59931adaf0c9878f4447d0319225124fa306d2a7 Mon Sep 17 00:00:00 2001 From: ChrisD <18092467+ChristopherDedominici@users.noreply.github.com> Date: Mon, 16 Dec 2024 16:21:08 +0100 Subject: [PATCH 45/61] use the old deep-equal function --- pnpm-lock.yaml | 11 +++++++++++ v-next/hardhat-chai-matchers/package.json | 4 +++- .../src/internal/matchers/big-number.ts | 15 +++++++++++++-- .../src/internal/utils/deep-equal.ts | 17 ----------------- 4 files changed, 27 insertions(+), 20 deletions(-) delete mode 100644 v-next/hardhat-chai-matchers/src/internal/utils/deep-equal.ts diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c2f992b124..1a81e11486 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1627,6 +1627,9 @@ importers: chai-as-promised: specifier: ^8.0.0 version: 8.0.0(chai@5.1.2) + deep-eql: + specifier: ^5.0.1 + version: 5.0.2 ethers: specifier: ^6.13.2 version: 6.13.4 @@ -1646,6 +1649,9 @@ importers: '@types/debug': specifier: ^4.1.4 version: 4.1.12 + '@types/deep-eql': + specifier: ^4.0.2 + version: 4.0.2 '@types/node': specifier: ^20.14.9 version: 20.17.1 @@ -3484,6 +3490,9 @@ packages: '@types/debug@4.1.12': resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} + '@types/deep-eql@4.0.2': + resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==} + '@types/events@3.0.3': resolution: {integrity: sha512-trOc4AAUThEz9hapPtSd7wf5tiQKvTtu5b371UxXdTuqzIh0ArcRspRP0i0Viu+LXstIQ1z96t1nsPxT9ol01g==} @@ -8280,6 +8289,8 @@ snapshots: dependencies: '@types/ms': 0.7.34 + '@types/deep-eql@4.0.2': {} + '@types/events@3.0.3': {} '@types/find-up@2.1.1': {} diff --git a/v-next/hardhat-chai-matchers/package.json b/v-next/hardhat-chai-matchers/package.json index 6c1cf73ba6..e075a32d0a 100644 --- a/v-next/hardhat-chai-matchers/package.json +++ b/v-next/hardhat-chai-matchers/package.json @@ -51,6 +51,7 @@ "@nomicfoundation/hardhat-test-utils": "workspace:^", "@types/chai": "^4.2.0", "@types/debug": "^4.1.4", + "@types/deep-eql": "^4.0.2", "@types/node": "^20.14.9", "@typescript-eslint/eslint-plugin": "^7.7.1", "@typescript-eslint/parser": "^7.7.1", @@ -72,7 +73,8 @@ "@ignored/hardhat-vnext-ethers": "workspace:^3.0.0-next.12", "@ignored/hardhat-vnext-utils": "workspace:^3.0.0-next.15", "@types/chai-as-promised": "^8.0.1", - "chai-as-promised": "^8.0.0" + "chai-as-promised": "^8.0.0", + "deep-eql": "^5.0.1" }, "peerDependencies": { "@ignored/hardhat-vnext": "workspace:^3.0.0-next.16", diff --git a/v-next/hardhat-chai-matchers/src/internal/matchers/big-number.ts b/v-next/hardhat-chai-matchers/src/internal/matchers/big-number.ts index c653e45118..5ea5d61881 100644 --- a/v-next/hardhat-chai-matchers/src/internal/matchers/big-number.ts +++ b/v-next/hardhat-chai-matchers/src/internal/matchers/big-number.ts @@ -3,9 +3,9 @@ import util from "node:util"; import { HardhatError } from "@ignored/hardhat-vnext-errors"; import { toBigInt } from "@ignored/hardhat-vnext-utils/bigint"; import { AssertionError } from "chai"; +import deepEqual from "deep-eql"; import { isBigInt } from "../utils/bigint.js"; -import { deepEqual } from "../utils/deep-equal.js"; export function supportBigNumber( Assertion: Chai.AssertionStatic, @@ -162,7 +162,7 @@ function overwriteBigNumberFunction( chaiUtils.flag(this, "lockSsfi", true); this.assert( - deepEqual(actualArg, expectedFlag), + deepEqual(actualArg, expectedFlag, { comparator: deepEqualComparator }), `expected ${util.inspect(expectedFlag)} to deeply equal ${util.inspect( actualArg, )}`, @@ -266,3 +266,14 @@ function overwriteBigNumberCloseTo( } }; } + +function deepEqualComparator(a: any, b: any): boolean | null { + try { + const normalizedA = toBigInt(a); + const normalizedB = toBigInt(b); + return normalizedA === normalizedB; + } catch (e) { + // use default comparator + return null; + } +} diff --git a/v-next/hardhat-chai-matchers/src/internal/utils/deep-equal.ts b/v-next/hardhat-chai-matchers/src/internal/utils/deep-equal.ts deleted file mode 100644 index 4d06b20903..0000000000 --- a/v-next/hardhat-chai-matchers/src/internal/utils/deep-equal.ts +++ /dev/null @@ -1,17 +0,0 @@ -// eslint-disable-next-line no-restricted-imports -- we want to cases like: 1n === 1 -import assert from "node:assert"; - -/** - * We cannot use the "deepEqual" method from "hardhat-utils" because it requires the compared values to be strictly identical. - * For example, `1n === 1` evaluates to false. - * In the V2 code, the values were normalized to BigInts before comparison because it was possible to pass a "comparator" function to the "deepEqual" method (this method came from the "deep-eql" package, which is now removed). - * The current solution is to use the "assert.deepEqual" method from "node:assert" with a relaxed comparison (non-strict), allowing `1n === 1` to evaluate as true. - */ -export function deepEqual(a: unknown, b: unknown): boolean { - try { - assert.deepEqual(a, b); - return true; - } catch (e) { - return false; - } -} From cc631f4f22c4fce1625befe837923b61dc2bafd8 Mon Sep 17 00:00:00 2001 From: ChrisD <18092467+ChristopherDedominici@users.noreply.github.com> Date: Mon, 16 Dec 2024 16:31:13 +0100 Subject: [PATCH 46/61] move utils function in internal folder --- .../src/internal/matchers/changeEtherBalance.ts | 2 +- .../src/internal/matchers/changeEtherBalances.ts | 2 +- .../src/internal/matchers/changeTokenBalance.ts | 2 +- v-next/hardhat-chai-matchers/src/internal/matchers/emit.ts | 4 ++-- .../src/internal/matchers/reverted/reverted.ts | 2 +- .../src/internal/matchers/reverted/revertedWith.ts | 2 +- .../internal/matchers/reverted/revertedWithCustomError.ts | 4 ++-- .../src/internal/matchers/reverted/revertedWithPanic.ts | 2 +- .../internal/matchers/reverted/revertedWithoutReason.ts | 2 +- v-next/hardhat-chai-matchers/src/internal/utils/asserts.ts | 2 +- .../src/{utils.ts => internal/utils/build-assert.ts} | 7 ++----- v-next/hardhat-chai-matchers/src/internal/utils/ssfi.ts | 6 ++++++ 12 files changed, 20 insertions(+), 17 deletions(-) rename v-next/hardhat-chai-matchers/src/{utils.ts => internal/utils/build-assert.ts} (91%) create mode 100644 v-next/hardhat-chai-matchers/src/internal/utils/ssfi.ts diff --git a/v-next/hardhat-chai-matchers/src/internal/matchers/changeEtherBalance.ts b/v-next/hardhat-chai-matchers/src/internal/matchers/changeEtherBalance.ts index ba230efffd..09096f57b3 100644 --- a/v-next/hardhat-chai-matchers/src/internal/matchers/changeEtherBalance.ts +++ b/v-next/hardhat-chai-matchers/src/internal/matchers/changeEtherBalance.ts @@ -9,7 +9,7 @@ import { numberToHexString } from "@ignored/hardhat-vnext-utils/hex"; import { isObject } from "@ignored/hardhat-vnext-utils/lang"; import { toBigInt } from "ethers/utils"; -import { buildAssert } from "../../utils.js"; +import { buildAssert } from "../utils/build-assert.js"; import { CHANGE_ETHER_BALANCE_MATCHER } from "../constants.js"; import { getAddressOf } from "../utils/account.js"; import { diff --git a/v-next/hardhat-chai-matchers/src/internal/matchers/changeEtherBalances.ts b/v-next/hardhat-chai-matchers/src/internal/matchers/changeEtherBalances.ts index c274652f49..66381b5329 100644 --- a/v-next/hardhat-chai-matchers/src/internal/matchers/changeEtherBalances.ts +++ b/v-next/hardhat-chai-matchers/src/internal/matchers/changeEtherBalances.ts @@ -6,7 +6,7 @@ import type { TransactionResponse } from "ethers/providers"; import { HardhatError } from "@ignored/hardhat-vnext-errors"; import { toBigInt } from "ethers/utils"; -import { buildAssert } from "../../utils.js"; +import { buildAssert } from "../utils/build-assert.js"; import { CHANGE_ETHER_BALANCES_MATCHER } from "../constants.js"; import { getAddressOf } from "../utils/account.js"; import { assertIsNotNull } from "../utils/asserts.js"; diff --git a/v-next/hardhat-chai-matchers/src/internal/matchers/changeTokenBalance.ts b/v-next/hardhat-chai-matchers/src/internal/matchers/changeTokenBalance.ts index 78e8202b81..f06438afa2 100644 --- a/v-next/hardhat-chai-matchers/src/internal/matchers/changeTokenBalance.ts +++ b/v-next/hardhat-chai-matchers/src/internal/matchers/changeTokenBalance.ts @@ -15,7 +15,7 @@ import { import { isObject } from "@ignored/hardhat-vnext-utils/lang"; import { toBigInt } from "ethers/utils"; -import { buildAssert } from "../../utils.js"; +import { buildAssert } from "../utils/build-assert.js"; import { CHANGE_TOKEN_BALANCES_MATCHER, CHANGE_TOKEN_BALANCE_MATCHER, diff --git a/v-next/hardhat-chai-matchers/src/internal/matchers/emit.ts b/v-next/hardhat-chai-matchers/src/internal/matchers/emit.ts index 6d680db019..5d7e026635 100644 --- a/v-next/hardhat-chai-matchers/src/internal/matchers/emit.ts +++ b/v-next/hardhat-chai-matchers/src/internal/matchers/emit.ts @@ -1,4 +1,4 @@ -import type { AssertWithSsfi, Ssfi } from "../../utils.js"; +import type { AssertWithSsfi, Ssfi } from "../utils/ssfi.js"; import type { EventFragment } from "ethers/abi"; import type { Contract } from "ethers/contract"; import type { Provider, TransactionReceipt } from "ethers/providers"; @@ -9,9 +9,9 @@ import util from "node:util"; import { HardhatError } from "@ignored/hardhat-vnext-errors"; import { AssertionError } from "chai"; -import { buildAssert } from "../../utils.js"; import { ASSERTION_ABORTED, EMIT_MATCHER } from "../constants.js"; import { assertArgsArraysEqual, assertIsNotNull } from "../utils/asserts.js"; +import { buildAssert } from "../utils/build-assert.js"; import { preventAsyncMatcherChaining } from "../utils/prevent-chaining.js"; export const EMIT_CALLED = "emitAssertionCalled"; diff --git a/v-next/hardhat-chai-matchers/src/internal/matchers/reverted/reverted.ts b/v-next/hardhat-chai-matchers/src/internal/matchers/reverted/reverted.ts index a9839b3123..e83e41b685 100644 --- a/v-next/hardhat-chai-matchers/src/internal/matchers/reverted/reverted.ts +++ b/v-next/hardhat-chai-matchers/src/internal/matchers/reverted/reverted.ts @@ -3,7 +3,7 @@ import type { HardhatEthers } from "@ignored/hardhat-vnext-ethers/types"; import { HardhatError } from "@ignored/hardhat-vnext-errors"; import { numberToHexString } from "@ignored/hardhat-vnext-utils/hex"; -import { buildAssert } from "../../../utils.js"; +import { buildAssert } from "../../utils/build-assert.js"; import { REVERTED_MATCHER } from "../../constants.js"; import { assertIsNotNull } from "../../utils/asserts.js"; import { preventAsyncMatcherChaining } from "../../utils/prevent-chaining.js"; diff --git a/v-next/hardhat-chai-matchers/src/internal/matchers/reverted/revertedWith.ts b/v-next/hardhat-chai-matchers/src/internal/matchers/reverted/revertedWith.ts index 83371ef4aa..20d59796e4 100644 --- a/v-next/hardhat-chai-matchers/src/internal/matchers/reverted/revertedWith.ts +++ b/v-next/hardhat-chai-matchers/src/internal/matchers/reverted/revertedWith.ts @@ -1,7 +1,7 @@ import { HardhatError } from "@ignored/hardhat-vnext-errors"; import { numberToHexString } from "@ignored/hardhat-vnext-utils/hex"; -import { buildAssert } from "../../../utils.js"; +import { buildAssert } from "../../utils/build-assert.js"; import { REVERTED_WITH_MATCHER } from "../../constants.js"; import { preventAsyncMatcherChaining } from "../../utils/prevent-chaining.js"; diff --git a/v-next/hardhat-chai-matchers/src/internal/matchers/reverted/revertedWithCustomError.ts b/v-next/hardhat-chai-matchers/src/internal/matchers/reverted/revertedWithCustomError.ts index 202275603e..617c2c835b 100644 --- a/v-next/hardhat-chai-matchers/src/internal/matchers/reverted/revertedWithCustomError.ts +++ b/v-next/hardhat-chai-matchers/src/internal/matchers/reverted/revertedWithCustomError.ts @@ -1,16 +1,16 @@ -import type { Ssfi } from "../../../utils.js"; +import type { Ssfi } from "../../utils/ssfi.js"; import type { ErrorFragment, Interface } from "ethers/abi"; import type { BaseContract } from "ethers/contract"; import { HardhatError } from "@ignored/hardhat-vnext-errors"; import { numberToHexString } from "@ignored/hardhat-vnext-utils/hex"; -import { buildAssert } from "../../../utils.js"; import { ASSERTION_ABORTED, REVERTED_WITH_CUSTOM_ERROR_MATCHER, } from "../../constants.js"; import { assertArgsArraysEqual, assertIsNotNull } from "../../utils/asserts.js"; +import { buildAssert } from "../../utils/build-assert.js"; import { preventAsyncMatcherChaining } from "../../utils/prevent-chaining.js"; import { diff --git a/v-next/hardhat-chai-matchers/src/internal/matchers/reverted/revertedWithPanic.ts b/v-next/hardhat-chai-matchers/src/internal/matchers/reverted/revertedWithPanic.ts index 42011b97cf..9f1f4ed3a4 100644 --- a/v-next/hardhat-chai-matchers/src/internal/matchers/reverted/revertedWithPanic.ts +++ b/v-next/hardhat-chai-matchers/src/internal/matchers/reverted/revertedWithPanic.ts @@ -2,7 +2,7 @@ import { HardhatError } from "@ignored/hardhat-vnext-errors"; import { toBigInt } from "@ignored/hardhat-vnext-utils/bigint"; import { numberToHexString } from "@ignored/hardhat-vnext-utils/hex"; -import { buildAssert } from "../../../utils.js"; +import { buildAssert } from "../../utils/build-assert.js"; import { REVERTED_WITH_PANIC_MATCHER } from "../../constants.js"; import { preventAsyncMatcherChaining } from "../../utils/prevent-chaining.js"; diff --git a/v-next/hardhat-chai-matchers/src/internal/matchers/reverted/revertedWithoutReason.ts b/v-next/hardhat-chai-matchers/src/internal/matchers/reverted/revertedWithoutReason.ts index 166ae07563..abcdced85a 100644 --- a/v-next/hardhat-chai-matchers/src/internal/matchers/reverted/revertedWithoutReason.ts +++ b/v-next/hardhat-chai-matchers/src/internal/matchers/reverted/revertedWithoutReason.ts @@ -1,6 +1,6 @@ import { numberToHexString } from "@ignored/hardhat-vnext-utils/hex"; -import { buildAssert } from "../../../utils.js"; +import { buildAssert } from "../../utils/build-assert.js"; import { REVERTED_WITHOUT_REASON_MATCHER } from "../../constants.js"; import { preventAsyncMatcherChaining } from "../../utils/prevent-chaining.js"; diff --git a/v-next/hardhat-chai-matchers/src/internal/utils/asserts.ts b/v-next/hardhat-chai-matchers/src/internal/utils/asserts.ts index ba2b2f86b9..a4d3a0a0a4 100644 --- a/v-next/hardhat-chai-matchers/src/internal/utils/asserts.ts +++ b/v-next/hardhat-chai-matchers/src/internal/utils/asserts.ts @@ -1,4 +1,4 @@ -import type { AssertWithSsfi, Ssfi } from "../../utils.js"; +import type { AssertWithSsfi, Ssfi } from "./ssfi.js"; import { assertHardhatInvariant, diff --git a/v-next/hardhat-chai-matchers/src/utils.ts b/v-next/hardhat-chai-matchers/src/internal/utils/build-assert.ts similarity index 91% rename from v-next/hardhat-chai-matchers/src/utils.ts rename to v-next/hardhat-chai-matchers/src/internal/utils/build-assert.ts index 2b97c1ea9d..761becc11e 100644 --- a/v-next/hardhat-chai-matchers/src/utils.ts +++ b/v-next/hardhat-chai-matchers/src/internal/utils/build-assert.ts @@ -1,9 +1,8 @@ +import type { Ssfi } from "./ssfi.js"; + import { HardhatError } from "@ignored/hardhat-vnext-errors"; import { AssertionError } from "chai"; -// just a generic function type to avoid errors from the ban-types eslint rule -export type Ssfi = (...args: any[]) => any; - /** * This function is used by the matchers to obtain an `assert` function, which * should be used instead of `this.assert`. @@ -53,5 +52,3 @@ export function buildAssert(negated: boolean, ssfi: Ssfi) { } }; } - -export type AssertWithSsfi = ReturnType; diff --git a/v-next/hardhat-chai-matchers/src/internal/utils/ssfi.ts b/v-next/hardhat-chai-matchers/src/internal/utils/ssfi.ts new file mode 100644 index 0000000000..b6b978af8b --- /dev/null +++ b/v-next/hardhat-chai-matchers/src/internal/utils/ssfi.ts @@ -0,0 +1,6 @@ +import type { buildAssert } from "./build-assert.js"; + +// just a generic function type to avoid errors from the ban-types eslint rule +export type Ssfi = (...args: any[]) => any; + +export type AssertWithSsfi = ReturnType; From 420d29fd026e9c2709d0a50ea5d7687f0370eb24 Mon Sep 17 00:00:00 2001 From: ChrisD <18092467+ChristopherDedominici@users.noreply.github.com> Date: Mon, 16 Dec 2024 16:33:23 +0100 Subject: [PATCH 47/61] fix linting errors --- .../src/internal/matchers/changeEtherBalance.ts | 2 +- .../src/internal/matchers/changeEtherBalances.ts | 2 +- .../src/internal/matchers/changeTokenBalance.ts | 2 +- .../src/internal/matchers/reverted/reverted.ts | 2 +- .../src/internal/matchers/reverted/revertedWith.ts | 2 +- .../src/internal/matchers/reverted/revertedWithPanic.ts | 2 +- .../src/internal/matchers/reverted/revertedWithoutReason.ts | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/v-next/hardhat-chai-matchers/src/internal/matchers/changeEtherBalance.ts b/v-next/hardhat-chai-matchers/src/internal/matchers/changeEtherBalance.ts index 09096f57b3..5e67c30762 100644 --- a/v-next/hardhat-chai-matchers/src/internal/matchers/changeEtherBalance.ts +++ b/v-next/hardhat-chai-matchers/src/internal/matchers/changeEtherBalance.ts @@ -9,13 +9,13 @@ import { numberToHexString } from "@ignored/hardhat-vnext-utils/hex"; import { isObject } from "@ignored/hardhat-vnext-utils/lang"; import { toBigInt } from "ethers/utils"; -import { buildAssert } from "../utils/build-assert.js"; import { CHANGE_ETHER_BALANCE_MATCHER } from "../constants.js"; import { getAddressOf } from "../utils/account.js"; import { assertCanBeConvertedToBigint, assertIsNotNull, } from "../utils/asserts.js"; +import { buildAssert } from "../utils/build-assert.js"; import { preventAsyncMatcherChaining } from "../utils/prevent-chaining.js"; export function supportChangeEtherBalance( diff --git a/v-next/hardhat-chai-matchers/src/internal/matchers/changeEtherBalances.ts b/v-next/hardhat-chai-matchers/src/internal/matchers/changeEtherBalances.ts index 66381b5329..7f97ced1d4 100644 --- a/v-next/hardhat-chai-matchers/src/internal/matchers/changeEtherBalances.ts +++ b/v-next/hardhat-chai-matchers/src/internal/matchers/changeEtherBalances.ts @@ -6,11 +6,11 @@ import type { TransactionResponse } from "ethers/providers"; import { HardhatError } from "@ignored/hardhat-vnext-errors"; import { toBigInt } from "ethers/utils"; -import { buildAssert } from "../utils/build-assert.js"; import { CHANGE_ETHER_BALANCES_MATCHER } from "../constants.js"; import { getAddressOf } from "../utils/account.js"; import { assertIsNotNull } from "../utils/asserts.js"; import { getAddresses, getBalances } from "../utils/balance.js"; +import { buildAssert } from "../utils/build-assert.js"; import { ordinal } from "../utils/ordinal.js"; import { preventAsyncMatcherChaining } from "../utils/prevent-chaining.js"; diff --git a/v-next/hardhat-chai-matchers/src/internal/matchers/changeTokenBalance.ts b/v-next/hardhat-chai-matchers/src/internal/matchers/changeTokenBalance.ts index f06438afa2..a7b3b64e36 100644 --- a/v-next/hardhat-chai-matchers/src/internal/matchers/changeTokenBalance.ts +++ b/v-next/hardhat-chai-matchers/src/internal/matchers/changeTokenBalance.ts @@ -15,13 +15,13 @@ import { import { isObject } from "@ignored/hardhat-vnext-utils/lang"; import { toBigInt } from "ethers/utils"; -import { buildAssert } from "../utils/build-assert.js"; import { CHANGE_TOKEN_BALANCES_MATCHER, CHANGE_TOKEN_BALANCE_MATCHER, } from "../constants.js"; import { getAddressOf } from "../utils/account.js"; import { assertIsNotNull } from "../utils/asserts.js"; +import { buildAssert } from "../utils/build-assert.js"; import { preventAsyncMatcherChaining } from "../utils/prevent-chaining.js"; export type Token = BaseContract & { diff --git a/v-next/hardhat-chai-matchers/src/internal/matchers/reverted/reverted.ts b/v-next/hardhat-chai-matchers/src/internal/matchers/reverted/reverted.ts index e83e41b685..07d1cd36fd 100644 --- a/v-next/hardhat-chai-matchers/src/internal/matchers/reverted/reverted.ts +++ b/v-next/hardhat-chai-matchers/src/internal/matchers/reverted/reverted.ts @@ -3,9 +3,9 @@ import type { HardhatEthers } from "@ignored/hardhat-vnext-ethers/types"; import { HardhatError } from "@ignored/hardhat-vnext-errors"; import { numberToHexString } from "@ignored/hardhat-vnext-utils/hex"; -import { buildAssert } from "../../utils/build-assert.js"; import { REVERTED_MATCHER } from "../../constants.js"; import { assertIsNotNull } from "../../utils/asserts.js"; +import { buildAssert } from "../../utils/build-assert.js"; import { preventAsyncMatcherChaining } from "../../utils/prevent-chaining.js"; import { diff --git a/v-next/hardhat-chai-matchers/src/internal/matchers/reverted/revertedWith.ts b/v-next/hardhat-chai-matchers/src/internal/matchers/reverted/revertedWith.ts index 20d59796e4..6191205df2 100644 --- a/v-next/hardhat-chai-matchers/src/internal/matchers/reverted/revertedWith.ts +++ b/v-next/hardhat-chai-matchers/src/internal/matchers/reverted/revertedWith.ts @@ -1,8 +1,8 @@ import { HardhatError } from "@ignored/hardhat-vnext-errors"; import { numberToHexString } from "@ignored/hardhat-vnext-utils/hex"; -import { buildAssert } from "../../utils/build-assert.js"; import { REVERTED_WITH_MATCHER } from "../../constants.js"; +import { buildAssert } from "../../utils/build-assert.js"; import { preventAsyncMatcherChaining } from "../../utils/prevent-chaining.js"; import { decodeReturnData, getReturnDataFromError } from "./utils.js"; diff --git a/v-next/hardhat-chai-matchers/src/internal/matchers/reverted/revertedWithPanic.ts b/v-next/hardhat-chai-matchers/src/internal/matchers/reverted/revertedWithPanic.ts index 9f1f4ed3a4..c61b84db84 100644 --- a/v-next/hardhat-chai-matchers/src/internal/matchers/reverted/revertedWithPanic.ts +++ b/v-next/hardhat-chai-matchers/src/internal/matchers/reverted/revertedWithPanic.ts @@ -2,8 +2,8 @@ import { HardhatError } from "@ignored/hardhat-vnext-errors"; import { toBigInt } from "@ignored/hardhat-vnext-utils/bigint"; import { numberToHexString } from "@ignored/hardhat-vnext-utils/hex"; -import { buildAssert } from "../../utils/build-assert.js"; import { REVERTED_WITH_PANIC_MATCHER } from "../../constants.js"; +import { buildAssert } from "../../utils/build-assert.js"; import { preventAsyncMatcherChaining } from "../../utils/prevent-chaining.js"; import { panicErrorCodeToReason } from "./panic.js"; diff --git a/v-next/hardhat-chai-matchers/src/internal/matchers/reverted/revertedWithoutReason.ts b/v-next/hardhat-chai-matchers/src/internal/matchers/reverted/revertedWithoutReason.ts index abcdced85a..81f626ee33 100644 --- a/v-next/hardhat-chai-matchers/src/internal/matchers/reverted/revertedWithoutReason.ts +++ b/v-next/hardhat-chai-matchers/src/internal/matchers/reverted/revertedWithoutReason.ts @@ -1,7 +1,7 @@ import { numberToHexString } from "@ignored/hardhat-vnext-utils/hex"; -import { buildAssert } from "../../utils/build-assert.js"; import { REVERTED_WITHOUT_REASON_MATCHER } from "../../constants.js"; +import { buildAssert } from "../../utils/build-assert.js"; import { preventAsyncMatcherChaining } from "../../utils/prevent-chaining.js"; import { decodeReturnData, getReturnDataFromError } from "./utils.js"; From d71b34f50a94ecfb177571b7e880be2f0b896255 Mon Sep 17 00:00:00 2001 From: ChrisD <18092467+ChristopherDedominici@users.noreply.github.com> Date: Mon, 16 Dec 2024 16:40:01 +0100 Subject: [PATCH 48/61] remove mocha hook --- v-next/hardhat-mocha-test-runner/src/task-action.ts | 6 ------ .../src/type-extensions.ts | 13 ------------- 2 files changed, 19 deletions(-) diff --git a/v-next/hardhat-mocha-test-runner/src/task-action.ts b/v-next/hardhat-mocha-test-runner/src/task-action.ts index 62a92049c4..e0c5f5182c 100644 --- a/v-next/hardhat-mocha-test-runner/src/task-action.ts +++ b/v-next/hardhat-mocha-test-runner/src/task-action.ts @@ -60,12 +60,6 @@ const testWithHardhat: NewTaskActionFunction = async ( const tsx = fileURLToPath(import.meta.resolve("tsx/esm")); process.env.NODE_OPTIONS = `--import ${tsx}`; - // This allows other plugins to hook into the mocha initialization. - // E.g.: hardhat-chai-matchers - await hre.hooks.runHandlerChain("mocha", "initialize", [], async () => { - return undefined; - }); - const { default: Mocha } = await import("mocha"); const mochaConfig: MochaOptions = { ...hre.config.mocha }; diff --git a/v-next/hardhat-mocha-test-runner/src/type-extensions.ts b/v-next/hardhat-mocha-test-runner/src/type-extensions.ts index f2b15c1d46..7c81ef6a7a 100644 --- a/v-next/hardhat-mocha-test-runner/src/type-extensions.ts +++ b/v-next/hardhat-mocha-test-runner/src/type-extensions.ts @@ -19,16 +19,3 @@ declare module "@ignored/hardhat-vnext/types/config" { mocha: string; } } - -declare module "@ignored/hardhat-vnext/types/hooks" { - export interface HardhatHooks { - mocha: MochaHooks; - } - - export interface MochaHooks { - initialize( - context: HookContext, - next: (context: HookContext) => Promise, - ): Promise; - } -} From 973ae35a112a1014b32ae5d09bed82542c402dd0 Mon Sep 17 00:00:00 2001 From: ChrisD <18092467+ChristopherDedominici@users.noreply.github.com> Date: Mon, 16 Dec 2024 17:02:53 +0100 Subject: [PATCH 49/61] use newConnection hook --- pnpm-lock.yaml | 17 ++++++++++--- v-next/hardhat-chai-matchers/package.json | 4 ++- v-next/hardhat-chai-matchers/src/index.ts | 2 +- .../src/internal/hook-handlers/mocha.ts | 21 ---------------- .../src/internal/hook-handlers/network.ts | 25 +++++++++++++++++++ v-next/hardhat-chai-matchers/test/index.ts | 2 ++ 6 files changed, 45 insertions(+), 26 deletions(-) delete mode 100644 v-next/hardhat-chai-matchers/src/internal/hook-handlers/mocha.ts create mode 100644 v-next/hardhat-chai-matchers/src/internal/hook-handlers/network.ts diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1a81e11486..edef178dfd 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1612,9 +1612,6 @@ importers: '@ignored/hardhat-vnext-ethers': specifier: workspace:^3.0.0-next.12 version: link:../hardhat-ethers - '@ignored/hardhat-vnext-mocha-test-runner': - specifier: workspace:^3.0.0-next.12 - version: link:../hardhat-mocha-test-runner '@ignored/hardhat-vnext-utils': specifier: workspace:^3.0.0-next.15 version: link:../hardhat-utils @@ -1637,6 +1634,9 @@ importers: '@eslint-community/eslint-plugin-eslint-comments': specifier: ^4.3.0 version: 4.4.1(eslint@8.57.0) + '@ignored/hardhat-vnext-mocha-test-runner': + specifier: workspace:^3.0.0-next.12 + version: link:../hardhat-mocha-test-runner '@ignored/hardhat-vnext-node-test-reporter': specifier: workspace:^3.0.0-next.15 version: link:../hardhat-node-test-reporter @@ -1652,6 +1652,9 @@ importers: '@types/deep-eql': specifier: ^4.0.2 version: 4.0.2 + '@types/mocha': + specifier: ^10.0.10 + version: 10.0.10 '@types/node': specifier: ^20.14.9 version: 20.17.1 @@ -1682,6 +1685,9 @@ importers: expect-type: specifier: ^0.19.0 version: 0.19.0 + mocha: + specifier: ^10.0.0 + version: 10.7.3 prettier: specifier: 3.2.5 version: 3.2.5 @@ -3538,6 +3544,9 @@ packages: '@types/minimatch@5.1.2': resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==} + '@types/mocha@10.0.10': + resolution: {integrity: sha512-xPyYSz1cMPnJQhl0CLMH68j3gprKZaTjG3s5Vi+fDgx+uhG9NOXwbVt52eFS8ECyXhyKcjDLCBEqBExKuiZb7Q==} + '@types/mocha@10.0.9': resolution: {integrity: sha512-sicdRoWtYevwxjOHNMPTl3vSfJM6oyW8o1wXeI7uww6b6xHg8eBznQDNSGBCDJmsE8UMxP05JgZRtsKbTqt//Q==} @@ -8336,6 +8345,8 @@ snapshots: '@types/minimatch@5.1.2': {} + '@types/mocha@10.0.10': {} + '@types/mocha@10.0.9': {} '@types/ms@0.7.34': {} diff --git a/v-next/hardhat-chai-matchers/package.json b/v-next/hardhat-chai-matchers/package.json index e075a32d0a..3c7d4a63d4 100644 --- a/v-next/hardhat-chai-matchers/package.json +++ b/v-next/hardhat-chai-matchers/package.json @@ -47,11 +47,13 @@ ], "devDependencies": { "@eslint-community/eslint-plugin-eslint-comments": "^4.3.0", + "@ignored/hardhat-vnext-mocha-test-runner": "workspace:^3.0.0-next.12", "@ignored/hardhat-vnext-node-test-reporter": "workspace:^3.0.0-next.15", "@nomicfoundation/hardhat-test-utils": "workspace:^", "@types/chai": "^4.2.0", "@types/debug": "^4.1.4", "@types/deep-eql": "^4.0.2", + "@types/mocha": "^10.0.10", "@types/node": "^20.14.9", "@typescript-eslint/eslint-plugin": "^7.7.1", "@typescript-eslint/parser": "^7.7.1", @@ -62,6 +64,7 @@ "eslint-plugin-import": "2.29.1", "eslint-plugin-no-only-tests": "3.1.0", "expect-type": "^0.19.0", + "mocha": "^10.0.0", "prettier": "3.2.5", "rimraf": "^5.0.5", "tsx": "^4.11.0", @@ -78,7 +81,6 @@ }, "peerDependencies": { "@ignored/hardhat-vnext": "workspace:^3.0.0-next.16", - "@ignored/hardhat-vnext-mocha-test-runner": "workspace:^3.0.0-next.12", "chai": "^5.1.2", "ethers": "^6.13.2" } diff --git a/v-next/hardhat-chai-matchers/src/index.ts b/v-next/hardhat-chai-matchers/src/index.ts index d100005b49..92f78d72fa 100644 --- a/v-next/hardhat-chai-matchers/src/index.ts +++ b/v-next/hardhat-chai-matchers/src/index.ts @@ -5,7 +5,7 @@ import "./type-extensions.d.js"; const hardhatChaiMatchersPlugin: HardhatPlugin = { id: "hardhat-chai-matchers", hookHandlers: { - mocha: import.meta.resolve("./internal/hook-handlers/mocha.js"), + network: import.meta.resolve("./internal/hook-handlers/network.js"), }, }; diff --git a/v-next/hardhat-chai-matchers/src/internal/hook-handlers/mocha.ts b/v-next/hardhat-chai-matchers/src/internal/hook-handlers/mocha.ts deleted file mode 100644 index 5ea35e7182..0000000000 --- a/v-next/hardhat-chai-matchers/src/internal/hook-handlers/mocha.ts +++ /dev/null @@ -1,21 +0,0 @@ -import type { - HookContext, - MochaHooks, -} from "@ignored/hardhat-vnext/types/hooks"; - -import { addChaiMatchers } from "../add-chai-matchers.js"; - -export default async (): Promise> => { - const handlers: Partial = { - initialize( - context: HookContext, - next: (context: HookContext) => Promise, - ): Promise { - addChaiMatchers(); - - return next(context); - }, - }; - - return handlers; -}; diff --git a/v-next/hardhat-chai-matchers/src/internal/hook-handlers/network.ts b/v-next/hardhat-chai-matchers/src/internal/hook-handlers/network.ts new file mode 100644 index 0000000000..14d528c730 --- /dev/null +++ b/v-next/hardhat-chai-matchers/src/internal/hook-handlers/network.ts @@ -0,0 +1,25 @@ +import type { + HookContext, + NetworkHooks, +} from "@ignored/hardhat-vnext/types/hooks"; +import type { + ChainType, + NetworkConnection, +} from "@ignored/hardhat-vnext/types/network"; + +import { addChaiMatchers } from "../add-chai-matchers.js"; + +export default async (): Promise> => { + const handlers: Partial = { + async newConnection( + context: HookContext, + next: (context: HookContext) => Promise>, + ) { + addChaiMatchers(); + + return next(context); + }, + }; + + return handlers; +}; diff --git a/v-next/hardhat-chai-matchers/test/index.ts b/v-next/hardhat-chai-matchers/test/index.ts index 114e8616d3..d9ee0f437a 100644 --- a/v-next/hardhat-chai-matchers/test/index.ts +++ b/v-next/hardhat-chai-matchers/test/index.ts @@ -15,6 +15,8 @@ describe("hardhat-chai-matchers plugin correctly initialized", () => { const hre = await createHardhatRuntimeEnvironment(hardhatConfig.default); + await hre.network.connect(); + const result = await hre.tasks.getTask(["test", "mocha"]).run({ testFiles: ["./test/test.ts"], noCompile: true, From b18430773018755c9be22c994be5a2841de24942 Mon Sep 17 00:00:00 2001 From: ChrisD <18092467+ChristopherDedominici@users.noreply.github.com> Date: Mon, 16 Dec 2024 17:16:05 +0100 Subject: [PATCH 50/61] update mocha version --- v-next/hardhat-chai-matchers/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/v-next/hardhat-chai-matchers/package.json b/v-next/hardhat-chai-matchers/package.json index 3c7d4a63d4..d2691397df 100644 --- a/v-next/hardhat-chai-matchers/package.json +++ b/v-next/hardhat-chai-matchers/package.json @@ -53,7 +53,7 @@ "@types/chai": "^4.2.0", "@types/debug": "^4.1.4", "@types/deep-eql": "^4.0.2", - "@types/mocha": "^10.0.10", + "@types/mocha": ">=9.1.0", "@types/node": "^20.14.9", "@typescript-eslint/eslint-plugin": "^7.7.1", "@typescript-eslint/parser": "^7.7.1", From 0b9d2e28cc0ae488995d18ba95138cf887d3d757 Mon Sep 17 00:00:00 2001 From: ChrisD <18092467+ChristopherDedominici@users.noreply.github.com> Date: Mon, 16 Dec 2024 17:19:48 +0100 Subject: [PATCH 51/61] update lock file --- pnpm-lock.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index edef178dfd..cb1761c748 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1653,7 +1653,7 @@ importers: specifier: ^4.0.2 version: 4.0.2 '@types/mocha': - specifier: ^10.0.10 + specifier: '>=9.1.0' version: 10.0.10 '@types/node': specifier: ^20.14.9 From 995e73fb76289d41ba0c713185becf3836052845 Mon Sep 17 00:00:00 2001 From: Patricio Palladino Date: Mon, 16 Dec 2024 17:13:20 +0000 Subject: [PATCH 52/61] Update the type-extensions --- v-next/hardhat-chai-matchers/src/index.ts | 2 +- .../src/type-extensions.d.ts | 73 ----------------- .../src/type-extensions.ts | 80 +++++++++++++++++++ 3 files changed, 81 insertions(+), 74 deletions(-) delete mode 100644 v-next/hardhat-chai-matchers/src/type-extensions.d.ts create mode 100644 v-next/hardhat-chai-matchers/src/type-extensions.ts diff --git a/v-next/hardhat-chai-matchers/src/index.ts b/v-next/hardhat-chai-matchers/src/index.ts index 92f78d72fa..13b0e23ecb 100644 --- a/v-next/hardhat-chai-matchers/src/index.ts +++ b/v-next/hardhat-chai-matchers/src/index.ts @@ -1,6 +1,6 @@ import type { HardhatPlugin } from "@ignored/hardhat-vnext/types/plugins"; -import "./type-extensions.d.js"; +import "./type-extensions.js"; const hardhatChaiMatchersPlugin: HardhatPlugin = { id: "hardhat-chai-matchers", diff --git a/v-next/hardhat-chai-matchers/src/type-extensions.d.ts b/v-next/hardhat-chai-matchers/src/type-extensions.d.ts deleted file mode 100644 index 9e3711df8e..0000000000 --- a/v-next/hardhat-chai-matchers/src/type-extensions.d.ts +++ /dev/null @@ -1,73 +0,0 @@ -declare namespace Chai { - interface Assertion - extends LanguageChains, - NumericComparison, - TypeComparison { - emit(contract: any, eventName: string): EmitAssertion; - reverted(ethers: HardhatEthers): AsyncAssertion; - revertedWith(reason: string | RegExp): AsyncAssertion; - revertedWithoutReason(ethers: HardhatEthers): AsyncAssertion; - revertedWithPanic(code?: any): AsyncAssertion; - revertedWithCustomError( - contract: { interface: any }, - customErrorName: string, - ): CustomErrorAssertion; - hexEqual(other: string): void; - properPrivateKey: void; - properAddress: void; - properHex(length: number): void; - changeEtherBalance( - provider: EthereumProvider, - account: any, - balance: any, - options?: any, - ): AsyncAssertion; - changeEtherBalances( - provider: EthereumProvider, - accounts: any[], - balances: any[] | ((changes: bigint[]) => boolean), - options?: any, - ): AsyncAssertion; - changeTokenBalance( - provider: EthereumProvider, - token: any, - account: any, - balance: any, - ): AsyncAssertion; - changeTokenBalances( - provider: EthereumProvider, - token: any, - account: any[], - balance: any[] | ((changes: bigint[]) => boolean), - ): AsyncAssertion; - } - - interface NumericComparison { - within(start: any, finish: any, message?: string): Assertion; - } - - interface NumberComparer { - // eslint-disable-next-line -- the interface must follow the original definition pattern - (value: any, message?: string): Assertion; - } - - interface CloseTo { - // eslint-disable-next-line -- the interface must follow the original definition pattern - (expected: any, delta: any, message?: string): Assertion; - } - - interface Length extends Assertion { - // eslint-disable-next-line -- the interface must follow the original definition pattern - (length: any, message?: string): Assertion; - } - - interface AsyncAssertion extends Assertion, Promise {} - - interface EmitAssertion extends AsyncAssertion { - withArgs(...args: any[]): AsyncAssertion; - } - - interface CustomErrorAssertion extends AsyncAssertion { - withArgs(...args: any[]): AsyncAssertion; - } -} diff --git a/v-next/hardhat-chai-matchers/src/type-extensions.ts b/v-next/hardhat-chai-matchers/src/type-extensions.ts new file mode 100644 index 0000000000..99b4d65af2 --- /dev/null +++ b/v-next/hardhat-chai-matchers/src/type-extensions.ts @@ -0,0 +1,80 @@ +import type { EthereumProvider } from "@ignored/hardhat-vnext/types/providers"; +import type { HardhatEthers } from "@ignored/hardhat-vnext-ethers/types"; + +declare global { + /* eslint-disable-next-line @typescript-eslint/no-namespace -- We have to use + a namespace because @types/chai uses it. */ + namespace Chai { + interface Assertion + extends LanguageChains, + NumericComparison, + TypeComparison { + emit(contract: any, eventName: string): EmitAssertion; + reverted(ethers: HardhatEthers): AsyncAssertion; + revertedWith(reason: string | RegExp): AsyncAssertion; + revertedWithoutReason(ethers: HardhatEthers): AsyncAssertion; + revertedWithPanic(code?: any): AsyncAssertion; + revertedWithCustomError( + contract: { interface: any }, + customErrorName: string, + ): CustomErrorAssertion; + hexEqual(other: string): void; + properPrivateKey: void; + properAddress: void; + properHex(length: number): void; + changeEtherBalance( + provider: EthereumProvider, + account: any, + balance: any, + options?: any, + ): AsyncAssertion; + changeEtherBalances( + provider: EthereumProvider, + accounts: any[], + balances: any[] | ((changes: bigint[]) => boolean), + options?: any, + ): AsyncAssertion; + changeTokenBalance( + provider: EthereumProvider, + token: any, + account: any, + balance: any, + ): AsyncAssertion; + changeTokenBalances( + provider: EthereumProvider, + token: any, + account: any[], + balance: any[] | ((changes: bigint[]) => boolean), + ): AsyncAssertion; + } + + interface NumericComparison { + within(start: any, finish: any, message?: string): Assertion; + } + + interface NumberComparer { + // eslint-disable-next-line -- the interface must follow the original definition pattern + (value: any, message?: string): Assertion; + } + + interface CloseTo { + // eslint-disable-next-line -- the interface must follow the original definition pattern + (expected: any, delta: any, message?: string): Assertion; + } + + interface Length extends Assertion { + // eslint-disable-next-line -- the interface must follow the original definition pattern + (length: any, message?: string): Assertion; + } + + interface AsyncAssertion extends Assertion, Promise {} + + interface EmitAssertion extends AsyncAssertion { + withArgs(...args: any[]): AsyncAssertion; + } + + interface CustomErrorAssertion extends AsyncAssertion { + withArgs(...args: any[]): AsyncAssertion; + } + } +} From d8ed99a305c2da640e1e7e925533da30a15b817f Mon Sep 17 00:00:00 2001 From: Patricio Palladino Date: Mon, 16 Dec 2024 17:13:28 +0000 Subject: [PATCH 53/61] Fix the example project tsconfig --- v-next/example-project/tsconfig.json | 3 +++ 1 file changed, 3 insertions(+) diff --git a/v-next/example-project/tsconfig.json b/v-next/example-project/tsconfig.json index f1eff0f4c7..51be52df3a 100644 --- a/v-next/example-project/tsconfig.json +++ b/v-next/example-project/tsconfig.json @@ -21,6 +21,9 @@ }, { "path": "../hardhat-viem" + }, + { + "path": "../hardhat-chai-matchers" } ] } From b3f5f94b20433b950ba4a280b19b341f1a4914d8 Mon Sep 17 00:00:00 2001 From: Patricio Palladino Date: Mon, 16 Dec 2024 17:15:03 +0000 Subject: [PATCH 54/61] Add small doc comment --- v-next/hardhat-chai-matchers/src/type-extensions.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/v-next/hardhat-chai-matchers/src/type-extensions.ts b/v-next/hardhat-chai-matchers/src/type-extensions.ts index 99b4d65af2..a6a7837e74 100644 --- a/v-next/hardhat-chai-matchers/src/type-extensions.ts +++ b/v-next/hardhat-chai-matchers/src/type-extensions.ts @@ -1,6 +1,8 @@ import type { EthereumProvider } from "@ignored/hardhat-vnext/types/providers"; import type { HardhatEthers } from "@ignored/hardhat-vnext-ethers/types"; +// We use declare global instead of declare module "chai", because that's what +// @types/chai does. declare global { /* eslint-disable-next-line @typescript-eslint/no-namespace -- We have to use a namespace because @types/chai uses it. */ From 0d806e165ade2eaea3994e6173e17916f85c3582 Mon Sep 17 00:00:00 2001 From: ChrisD <18092467+ChristopherDedominici@users.noreply.github.com> Date: Tue, 17 Dec 2024 10:50:52 +0100 Subject: [PATCH 55/61] fix CI failures --- v-next/example-project/test/mocha/mocha-test.ts | 5 +++++ v-next/hardhat-chai-matchers/package.json | 3 +-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/v-next/example-project/test/mocha/mocha-test.ts b/v-next/example-project/test/mocha/mocha-test.ts index 2251b827b4..dfbd589ccd 100644 --- a/v-next/example-project/test/mocha/mocha-test.ts +++ b/v-next/example-project/test/mocha/mocha-test.ts @@ -5,6 +5,7 @@ import { expect } from "chai"; import { anyUint } from "@ignored/hardhat-vnext-chai-matchers/withArgs"; import { PANIC_CODES } from "@ignored/hardhat-vnext-chai-matchers/panic"; +import hre from "@ignored/hardhat-vnext"; describe("Mocha test", () => { it("should work", () => { @@ -13,6 +14,10 @@ describe("Mocha test", () => { }); describe("Mocha test with chai-matchers", () => { + before(async () => { + await hre.network.connect(); + }); + it("should import variables from the chai-matchers package", () => { expect(anyUint).to.be.a("function"); expect(PANIC_CODES.ASSERTION_ERROR).to.be.a("number"); diff --git a/v-next/hardhat-chai-matchers/package.json b/v-next/hardhat-chai-matchers/package.json index d2691397df..0fd869e76a 100644 --- a/v-next/hardhat-chai-matchers/package.json +++ b/v-next/hardhat-chai-matchers/package.json @@ -35,8 +35,7 @@ "pretest:only": "pnpm build", "build": "tsc --build .", "prepublishOnly": "pnpm build", - "clean": "rimraf dist", - "postbuild": "cp src/type-extensions.d.ts dist/src/type-extensions.d.ts" + "clean": "rimraf dist" }, "files": [ "dist/src/", From 1851d3a53558b0677219d6b43f79f4f5cf32a688 Mon Sep 17 00:00:00 2001 From: ChrisD <18092467+ChristopherDedominici@users.noreply.github.com> Date: Tue, 17 Dec 2024 10:53:50 +0100 Subject: [PATCH 56/61] remove TODOs for external nodes because no longer needed --- .../test/matchers/changeEtherBalance.ts | 6 ------ .../test/matchers/changeEtherBalances.ts | 7 ------- .../test/matchers/changeTokenBalance.ts | 6 ------ v-next/hardhat-chai-matchers/test/matchers/events.ts | 6 ------ .../test/matchers/reverted/reverted.ts | 6 ------ .../test/matchers/reverted/revertedWith.ts | 6 ------ .../test/matchers/reverted/revertedWithCustomError.ts | 6 ------ .../test/matchers/reverted/revertedWithPanic.ts | 6 ------ .../test/matchers/reverted/revertedWithoutReason.ts | 6 ------ 9 files changed, 55 deletions(-) diff --git a/v-next/hardhat-chai-matchers/test/matchers/changeEtherBalance.ts b/v-next/hardhat-chai-matchers/test/matchers/changeEtherBalance.ts index c885a0ac51..5c835fb160 100644 --- a/v-next/hardhat-chai-matchers/test/matchers/changeEtherBalance.ts +++ b/v-next/hardhat-chai-matchers/test/matchers/changeEtherBalance.ts @@ -28,12 +28,6 @@ describe("INTEGRATION: changeEtherBalance matcher", { timeout: 60000 }, () => { runTests(); }); - // TODO: when V3 node is ready, add this functionality - // describe.skip("connected to a hardhat node", ()=> { - // useEnvironmentWithNode("hardhat-project"); - // runTests(); - // }); - function runTests() { let sender: HardhatEthersSigner; let receiver: HardhatEthersSigner; diff --git a/v-next/hardhat-chai-matchers/test/matchers/changeEtherBalances.ts b/v-next/hardhat-chai-matchers/test/matchers/changeEtherBalances.ts index b3f16e0afc..44dcaa1736 100644 --- a/v-next/hardhat-chai-matchers/test/matchers/changeEtherBalances.ts +++ b/v-next/hardhat-chai-matchers/test/matchers/changeEtherBalances.ts @@ -28,13 +28,6 @@ describe("INTEGRATION: changeEtherBalances matcher", { timeout: 60000 }, () => { runTests(); }); - // TODO: when V3 node is ready, add this functionality - // describe("connected to a hardhat node", ()=>{ - // process.env.CHAIN_ID = "12345"; - // useEnvironmentWithNode("hardhat-project"); - // runTests(); - // }); - function runTests() { let sender: HardhatEthersSigner; let receiver: HardhatEthersSigner; diff --git a/v-next/hardhat-chai-matchers/test/matchers/changeTokenBalance.ts b/v-next/hardhat-chai-matchers/test/matchers/changeTokenBalance.ts index 2f17784040..31d80c7bc7 100644 --- a/v-next/hardhat-chai-matchers/test/matchers/changeTokenBalance.ts +++ b/v-next/hardhat-chai-matchers/test/matchers/changeTokenBalance.ts @@ -42,12 +42,6 @@ describe( runTests(); }); - // TODO: when V3 node is ready, add this functionality - // describe("connected to a hardhat node", ()=>{ - // useEnvironmentWithNode("hardhat-project"); - // runTests(); - // }); - afterEach(() => { clearTokenDescriptionsCache(); }); diff --git a/v-next/hardhat-chai-matchers/test/matchers/events.ts b/v-next/hardhat-chai-matchers/test/matchers/events.ts index 973cd98b39..7a82459d0f 100644 --- a/v-next/hardhat-chai-matchers/test/matchers/events.ts +++ b/v-next/hardhat-chai-matchers/test/matchers/events.ts @@ -35,12 +35,6 @@ describe(".to.emit (contract events)", { timeout: 60000 }, () => { runTests(); }); - // TODO: when V3 node is ready, add this functionality - // describe("connected to a hardhat node", ()=>{ - // useEnvironmentWithNode("hardhat-project"); - // runTests(); - // }); - function runTests() { let ethers: HardhatEthers; diff --git a/v-next/hardhat-chai-matchers/test/matchers/reverted/reverted.ts b/v-next/hardhat-chai-matchers/test/matchers/reverted/reverted.ts index 506c8f29d7..14353d864a 100644 --- a/v-next/hardhat-chai-matchers/test/matchers/reverted/reverted.ts +++ b/v-next/hardhat-chai-matchers/test/matchers/reverted/reverted.ts @@ -31,12 +31,6 @@ describe("INTEGRATION: Reverted", { timeout: 60000 }, () => { runTests(); }); - // TODO: when V3 node is ready, add this functionality - // describe("connected to a hardhat node", ()=>{ - // useEnvironmentWithNode("hardhat-project"); - // runTests(); - // }); - function runTests() { // deploy Matchers contract before each test let matchers: MatchersContract; diff --git a/v-next/hardhat-chai-matchers/test/matchers/reverted/revertedWith.ts b/v-next/hardhat-chai-matchers/test/matchers/reverted/revertedWith.ts index da3f12a6e0..404c34d265 100644 --- a/v-next/hardhat-chai-matchers/test/matchers/reverted/revertedWith.ts +++ b/v-next/hardhat-chai-matchers/test/matchers/reverted/revertedWith.ts @@ -29,12 +29,6 @@ describe("INTEGRATION: Reverted with", { timeout: 60000 }, () => { runTests(); }); - // TODO: when V3 node is ready, add this functionality - // describe("connected to a hardhat node", ()=>{ - // useEnvironmentWithNode("hardhat-project"); - // runTests(); - // }); - function runTests() { // deploy Matchers contract before each test let matchers: MatchersContract; diff --git a/v-next/hardhat-chai-matchers/test/matchers/reverted/revertedWithCustomError.ts b/v-next/hardhat-chai-matchers/test/matchers/reverted/revertedWithCustomError.ts index 41cf0f5021..76dfc76f6d 100644 --- a/v-next/hardhat-chai-matchers/test/matchers/reverted/revertedWithCustomError.ts +++ b/v-next/hardhat-chai-matchers/test/matchers/reverted/revertedWithCustomError.ts @@ -30,12 +30,6 @@ describe("INTEGRATION: Reverted with custom error", { timeout: 60000 }, () => { runTests(); }); - // TODO: when V3 node is ready, add this functionality - // describe("connected to a hardhat node", ()=>{ - // useEnvironmentWithNode("hardhat-project"); - // runTests(); - // }); - function runTests() { // deploy Matchers contract before each test let matchers: MatchersContract; diff --git a/v-next/hardhat-chai-matchers/test/matchers/reverted/revertedWithPanic.ts b/v-next/hardhat-chai-matchers/test/matchers/reverted/revertedWithPanic.ts index 05c805a419..4745bfb7f5 100644 --- a/v-next/hardhat-chai-matchers/test/matchers/reverted/revertedWithPanic.ts +++ b/v-next/hardhat-chai-matchers/test/matchers/reverted/revertedWithPanic.ts @@ -30,12 +30,6 @@ describe("INTEGRATION: Reverted with panic", { timeout: 60000 }, () => { runTests(); }); - // TODO: when V3 node is ready, add this functionality - // describe("connected to a hardhat node", ()=>{ - // useEnvironmentWithNode("hardhat-project"); - // runTests(); - // }); - function runTests() { // deploy Matchers contract before each test let matchers: MatchersContract; diff --git a/v-next/hardhat-chai-matchers/test/matchers/reverted/revertedWithoutReason.ts b/v-next/hardhat-chai-matchers/test/matchers/reverted/revertedWithoutReason.ts index ac5e3f0b66..4168ebf2ea 100644 --- a/v-next/hardhat-chai-matchers/test/matchers/reverted/revertedWithoutReason.ts +++ b/v-next/hardhat-chai-matchers/test/matchers/reverted/revertedWithoutReason.ts @@ -23,12 +23,6 @@ describe("INTEGRATION: Reverted without reason", { timeout: 60000 }, () => { runTests(); }); - // TODO: when V3 node is ready, add this functionality - // describe("connected to a hardhat node", ()=>{ - // useEnvironmentWithNode("hardhat-project"); - // runTests(); - // }); - function runTests() { // deploy Matchers contract before each test let matchers: MatchersContract; From 76e8820dd6dad1579d390be59548f795ea9f0dfa Mon Sep 17 00:00:00 2001 From: ChrisD <18092467+ChristopherDedominici@users.noreply.github.com> Date: Tue, 17 Dec 2024 14:57:53 +0100 Subject: [PATCH 57/61] move hardhat-vnext-ethers as peerDep --- v-next/hardhat-chai-matchers/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/v-next/hardhat-chai-matchers/package.json b/v-next/hardhat-chai-matchers/package.json index 0fd869e76a..8656e020d6 100644 --- a/v-next/hardhat-chai-matchers/package.json +++ b/v-next/hardhat-chai-matchers/package.json @@ -72,7 +72,6 @@ }, "dependencies": { "@ignored/hardhat-vnext-errors": "workspace:^3.0.0-next.15", - "@ignored/hardhat-vnext-ethers": "workspace:^3.0.0-next.12", "@ignored/hardhat-vnext-utils": "workspace:^3.0.0-next.15", "@types/chai-as-promised": "^8.0.1", "chai-as-promised": "^8.0.0", @@ -80,6 +79,7 @@ }, "peerDependencies": { "@ignored/hardhat-vnext": "workspace:^3.0.0-next.16", + "@ignored/hardhat-vnext-ethers": "workspace:^3.0.0-next.12", "chai": "^5.1.2", "ethers": "^6.13.2" } From af84d41471f2e84be9f6a565eb5a22bce4790013 Mon Sep 17 00:00:00 2001 From: ChrisD <18092467+ChristopherDedominici@users.noreply.github.com> Date: Tue, 17 Dec 2024 15:04:25 +0100 Subject: [PATCH 58/61] use flag to initialize chai-matchers only one --- .../src/internal/hook-handlers/network.ts | 7 ++++++- .../test/multi-network-connections.ts | 6 ++---- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/v-next/hardhat-chai-matchers/src/internal/hook-handlers/network.ts b/v-next/hardhat-chai-matchers/src/internal/hook-handlers/network.ts index 14d528c730..ba9bb2d835 100644 --- a/v-next/hardhat-chai-matchers/src/internal/hook-handlers/network.ts +++ b/v-next/hardhat-chai-matchers/src/internal/hook-handlers/network.ts @@ -10,12 +10,17 @@ import type { import { addChaiMatchers } from "../add-chai-matchers.js"; export default async (): Promise> => { + let isInitialized = false; + const handlers: Partial = { async newConnection( context: HookContext, next: (context: HookContext) => Promise>, ) { - addChaiMatchers(); + if (!isInitialized) { + addChaiMatchers(); + isInitialized = true; + } return next(context); }, diff --git a/v-next/hardhat-chai-matchers/test/multi-network-connections.ts b/v-next/hardhat-chai-matchers/test/multi-network-connections.ts index 90c899d7f7..c9f4060ccd 100644 --- a/v-next/hardhat-chai-matchers/test/multi-network-connections.ts +++ b/v-next/hardhat-chai-matchers/test/multi-network-connections.ts @@ -11,9 +11,7 @@ import { createHardhatRuntimeEnvironment } from "@ignored/hardhat-vnext/hre"; import hardhatEthersPlugin from "@ignored/hardhat-vnext-ethers"; import { expect } from "chai"; -import { addChaiMatchers } from "../src/internal/add-chai-matchers.js"; - -addChaiMatchers(); +import hardhatChaiMatchersPlugin from "../src/index.js"; describe("handle multiple connections", () => { let sender: HardhatEthersSigner; @@ -30,7 +28,7 @@ describe("handle multiple connections", () => { before(async () => { const hre = await createHardhatRuntimeEnvironment({ - plugins: [hardhatEthersPlugin], + plugins: [hardhatChaiMatchersPlugin, hardhatEthersPlugin], networks: { test1: { type: "edr", From ea7cb20823af7fd7a1cffcec6252605ddde1d9f9 Mon Sep 17 00:00:00 2001 From: ChrisD <18092467+ChristopherDedominici@users.noreply.github.com> Date: Wed, 18 Dec 2024 11:36:55 +0100 Subject: [PATCH 59/61] make flag to track initialization global --- .../src/internal/hook-handlers/network.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/v-next/hardhat-chai-matchers/src/internal/hook-handlers/network.ts b/v-next/hardhat-chai-matchers/src/internal/hook-handlers/network.ts index ba9bb2d835..8341c9c83d 100644 --- a/v-next/hardhat-chai-matchers/src/internal/hook-handlers/network.ts +++ b/v-next/hardhat-chai-matchers/src/internal/hook-handlers/network.ts @@ -9,9 +9,9 @@ import type { import { addChaiMatchers } from "../add-chai-matchers.js"; -export default async (): Promise> => { - let isInitialized = false; +let isInitialized = false; +export default async (): Promise> => { const handlers: Partial = { async newConnection( context: HookContext, From 237ddc4ba08311b968565a391449687d34496eac Mon Sep 17 00:00:00 2001 From: ChrisD <18092467+ChristopherDedominici@users.noreply.github.com> Date: Wed, 18 Dec 2024 11:40:22 +0100 Subject: [PATCH 60/61] allow top level await --- .../test/helpers/pretest.ts | 39 ++++++++++--------- 1 file changed, 20 insertions(+), 19 deletions(-) diff --git a/v-next/hardhat-chai-matchers/test/helpers/pretest.ts b/v-next/hardhat-chai-matchers/test/helpers/pretest.ts index dd301d30c6..f5fba4d019 100644 --- a/v-next/hardhat-chai-matchers/test/helpers/pretest.ts +++ b/v-next/hardhat-chai-matchers/test/helpers/pretest.ts @@ -1,28 +1,29 @@ +/* eslint-disable no-restricted-syntax -- top-level await should be allowed in ESM */ + import path, { dirname } from "node:path"; import { fileURLToPath } from "node:url"; import { createHardhatRuntimeEnvironment } from "@ignored/hardhat-vnext/hre"; // Compile the contracts before executing the tests to bypass the compilation step during testing. -(async () => { - const currentDir = dirname(fileURLToPath(import.meta.url)); - const fixtureProjectDir = path.join( - currentDir, - "..", - "fixture-projects", - "hardhat-project", - ); +const currentDir = dirname(fileURLToPath(import.meta.url)); + +const fixtureProjectDir = path.join( + currentDir, + "..", + "fixture-projects", + "hardhat-project", +); - const hre = await createHardhatRuntimeEnvironment({ - solidity: { - version: "0.8.24", // Same version as the one in the contracts in the "hardhat-project" fixture project - }, - paths: { - artifacts: path.join(fixtureProjectDir, "artifacts"), - sources: path.join(fixtureProjectDir, "contracts"), - }, - }); +const hre = await createHardhatRuntimeEnvironment({ + solidity: { + version: "0.8.24", // Same version as the one in the contracts in the "hardhat-project" fixture project + }, + paths: { + artifacts: path.join(fixtureProjectDir, "artifacts"), + sources: path.join(fixtureProjectDir, "contracts"), + }, +}); - await hre.tasks.getTask("compile").run({}); -})(); +await hre.tasks.getTask("compile").run({}); From 393b9e3f5c209377c74aa01bcb900e759734a94d Mon Sep 17 00:00:00 2001 From: ChrisD <18092467+ChristopherDedominici@users.noreply.github.com> Date: Wed, 18 Dec 2024 11:44:02 +0100 Subject: [PATCH 61/61] update pnp-lock file --- pnpm-lock.yaml | 62 ++++++++++++-------------------------------------- 1 file changed, 15 insertions(+), 47 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8865bfd26a..de85be8c9a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1517,7 +1517,7 @@ importers: version: 5.3.0 debug: specifier: ^4.1.1 - version: 4.3.7 + version: 4.3.7(supports-color@8.1.1) enquirer: specifier: ^2.3.0 version: 2.4.1 @@ -7433,7 +7433,7 @@ snapshots: '@eslint/eslintrc@2.1.4': dependencies: ajv: 6.12.6 - debug: 4.3.7 + debug: 4.3.7(supports-color@8.1.1) espree: 9.6.1 globals: 13.24.0 ignore: 5.3.2 @@ -7734,7 +7734,7 @@ snapshots: '@humanwhocodes/config-array@0.11.14': dependencies: '@humanwhocodes/object-schema': 2.0.3 - debug: 4.3.7 + debug: 4.3.7(supports-color@8.1.1) minimatch: 3.1.2 transitivePeerDependencies: - supports-color @@ -8287,11 +8287,7 @@ snapshots: '@types/bn.js@4.11.6': dependencies: -<<<<<<< HEAD - '@types/node': 22.8.5 -======= '@types/node': 22.10.0 ->>>>>>> 26abb7e314e52b78e80ed15b95cf6470edd9a7a8 '@types/bn.js@5.1.6': dependencies: @@ -8311,11 +8307,7 @@ snapshots: '@types/concat-stream@1.6.1': dependencies: -<<<<<<< HEAD - '@types/node': 22.8.5 -======= '@types/node': 22.10.0 ->>>>>>> 26abb7e314e52b78e80ed15b95cf6470edd9a7a8 '@types/debug@4.1.12': dependencies: @@ -8329,11 +8321,7 @@ snapshots: '@types/form-data@0.0.33': dependencies: -<<<<<<< HEAD - '@types/node': 22.8.5 -======= '@types/node': 22.10.0 ->>>>>>> 26abb7e314e52b78e80ed15b95cf6470edd9a7a8 '@types/fs-extra@5.1.0': dependencies: @@ -8406,11 +8394,7 @@ snapshots: '@types/pbkdf2@3.1.2': dependencies: -<<<<<<< HEAD - '@types/node': 22.8.5 -======= '@types/node': 22.10.0 ->>>>>>> 26abb7e314e52b78e80ed15b95cf6470edd9a7a8 '@types/prettier@2.7.3': {} @@ -8418,22 +8402,14 @@ snapshots: '@types/readable-stream@2.3.15': dependencies: -<<<<<<< HEAD - '@types/node': 22.8.5 -======= '@types/node': 22.10.0 ->>>>>>> 26abb7e314e52b78e80ed15b95cf6470edd9a7a8 safe-buffer: 5.1.2 '@types/resolve@1.20.6': {} '@types/secp256k1@4.0.6': dependencies: -<<<<<<< HEAD - '@types/node': 22.8.5 -======= '@types/node': 22.10.0 ->>>>>>> 26abb7e314e52b78e80ed15b95cf6470edd9a7a8 '@types/semver@6.2.7': {} @@ -8464,11 +8440,7 @@ snapshots: '@types/ws@8.5.3': dependencies: -<<<<<<< HEAD - '@types/node': 22.8.5 -======= '@types/node': 22.10.0 ->>>>>>> 26abb7e314e52b78e80ed15b95cf6470edd9a7a8 '@typescript-eslint/eslint-plugin@5.61.0(@typescript-eslint/parser@5.61.0(eslint@8.57.0)(typescript@5.0.4))(eslint@8.57.0)(typescript@5.0.4)': dependencies: @@ -8515,7 +8487,7 @@ snapshots: '@typescript-eslint/type-utils': 7.7.1(eslint@8.57.0)(typescript@5.5.4) '@typescript-eslint/utils': 7.7.1(eslint@8.57.0)(typescript@5.5.4) '@typescript-eslint/visitor-keys': 7.7.1 - debug: 4.3.7 + debug: 4.3.7(supports-color@8.1.1) eslint: 8.57.0 graphemer: 1.4.0 ignore: 5.3.2 @@ -8545,7 +8517,7 @@ snapshots: '@typescript-eslint/types': 7.18.0 '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.5.4) '@typescript-eslint/visitor-keys': 7.18.0 - debug: 4.3.7 + debug: 4.3.7(supports-color@8.1.1) eslint: 8.57.0 optionalDependencies: typescript: 5.5.4 @@ -8558,7 +8530,7 @@ snapshots: '@typescript-eslint/types': 7.7.1 '@typescript-eslint/typescript-estree': 7.7.1(typescript@5.5.4) '@typescript-eslint/visitor-keys': 7.7.1 - debug: 4.3.7 + debug: 4.3.7(supports-color@8.1.1) eslint: 8.57.0 optionalDependencies: typescript: 5.5.4 @@ -8601,7 +8573,7 @@ snapshots: dependencies: '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.5.4) '@typescript-eslint/utils': 7.18.0(eslint@8.57.0)(typescript@5.5.4) - debug: 4.3.7 + debug: 4.3.7(supports-color@8.1.1) eslint: 8.57.0 ts-api-utils: 1.3.0(typescript@5.5.4) optionalDependencies: @@ -8613,7 +8585,7 @@ snapshots: dependencies: '@typescript-eslint/typescript-estree': 7.7.1(typescript@5.5.4) '@typescript-eslint/utils': 7.7.1(eslint@8.57.0)(typescript@5.5.4) - debug: 4.3.7 + debug: 4.3.7(supports-color@8.1.1) eslint: 8.57.0 ts-api-utils: 1.3.0(typescript@5.5.4) optionalDependencies: @@ -8661,7 +8633,7 @@ snapshots: dependencies: '@typescript-eslint/types': 7.18.0 '@typescript-eslint/visitor-keys': 7.18.0 - debug: 4.3.7 + debug: 4.3.7(supports-color@8.1.1) globby: 11.1.0 is-glob: 4.0.3 minimatch: 9.0.5 @@ -8676,7 +8648,7 @@ snapshots: dependencies: '@typescript-eslint/types': 7.7.1 '@typescript-eslint/visitor-keys': 7.7.1 - debug: 4.3.7 + debug: 4.3.7(supports-color@8.1.1) globby: 11.1.0 is-glob: 4.0.3 minimatch: 9.0.5 @@ -8807,7 +8779,7 @@ snapshots: agent-base@6.0.2: dependencies: - debug: 4.3.7 + debug: 4.3.7(supports-color@8.1.1) transitivePeerDependencies: - supports-color @@ -9379,10 +9351,6 @@ snapshots: dependencies: ms: 2.1.3 - debug@4.3.7: - dependencies: - ms: 2.1.3 - debug@4.3.7(supports-color@8.1.1): dependencies: ms: 2.1.3 @@ -9684,7 +9652,7 @@ snapshots: eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint-plugin-import@2.29.1)(eslint@8.57.0): dependencies: '@nolyfill/is-core-module': 1.0.39 - debug: 4.3.7 + debug: 4.3.7(supports-color@8.1.1) enhanced-resolve: 5.17.1 eslint: 8.57.0 eslint-module-utils: 2.12.0(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.0) @@ -9850,7 +9818,7 @@ snapshots: ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.3 - debug: 4.3.7 + debug: 4.3.7(supports-color@8.1.1) doctrine: 3.0.0 escape-string-regexp: 4.0.0 eslint-scope: 7.2.2 @@ -10135,7 +10103,7 @@ snapshots: follow-redirects@1.15.9(debug@4.3.7): optionalDependencies: - debug: 4.3.7 + debug: 4.3.7(supports-color@8.1.1) for-each@0.3.3: dependencies: @@ -10451,7 +10419,7 @@ snapshots: https-proxy-agent@5.0.1: dependencies: agent-base: 6.0.2 - debug: 4.3.7 + debug: 4.3.7(supports-color@8.1.1) transitivePeerDependencies: - supports-color